我需要通过supervisor
(Ubuntu 18.04 上的 bash)运行一个命令,该命令启动一个并行进程,其核心数量等于机器核心的一部分。
从命令行我可以成功运行
mpiexec -np $(($(nproc)/2)) pvserver --mesa --force-offscreen-rendering
这按预期工作。然后我尝试在主管配置文件中添加相同的命令(带有绝对路径)
cmd=mpiexec -np $(($(nproc)/2)) pvserver --mesa --force-offscreen-rendering
但我收到错误
[mpiexec@ip-172-31-16-210] HYD_pmcd_pmi_alloc_pg_scratch (pm/pmiserv/pmiserv_utils.c:527): assert (pg->pg_process_count * sizeof(struct HYD_pmcd_pmi_ecount)) failed
[mpiexec@ip-172-31-16-210] HYD_pmci_launch_procs (pm/pmiserv/pmiserv_pmci.c:108): error allocating pg scratch space
[mpiexec@ip-172-31-16-210] main (ui/mpich/mpiexec.c:340): process manager returned error launching processes
似乎mpiexec
收到了错误的论点。不用说,如果我对 np 参数进行硬编码,一切都会正常。
我也尝试过 xargs,但它的语法对我来说不是很清楚。这就是我尝试过的
echo $(($(nproc)/2)) | xargs mpiexec -np {} pvserver --mesa --force-offscreen-rendering
但即使从命令行我也无法让它工作。
有什么建议吗?