以下(簡化)腳本在unix羣集(4個虛擬內核)的主節點上正常工作。R foreach:從單機到羣集
library(foreach)
library(doParallel)
nc = detectCores()
cl = makeCluster(nc)
registerDoParallel(cl)
foreach(i = 1:nrow(data_frame_1), .packages = c("package_1","package_2"), .export = c("variable_1","variable_2")) %dopar% {
row_temp = data_frame_1[i,]
function(argument_1 = row_temp, argument_2 = variable_1, argument_3 = variable_2)
}
stopCluster(cl)
我想利用16個節點的集羣(總共16 * 4
虛擬核)英寸
我想我所需要做的就是更改由makeCluster
指定的並行後端。但我應該怎麼做?文件不是很清楚。
在此基礎上很舊的(2013)發佈http://www.r-bloggers.com/the-wonders-of-foreach/看來,我應該改變的默認類型(sock
或MPI
- 這單會在UNIX上工作?)
編輯
從這vignette通過的foreach作者:
默認情況下,doParallel使用在類Unix 系統和諾孚多核功能在Windows上的功能。請注意,多核心 功能只能在單臺計算機上運行任務,而不是在計算機上運行任何羣集。但是,您可以使用下雪功能在羣集上執行 ,使用類Unix操作系統,Windows或甚至組合。
you can use the snow functionality
是什麼意思?我應該怎麼做?
我沒有使用for循環... – Antoine
我建議下載Revolution R open,它改進了統計庫和多核支持。 [檢查我的答案關於這個職位RRO的更多信息](http://stackoverflow.com/questions/31900708/how-can-i-get-r-to-use-more-cpu-usage/33996564#33996564) 。這與你的問題沒有直接關係,但它會加快任何可以使用多核的數學計算和封裝。 – Bas