我有一个使用该Parallel::ForkManager
模块派生的Perl脚本。
据我所知,如果我派生32个子进程并要求SLURM调度程序在4个节点上运行该作业,每个节点8个处理器,则代码将在每个内核上执行每个子进程。
实验室中的某人说,如果我在多个节点上运行作业,则其他节点未使用,这是在浪费时间和金钱。这个准确吗?
如果我使用一个分叉的脚本,那么我是否仅限于使用SLURM的一个节点?
据我所知,Parallel::ForkManager
它没有使用MPI,因此,如果您使用的是MPI,mpirun
我将看不到它如何在节点之间进行通信。一个简单的测试是让每个子输出主机名。
随同发布的非MPI软件一起发生的一件事mpirun
是,您在所有节点上重复所有工作,从而使它们都在做完全相同的事情,而不是共享工作。如果您使用Parallel::MPI
它应该很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句