doMPI和集群

时间:2016-11-04 16:36:56

标签: r parallel-processing mpi openmpi dompi

我第一次使用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个CPUS。我的代码怎么样?

1 个答案:

答案 0 :(得分:3)

您是否阅读过doMPI vignette?我试着回答所有这些问题。我还建议您下载doMPI源代码分发并查看其中包含的示例脚本。

关于你的问题:

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

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

  3. mpirun count选项指定应该启动的工作人员/进程数。如果要生成worker,则应使用-n,以便mpirun仅启动master,并使用-n 1 startMPIcluster参数来控制要生成的worker数。

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