分叉在交互式 HPC 节点上的单个核心上生成

Forks are spawned on a single core on interactive HPC node

我正在尝试测试我在交互式 HPC 节点上本地开发的脚本,并且我在这个奇怪的问题中保持 运行 mclapply 仅适用于单个内核。我看到在 htop 中产生了几个 R 进程(与核心数量一样多),但它们都只占用一个核心。

下面是我获取交互节点的方法:

srun -n 16 -N 1 -t 5 --pty bash -il 

是否缺少我的设置?我怎样才能使这项工作?我可以检查什么?

P.S。我刚刚测试过,其他依赖分叉进行并行处理的程序(比如 pigz)也受到同样问题的困扰。那些依赖 MPI 和消息传递的程序似乎可以正常工作。

是的,您缺少一项设置。尝试:

srun -N 1 -n 1 -c 16 -t 5 --pty bash -il

问题是您 运行 在分配给单核的 bash shell 中执行并行命令,因此生成了 bash 进程仅在 srun.

请求的核心之一上

否则,您可以先使用 salloc 分配您的资源,一旦您获得它们 运行 您的实际命令。例如:

salloc -N 1 -n 1 -c 16 -t 5
srun pigz file.ext