一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - R語言 - R語言常用兩種并行方法之snowfall詳解

R語言常用兩種并行方法之snowfall詳解

2022-01-20 15:42Kanny廣小隸 R語言

這篇文章主要為大家介紹了R語言常用兩種并行方法之snowfall詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

上一篇博客(R中兩種常用并行方法之parallel)中已經介紹了R中常見的一種并行包:parallel,其有著簡單便捷等優勢,其實缺點也是非常明顯,就是很不穩定。很多時候我們將大量的計算任務掛到服務器上進行運行時,更看重的是其穩定性。

這時就要介紹R中的另一個并行利器——snowfall,這也是在平時做模擬時用的最多的一種方法。

針對上篇中的簡單例子

首先是一個最簡單的并行的例子,這個例子不需要載入任何依賴庫、函數、對象等。相對也比較簡單:

?
1
2
3
4
5
6
7
8
9
10
library(snowfall)  # 載入snowfall包
 
# 并行初始化
sfInit(parallel = TRUE, cpus = detectCores() - 1)
 
# 進行lapply的并行操作
sfLapply(1:3, function(x) c(x, x ^ 2, x ^ 3))
 
# 結束并行,返還內存等資源
sfStop()

語法基本也比較好理解,代碼中的注釋也有進行說明。sfLapply()的操作是與lapply()相對應的。類似地,還有sfSapply()sfApply()等函數,其用法與apply組中的函數一致。

snowfall進階

在實際操作時,我們進行的函數往往沒有這么簡單,往往還需要依賴一些其它的函數、變量、R包等,這時就不能用上述的方法簡單的進行操作了。

下面給出一個具體實際的操作案例,來展示如何載入函數中依賴的對象等參數。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
n <- 100
m <- 100
 
fun1 <- function(...) {
  ...
}
 
fun2 <- function(...) {
  ...
}
 
sfInit(parallel = TRUE, cpus = 10) #初始化
 
sfLibrary(MASS)     # 載入依賴R包MASS
sfLibrary(ggplot2)  # 載入依賴R包ggplot2
 
sfExport("n", "m")         # 載入依賴的對象
sfExport("fun1", "fun2")   # 載入依賴的函數
 
# 并行計算
result <- sfLapply(1:10000, myfun)
# 注意:myfun是自己定義的函數,里面需要用到包MASS, ggplot2;變量m, n;函數fun1, fun2。
 
sfStop() # 結束并行

其實很簡單,對于并行函數依賴的庫,就是sfLibrary()進行載入,所以來的對象以及函數則使用sfExport()進行載入。

當函數或者對象非常多時,不方便一個一個單獨輸入,這時我們可將所有的對象與函數存到allfun.R文件夾中,然后再采用sfSource('allfun.R')將所有的對象與函數進行導入,方便快捷。

下面我們再來看看如何查看并行進度:

使用sfCat查看并行進度

這部分參考:How to output a message in snowfall?

我們只需在函數中添加sfCat()函數,即可查看并行進度,其示例代碼如下所示:

?
1
2
3
4
5
6
7
8
sfInit(parallel = TRUE, cpus = 2, slaveOutfile = "test.txt")
sfLibrary(snowfall)
 
res <- sfLapply(1:100, function(x) {
  sfCat(paste("Iteration ", x), sep = "\n")
})
 
sfStop()

需要注意的是,在初始化并行中,我們多加了一串命令:slaveOutfile = "test.txt",這個表示其顯示的進度會儲存在test.txt文件中,其余部分基本沒什么變化。

與Rcpp結合會遇到的問題

當我們進行模擬想要再次進行提速時,通常都會使用Rcpp將我們的R代碼改成C++代碼。平時在我們使用的時候,直接使用Rcpp::sourceCpp()就可以直接將我們的C++代碼中的函數進行導入,然想要使用snowfall進行并行時則會遇到問題。

這里使用了兩種方法來進行嘗試:

使用sfSource('myCppfun.cpp')進行導入,會在導入的時候直接報錯。

