- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用在 R 中开发的代码使用 DEoptim(旨在最小化目标函数的函数)校准具有 8 个参数的水文模型。 DEoptim 代码使用“parallel”包来检测使用“DetectCores()”可用的核心数。在我的 PC 上,我有 4 个内核,每个内核有 2 个线程,因此它检测到 8 个内核,然后将水文模型发送到具有不同参数值的内核,并将结果返回到中心。它会执行数百或数千次并迭代参数以尝试找到最佳设置。因此可用的内核越多,它的运行速度就越快。
我在大学里,可以访问 Linux 计算集群。他们的服务器最多有 12 个内核(即不是线程),如果我使用它,它的工作速度将比我的 PC 快两到三倍。伟大的。然而,理想情况下,我会将代码分布在其他服务器上,这样我就可以访问更多核心,并将所有信息发回主服务器。
因此,我的问题是如何在我的代码中包含 Rmpi 以有效地增加可用内核。您可能会说,我对使用集群还很陌生。
非常感谢,安东尼
最佳答案
如果要执行DEoptim
在 Linux 集群的多个节点上,我相信你需要使用 foreach
通过指定 parallelType=2
在control
争论。您可以使用 doMPI
并行后端或 doParallel
带有 MPI 集群对象的后端。例如:
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,worker 将全部在本地机器上生成。
关于linux - 如何在 Linux 集群上的 R 中使用 Rmpi 来增加 DEoptim 可用的内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31452018/
我是一名优秀的程序员,十分优秀!