首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用mpirun分配核心

如何使用mpirun分配核心
EN

Unix & Linux用户
提问于 2019-07-30 06:53:14
回答 1查看 743关注 0票数 1

我试图在一个VPS上同时执行两个进程,VPS有16个核,我希望每个工作都使用8个核,最大限度地利用可用的核数。

因此,我想我可以这样执行两个独立的进程:

代码语言:javascript
运行
复制
$ mpirun -np 8 pmemd.MPI -O -i input_proc1.in -o output_proc1.out
$ mpirun -np 8 pmemd.MPI -O -i input_proc2.in -o output_proc2.out

在我看来,这将把进程1放在核心1-8上,进程2放在核心9-16上,尽管情况显然不是这样。检查htop输出显示,这两个进程都拥挤在1-8核之上,留下8个核心没有被使用。

我在后台运行这些命令,购买将一系列mpirun命令放在两个独立文件夹中的文件中,并以这样的方式运行:

代码语言:javascript
运行
复制
$ nohup ./runscript.sh < /dev/null > /dev/null 2>&1 &

要让它们在我注销后在后台运行,我需要运行的每一系列进程都需要几天的时间才能完成。

我认为您应该能够以某种方式为一个任务“保留”8个核心(1-8),然后在启动下一个任务时强制使用其余的8个核心,尽管我还没有使用--bind-to选项实现所期望的行为。我不确定这是否与系统是OpenStack VPS机器有关,还是我做得不对。

我在运行Ubuntu18.04.2LTS的Ubuntu上使用mpirun (Open ) 2.1.1。

如有任何关于达到预期行为的反馈或建议,我们将不胜感激。

诚挚的问候

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-07-31 06:37:08

因此,经过深入研究,我在堆栈溢出上找到了我的问题的答案。出于我的目的,我安装了apt-get hwloc,使用lstopo -p映射可用的核心,然后运行命令如下:

代码语言:javascript
运行
复制
$ nohup mpirun --cpu-set 0-7 --bind-to core -np 8 pmemd.MPI [arguments]
$ nohup mpirun --cpu-set 8-15 --bind-to core -np 8 pmemd.MPI [arguments]

这成功地将第一个任务分配到前8个核上,第二个任务分配到其余8个核上,充分利用了所有可用的16个核。

我想我也会在这里贴出答案,以防将来有人在这个问题上绊倒。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/532884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档