R并行 – 连接到远程核心

Windows 7上使用R 2.14.1

使用R中的并行程序包,我正在尝试利用我的网络上可用的本地计算机之外的核心,我连接的所有远程主机都是相同的Windows计算机.

命令的基本形式就是建立连接.

library(parallel)
#assume 8 cores per machine
cl<-makePSOCKcluster(c(rep("localhost", 8), rep("otherhost", 8)))

当然,尝试调试这些东西可能相当棘手,但这就是我所处的位置.

如果我指定manual = TRUE标志如下

cl<-makePSOCKcluster(c(rep("localhost", 8), rep("otherhost", 8)), manual=TRUE)

连接到远程主机并运行并行进程没有问题.计算机与我正在使用的计算机具有相同的设置.但是,如果未设置此手动标志,则连接命令将挂起.

这似乎向我表明,由于手动标志绕过ssh以建立与主机的连接,因此当手动= FALSE时,ssh是问题.

目前无法保证远程计算机上有ssh.问题是,鉴于我拥有远程主机的所有相关Windows登录信息,并且我无法更改远程计算机上的设置,我将如何连接到远程计算机上的核心,并且在R中并行指定包,而不指定手动=真正?

或者,如果必须安装ssh才能实现此目的,让我们假设所有计算机都有ssh.如何在不绕过ssh的情况下连接到远程计算机上的核心?

如果您需要更多信息,请告诉我,我很感激时间.

更新1

14年8月26日

感谢Steve Weston的见解.我将提供一个更新,其中包含我使用的确切工具和设置,以便在系统启动并运行时使其正常工作.

随意发表评论或发布,如果你有什么要补充,以什么可能是去通过makePSOCKcluster,其中,人工标志设置为FALSE远程连接到Windows机器从Windows机器的最佳路线.

最佳答案
在使用manual = FALSE创建PSOCK群集时,在远程计算机上启动worker的唯一方法是使用“ssh”,“rsh”或命令行兼容,例如PuTTY中的“plink”.原因是makePSOCKcluster使用“系统”函数启动远程工作程序来执行以下形式的命令:

ssh -l user otherhost '/usr/lib/R/bin/Rscript' -e 'parallel:::.slaveRSOCK()' MASTER=myhost PORT=10187 OUT=/dev/null TIMEOUT=2592000 METHODS=TRUE XDR=TRUE

您可以通过查看并行程序包中snowSOCK.R文件中newPSOCKnode函数的源代码来确认这一点.

为此,ssh-compatible命令必须在本地计算机上可用,并且必须在每台远程计算机上运行相应的ssh守护程序,否则makePSOCKcluster将挂起.我发现在Windows上安装一个好的,工作正常的ssh守护进程是困难的部分.

不幸的是,manual = TRUE通常是在多台Windows机器上创建PSOCK群集的最简单方法.

转载注明原文:R并行 – 连接到远程核心 - 代码日志