[英]How to setup workers for parallel processing in R using snowfall and multiple Windows nodes?
我已經成功地使用降雪在具有 16 個處理器的單個服務器上設置了一個集群。
require(snowfall)
if (sfIsRunning() == TRUE) sfStop()
number.of.cpus <- 15
sfInit(parallel = TRUE, cpus = number.of.cpus)
stopifnot( sfCpus() == number.of.cpus )
stopifnot( sfParallel() == TRUE )
# Print the hostname for each cluster member
sayhello <- function()
{
info <- Sys.info()[c("nodename", "machine")]
paste("Hello from", info[1], "with CPU type", info[2])
}
names <- sfClusterCall(sayhello)
print(unlist(names))
我在 Windows Server 2016 上設置了 HPC 集群。最初嘗試使用MPICH2 ,但放棄了 2013 年適用於 Windows 的最新穩定版本 1.4.1,從那時起就不再支持。
所以決定使用 MS MPI 並使用默認支持 MS MPI 的pbdMPI
包。 pbdMPI
實現了SPMD范式,而Rmpi
使用管理器/工作器並行性。 SPMD 似乎更容易管理和掌握(至少對我而言)。
分步指南:
mpiexec.exe -n %1 -machinefile "C:\\MachineFileDir\\hosts.txt" -pwd SharedUserPassword –wdir "\\HeadMachine\\SharedDir" Rscript hello.R
上述步驟 11 中使用的文件。
你好.R :
library(pbdMPI, quiet = TRUE)
init()
cat("Hello World from
process",comm.rank(),"of",comm.size(),"!\n")
finalize()
主機.txt
hosts.txt 文件,稱為 MPI 機器文件,是一個文本文件,其中的行包含將執行 R 的計算機的網絡名稱。 在每一行中,計算機名稱后用空格分隔(對於 MS MPI),要執行的 MPI 進程數。 通常它等於每個節點中的處理器數量。
hosts.txt示例,其中三個節點各有 2 個處理器:
192.168.0.1 2
192.168.0.2 2
192.168.0.3 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.