分叉在交互式 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
我正在尝试测试我在交互式 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