2

我需要在所有 Windows 的 15 台机器(每台 4 核)上运行数千个模型。我开始学习parallel,打包snowsnowfall阅读了一堆介绍,但它们主要集中在大师的设置上。关于如何在 Windows 上设置工作(从)节点的信息很少。信息往往是矛盾的: 有人说 SOCK 集群实际上是最简单的方法,其他人声称SOCK 集群设置在 Windows 上很复杂(sshd 设置),最好的方法是 MPI

那么,在 Windows 上安装从节点最简单的方法是什么?MPI、PVM、SOCK 还是 NWS?我的,可能是幼稚的想法是(按优先级列出):

  1. 使用从节点上的所有 4 个内核(必需)。
  2. 理想情况下,我只需要带有一些包的 R 和一个从属 R 脚本或 R 函数,它们会在某个端口上侦听并等待来自主控的任务。
  3. 理想情况下,可以从集群中动态添加/删除节点。
  4. 理想情况下,从服务器将连接到主服务器——所以我不必在主服务器的配置中列出所有从服务器 IP。

只有 1 是 100% 需要的,2-4 是“会好的”。要求是不是太天真了?

很抱歉,我无法从可用的文档和教程中弄清楚这一点。如果您指出正确的来源,我将不胜感激。


* 请注意,这数千个模型中的每一个至少需要 7 分钟,因此不会有很大的通信开销。

4

1 回答 1

2

很遗憾,所有这些 API(如并行/降雪/降雪​​)使用起来很复杂,有很多文档,但不是您需要的……我找到了一个非常简单的 API,可以直接实现我草拟的想法!!它是redis 和doRedisR 包这里推荐)。终于有一个非常简单的教程了!刚刚修改了一下,得到了这个:

工人只需要 R, doRedis 包和这个脚本:

require(doRedis)    
redisWorker('jobs', '10.0.0.7') # IP of the server

主人需要运行redis 服务器(安装了用于 Windows 的实验性 windows 二进制文件),并且这个 R 代码:

require(doRedis)
registerDoRedis('jobs')
foreach(j=1:10,.combine=sum,.multicombine=TRUE) %dopar%
    ... # whatever you need to run
removeQueue('jobs')

添加/删除工作人员是完全动态的,无需在主服务器上指定 IP,自动“负载平衡”,简单且无需大量文档!该解决方案满足所有要求,甚至更多 - 如中所述?registerDoRedis

doRedis 并行后端容忍工作进程之间的故障并自动重新提交失败的任务。

我不知道如果可能的话,使用 parallel/snow/snowfall 和 SOCKS/MPI/PVM/NWS会有多复杂,但我想非常复杂......

我发现使用 redis的唯一缺点:

于 2014-03-24T16:44:51.650 回答