我正在使用 gnu Parallel 在每个节点有 2 个 CPU 的高性能 (HPC) 计算集群上启动代码。该集群使用 TORQUE 便携式批处理系统 (PBS)。我的问题是澄清 GNU 并行的 --jobs 选项在这种情况下如何工作。
当我运行不带 --jobs 选项的调用 GNU Parallel 的 PBS 脚本时,如下所示:
#PBS -lnodes=2:ppn=2
...
parallel --env $PBS_O_WORKDIR --sshloginfile $PBS_NODEFILE \
matlab -nodiplay -r "\"cd $PBS_O_WORKDIR,primes1({})\"" ::: 10 20 30 40
看起来每个核心只使用一个 CPU,并且还提供以下错误流:
bash: parallel: command not found
parallel: Warning: Could not figure out number of cpus on galles087 (). Using 1.
bash: parallel: command not found
parallel: Warning: Could not figure out number of cpus on galles108 (). Using 1.
这看起来像是每个节点都有一个错误。我不明白第一部分(bash: parallel: command not found
),但第二部分告诉我它正在使用一个节点。
当我添加选项时-j2
到并行调用,错误消失了,我think每个节点使用两个 CPU。我仍然是 HPC 的新手,所以我检查这一点的方法是从我的代码中输出日期时间戳(虚拟 matlab 代码需要 10 秒才能完成)。我的问题是:
- 我使用的是
--jobs
选项正确吗?指定是否正确-j2
因为我每个节点有 2 个 CPU?或者我应该使用-jN
其中 N 是 CPU 总数(节点数乘以每个节点的 CPU 数)?
- 看来 GNU 并行尝试自行确定每个节点的 CPU 数量。有什么办法可以让它正常工作吗?
- 有什么意义吗
bash: parallel: command not found
信息?
- 是:-j 是每个节点的作业数。
- 是:在远程主机上的 $PATH 中安装“parallel”。
- 是的:这是一个结果
parallel
$PATH 中缺失。
GNU Parallel 登录远程机器;尝试确定核心数量(使用parallel --number-of-cores
)失败,然后默认为每个主机 1 个 CPU 核心。通过给-j2
GNU Parallel 不会尝试确定核心数量。
您是否知道您还可以在 --sshlogin 中将核心数指定为: 4/myserver ?如果您混合使用具有不同内核数量的机器,这非常有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)