我想使用我可以访问的集群进行分布式并行计算:5 个节点(“计算机”);每个节点有两个处理器(“CPU”),每个处理器有 18 个内核。
因此,在令人尴尬的并行计算中,我可以使用的线程数是 180 (5*2*18)。
我发现我不能对集群使用标准的并行 R 函数。相反,我需要使用 MPI。doMPI 似乎非常适合这项任务,因为它为 MPI 实现了一个 foreach,如小插图中所述:
https://cran.r-project.org/web/packages/doMPI/vignettes/doMPI.pdf
我有一个关于 MPI 的问题:当一个人写作时,例如:
cl <- startMPIcluster(count=2)
这2是什么意思?集群中要使用的节点数?要使用的核心数?
如果 2 代表要使用的节点数,doMPI 是否能够使用每个节点中的 2 个处理器和 2*18 个内核?还是我必须告诉 doMPI 其他事情,这样我才能使用这 36 个内核?
如果 2 代表核心数,那么一切似乎都更容易了。但是这个选择会很奇怪,因为如果集群实际上大于 5 个节点(并且我已经按比例分配了 5 个节点),那么如果 doMPI 应该使用尽可能少的节点(并且该节点内的所有内核)或使用尽可能多的节点(以及该节点内尽可能少的内核)。
所以,我的问题是:
如果我想执行 180 个令人尴尬的并行任务(或 360 或 1800)的循环,我应该使用 cl <- startMPIcluster(count=5) 还是 cl <- startMPIcluster(count=180) 或其他东西,例如 180正在使用可用的内核?
感谢您的帮助。