我的Windows HPC Server在后端运行了一些节点。我想使用后端的多个节点运行Parallel R.我认为Parallel R可能在Windows上使用SNOW,但不太确定。我的问题是,我是否还需要在后端节点上安装R? 假设我想使用两个节点,每个节点32个核心:
cl <- makeCluster(c(rep("COMP01",32),rep("COMP02",32)),type="SOCK")
现在,它只是挂起。
我还需要做什么?后端节点是否需要运行某种sshd以便能够相互通信?
答案 0 :(得分:9)
在Windows群集上设置snow
相当困难。每台机器都需要安装R和snow
,但这很容易。要启动SOCK集群,您需要在每台工作计算机上运行一个sshd守护程序,但是您仍然可能遇到麻烦,所以除非您擅长调试和Windows系统管理,否则我不会推荐它。
我认为Windows群集的最佳选择是使用MPI。我自己在Windows上没有任何MPI经验,但我听说有人在Windows上使用MPICH和DeinoMPI MPI发行版取得了成功。在群集上安装MPI后,还需要在每台工作计算机上安装源代码中的Rmpi
软件包。然后,您将使用makeMPIcluster
函数创建集群对象。这是一项很多工作,但我认为由于Windows上的ssh / sshd问题,它最终可能比尝试使用SOCK集群更有效。
如果您迫切希望在Windows群集上运行一次或两次并行作业,则可以尝试使用手动模式。它允许您创建不带ssh的SOCK集群:
workers <- c(rep("COMP01",32), rep("COMP02",32))
cl <- makeSOCKluster(workers, manual=TRUE)
makeSOCKcluster
函数将提示您启动每个工作程序,显示每个工作程序使用的命令。您必须在指定的计算机上手动打开命令窗口并执行指定的命令。它可能非常繁琐,特别是对于许多工人来说,但至少它并不复杂或棘手。与outfile=''
选项结合使用时,它也非常有用。