R并行 - 连接到远程核心

DMT*_*DMT 5 parallel-processing 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)))
Run Code Online (Sandbox Code Playgroud)

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

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

cl<-makePSOCKcluster(c(rep("localhost", 8), rep("otherhost", 8)), manual=TRUE)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

更新1

14年8月26日

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

如果您还有其他任何可以添加的内容,可以通过makePSOCKcluster从Windows机器远程连接到Windows机器的最佳路径,其中手动标志设置为FALSE,请随意发表评论或发布.

Ste*_*ton 3

使用创建 PSOCK 集群时manual=FALSE,在远程计算机上启动工作程序的唯一方法是使用“ssh”、“rsh”或与命令行兼容的内容,例如 PuTTY 中的“plink”。原因是 makePSOCKcluster 使用“system”函数启动远程工作人员来执行以下形式的命令:

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
Run Code Online (Sandbox Code Playgroud)

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

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

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