我需要在15台机器(每个4个核心)上运行数千个*模型,所有Windows都需要。我开始学习parallel
,snow
和snowfall
个软件包并阅读了一些介绍,但他们主要关注的是主人的设置。 关于如何在Windows上设置工作者(从属)节点的信息很少。这些信息通常是矛盾的: some say that SOCK cluster is practically the easiest way to go,其他人声称SOCK cluster setup is complicated on Windows (sshd setup) and the best way to go is MPI。
那么,在Windows上安装从节点的最简单方法是什么? MPI,PVM,SOCK还是NWS?我的,可能是天真的想法(优先列出):
只有1是100%需要,2-4是"会很好"。请求太天真了吗?
我很抱歉,但我无法从可用的文档和教程中找到答案。如果你指出我正确的来源,我将不胜感激。
<小时/> *请注意,数以千计的模型中的每一个都需要至少7分钟,因此不会成为一个很大的沟通开销。
答案 0 :(得分:2)
令人遗憾的是,所有这些API(如平行/降雪/降雪)如何使用都很复杂,很多文档但不是你需要的......我找到了一个非常简单的API,直接进入我勾画的想法!!它是 redis和doRedis
R package (作为recommended here)。最后有一个very simple tutorial!刚刚修改了一下,得到了这个:
工人只需要R ,doRedis包和这个脚本:
require(doRedis)
redisWorker('jobs', '10.0.0.7') # IP of the server
主服务器需要运行redis server(已安装the experimental windows binaries for 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并行后端可以容忍工作进程之间的错误,并自动重新提交失败的任务。
我不知道使用SOCKS / MPI / PVM / NWS 的平行/降雪/降雪有多复杂,如果有可能的话,但我觉得非常复杂。 ..
使用redis的唯一缺点我发现:
"object '.doRedisGlobals' not found"
)中存在一个错误,但尚无解决方案和I am not able to install the old working doRedis 1.0.5 package into R 3.0.1。