doMPI 和集群

doMPI and Clusters

我第一次体验使用 R 和集群。在 Google 上搜索,我发现了软件包 "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。我的代码会怎样?

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

关于您的问题:

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

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

  3. mpirun -n 选项指定它应该启动的 workers/processes 个数。如果你想产生工人,你应该使用 -n 1 以便 mpirun 只启动主人,并使用 startMPIcluster count 参数来控制产生工人的数量。

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