1

首先,虽然我非常精通 R 编程,但我对 *nix 环境 + 并行计算还是很陌生,所以我很感激你对我的态度。我熟悉 R 中的 'parallel'、'foreach' 和不同的 'do_' 包,但仅用于在本地计算机上使用多个内核。

我有一个本地 Linux 计算机集群(在 OpenSUSE 上运行)可供我使用,其中包含多个节点。这些节点都安装了 R。通常,如果我尝试仅在其中一个节点上工作,我将首先使用 PuTTY 连接到头节点(使用用户名 + pwd),然后连接到其中一个(内部?)节点。但是,我希望能够在本地 Windows 工作站上运行 R,并将作业发送到计算机集群。

是否可以将此节点集群设置为我的 Windows 机器的并行后端?如果是这样,最方便的方法是什么?

编辑:

也许我可以缩小问题的范围。在头节点上打开一个 R 进程并运行类似的东西很容易,

library( parallel )
nodes <- c("n01", "n02", "n03") ## the nodes
cl <- makePSOCKcluster( nodes )
setDefaultCluster( cl )

现在,我是否可以通过简单的方式将本地 R 会话与在头节点上运行的 R 会话连接起来?例如,理想情况下,我想在我的计算机上编写以下形式的代码(伪代码):

clusterConnection <- connect("<cluster>")
f <- function() { clusterApply( cl, 1:10, sum( rnorm(1E7) ) ) }
results <- evaluate( f, clusterConnection )

其中“评估”执行一些魔术,将函数“f”发送到头节点,然后对其进行评估,并将结果返回本地计算机并将其存储在“结果”中。

是否有处理这种接口的 R 函数、包或其他方法?

4

1 回答 1

0

我找到了一个非常合适的解决方案。使用 Rserve 在头节点上设置 R 服务器,然后通过套接字连接连接到该节点。CRAN 上的 Rserve 库还提供了一系列实用函数,用于评估服务器上的某些函数并将结果接收回本地计算机。

于 2012-10-20T17:34:53.097 回答