首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在linux Cluster上使用Rmpi来增加DEoptim可用的内核?

如何在linux Cluster上使用Rmpi来增加DEoptim可用的内核?
EN

Stack Overflow用户
提问于 2015-07-16 18:45:09
回答 1查看 818关注 0票数 3

我正在使用R开发的代码,使用DEoptim (一个旨在最小化目标函数的函数)校准一个具有8个参数的水文模型。DEoptim代码使用'parallel‘包通过'DetectCores()’检测可用的核心数量。在我的PC上,我有4个内核,每个内核有2个线程,所以它检测8个内核,然后将水文模型发送到具有不同参数值的内核,结果返回到中心。它这样做了成百上千次,并迭代参数,试图找到最优的集合。因此,可用的内核越多,它的工作速度就越快。

我在一所大学,可以访问Linux计算集群。他们有多达12个核心(即非线程)的服务器,如果我使用这个,它的工作速度将比我的PC快2-3倍。太棒了。然而,理想情况下,我会将代码分散到其他服务器上,这样我就可以访问更多的内核,并将所有信息发回主服务器。

因此,我的问题是如何在代码中包含Rmpi以有效地增加可用的内核。正如您可能知道的,我对使用集群非常陌生。

非常感谢,安东尼

EN

回答 1

Stack Overflow用户

发布于 2015-07-17 04:35:47

如果您想在一个Linux集群的多个节点上执行DEoptim,我相信您需要通过在foreach参数中指定parallelType=2来使用control。您可以将doMPI并行后端或doParallel后端与MPI集群对象一起使用。例如:

代码语言:javascript
运行
复制
library(doParallel)
library(Rmpi)
cl <- makeCluster(mpi.universe.size()-1, type='MPI')
registerDoParallel(cl)

# and eventually...
DEoptim(fn=Genrose, lower=rep(-25, n), upper=rep(25, n),
  control=list(NP=10*n, itermax=maxIt, parallelType=2))

除了安装其他包之外,还需要安装snow包。此外,请确保使用-np 1选项通过mpirun执行脚本。如果你不使用mpirun,工人都会在本地机器上产生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31452018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档