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 源代码分发版并查看其中包含的示例脚本。
关于您的问题:
startMPIcluster
用于创建一个集群对象,表示一组用于并行计算的进程; registerDoMPI
用于向 foreach 注册一个集群对象,因此它将用于执行并行的 foreach 循环。必须使用这两个函数。
如果你通过带有-n 1
选项的mpirun执行你的R脚本,mpirun将只启动一个进程来执行你的R脚本(我称之为主进程),第一个startMPIcluster
的参数指定 master 为执行由 foreach 循环生成的任务而应启动的 worker 数量。如果使用 mpirun 启动多个进程,则根本不需要指定 count
值。我建议使用 mpirun 启动所有工作人员(在您的示例中使用 -n 3
),而不是为 count
值指定值。
mpirun -n
选项指定它应该启动的 workers/processes 个数。如果你想产生工人,你应该使用 -n 1
以便 mpirun 只启动主人,并使用 startMPIcluster
count
参数来控制产生工人的数量。
我真的不明白你的最后一个问题,但我认为插图和示例应该可以帮助你更好地理解所有这些概念。
我第一次体验使用 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 源代码分发版并查看其中包含的示例脚本。
关于您的问题:
startMPIcluster
用于创建一个集群对象,表示一组用于并行计算的进程;registerDoMPI
用于向 foreach 注册一个集群对象,因此它将用于执行并行的 foreach 循环。必须使用这两个函数。如果你通过带有
-n 1
选项的mpirun执行你的R脚本,mpirun将只启动一个进程来执行你的R脚本(我称之为主进程),第一个startMPIcluster
的参数指定 master 为执行由 foreach 循环生成的任务而应启动的 worker 数量。如果使用 mpirun 启动多个进程,则根本不需要指定count
值。我建议使用 mpirun 启动所有工作人员(在您的示例中使用-n 3
),而不是为count
值指定值。mpirun
-n
选项指定它应该启动的 workers/processes 个数。如果你想产生工人,你应该使用-n 1
以便 mpirun 只启动主人,并使用startMPIcluster
count
参数来控制产生工人的数量。
我真的不明白你的最后一个问题,但我认为插图和示例应该可以帮助你更好地理解所有这些概念。