先使用Rcpp::sourceCpp('myCppfun.cpp')將函數讀入變量空間,然后再使用sfExport("myCppfun")將函數。這樣做在最后運行代碼的時候會報錯。

所以遇到這種問題,只能將我們的C++代碼中的函數打包成一個包,然后直接在使用snowfall進行并行時,調取這個包來運行則不會報錯。

關于如何制作自己的R包,可參考:RStudio制作包含Rcpp代碼的R包。

以上就是R語言常用兩種并行方法之snowfall詳解的詳細內容,更多關于R語言并行snowfall方法的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/weixin_41929524/article/details/81742322

延伸 · 閱讀

精彩推薦
  • R語言R語言讀取xls與xlsx格式文件過程

    R語言讀取xls與xlsx格式文件過程

    這篇文章主要為大家介紹了使用R語言讀取xls與xlsx格式文件的過程步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪...

    Kanny廣小隸11982022-01-20
  • R語言如何用R語言繪制散點圖

    如何用R語言繪制散點圖

    這篇文章主要介紹了如何用R語言繪制散點圖,幫助大家更好的理解和學習使用R語言,感興趣的朋友可以了解下...

    菜鳥教程13002021-12-23
  • R語言R語言中的vector(向量),array(數組)使用總結

    R語言中的vector(向量),array(數組)使用總結

    這篇文章主要介紹了R語言中的vector(向量),array(數組)使用總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要...

    A葉子葉來5772021-11-14
  • R語言R語言實現支持向量機SVM應用案例

    R語言實現支持向量機SVM應用案例

    本文主要介紹了R語言實現支持向量機SVM應用案例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    一天_pika5222022-01-18
  • R語言R語言中qplot()函數的用法說明

    R語言中qplot()函數的用法說明

    這篇文章主要介紹了R語言中qplot()函數的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    Jack_丁明12752022-01-05
  • R語言R語言常量知識點總結

    R語言常量知識點總結

    在本篇文章里小編給大家整理了一篇關于R語言常量知識點總結內容,有興趣的朋友們可以學習分享下。...

    R語言教程網12102021-12-29
  • R語言基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案

    這篇文章主要介紹了基于R/RStudio中安裝包“無法與服務器建立連接”的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    truffle52815052022-01-05
  • R語言R語言gsub替換字符工具的具體使用

    R語言gsub替換字符工具的具體使用

    這篇文章主要介紹了R語言gsub替換字符工具的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    lztttao10372021-12-24
主站蜘蛛池模板: 欧美成人午夜片一一在线观看 | 久久强奷乱码老熟女 | 久久99热成人精品国产 | 成年视频在线播放 | 91国内精品线免费播放 | 四虎影院永久在线 | 国产成人一区二区三区视频免费蜜 | 描写细腻的高h肉 | 深夜福利入口 | 91免费精品国自产拍在线可以看 | 国产精品日韩在线观看 | 男人捅女人动漫 | 暖暖影院日本版 | 视频二区 素人 欧美 日韩 | 天堂网www在线中文天堂 | 亚洲欧美日韩综合一区久久 | 国产欧美va欧美va香蕉在线观 | 无删减影视免费观看 | 国语在线| 欧美在线播放一区二区 | 456亚洲老头视频 | 91麻豆精品国产自产在线观看 | 精品在线视频一区 | 亚洲国产精品日本无码网站 | 国产国语videosex另类 | 天美传媒tm0065 | 午夜精品久久久久久久99蜜桃i | futa百合文| 波多野结衣同性系列698 | 亚洲视频999 | 国产卡一卡二卡四卡无卡 | 亚洲国产在线视频中文字 | 色花堂中文字幕98堂网址 | 女bbbxxx毛片视频 | 国产精品毛片无码 | 亚洲高清中文字幕精品不卡 | 国内精品露脸在线视频播放 | 九九九国产在线 | 欧美一区二区不卡视频 | 九九九国产视频 | 67194最新网址 |