2

我第一次体验使用 R 和集群。在谷歌上搜索,我发现了包“doMPI”。这个包允许我自动创建流程。但是,我对功能有点困惑。

1 - startMPIcluster 和 registerDOMPI 有什么区别?

2 - 关于 startMPIcluster 的争论是什么?

3 - 当我使用命令mpirun -H n1,n2,n3 -n 1 R --slave -f sincMPI.R时,它是什么意思-n 1

4 - 最后,假设我有 4 个集群,每个集群有 60 个 CPU。我的代码会怎样?

4

1 回答 1

3

你读过doMPI 小插图吗?我试图在其中回答所有这些问题。我还建议您下载 doMPI 源代码分发并查看其中包含的示例脚本。

至于你的问题:

  1. startMPIcluster用于创建表示一组用于并行计算的进程的集群对象;registerDoMPI用于向 foreach 注册集群对象,因此它将用于执行并行 foreach 循环。这两个功能都必须使用。

  2. 如果您使用该-n 1选项通过 mpirun 执行您的 R 脚本,mpirun 将只启动一个进程来执行您的 R 脚本(我称之为主进程),并且第一个参数startMPIcluster指定 master 应该启动的工人数量执行由 foreach 循环生成的任务。如果使用 mpirun 启动多个进程,则根本不需要指定count值。我建议使用 mpirun 启动所有工作程序(-n 3在您的示例中使用 ,而不是指定值的count值。

  3. mpirun-n选项指定它应该启动的工人/进程的数量。如果你想生成worker,你应该使用-n 1mpirun 只启动master,并使用startMPIcluster count参数来控制生成worker 的数量。

我真的不明白你的最后一个问题,但我认为小插图和示例应该可以帮助你更好地理解所有这些概念。

于 2016-11-04T22:29:23.667 回答