Mpi numactl—physcpubind处理器迁移
我正在尝试使用numactl启动我的mpi应用程序(打开mpi 1.4.5)。显然,使用--cpu nodebind的负载平衡并没有在可用节点之间以循环的方式分配我的进程,因此我想专门将我的进程限制在一组封闭的cpu上。通过这种方式,我计划根据每个节点上运行的线程数量来确保节点之间的负载平衡--physcpubind似乎是根据numactl手册来完成这项工作的 问题是——根据我从post中提取的信息——使用--phycpubind,进程可以在这个cpu集中迁移。另一个问题是,此集合中的一些CPU保持未使用状态,而其他CPU被分配两个或多个进程,因此运行时CPU使用率仅为50%或更少。为什么会发生这种情况?这种现象是否有解决办法 亲切问候我想你可以试试这个(它对我有用): chrt命令用于建立调度策略,您可以从以下选项中进行选择:Mpi numactl—physcpubind处理器迁移,mpi,openmpi,numa,pinning,Mpi,Openmpi,Numa,Pinning,我正在尝试使用numactl启动我的mpi应用程序(打开mpi 1.4.5)。显然,使用--cpu nodebind的负载平衡并没有在可用节点之间以循环的方式分配我的进程,因此我想专门将我的进程限制在一组封闭的cpu上。通过这种方式,我计划根据每个节点上运行的线程数量来确保节点之间的负载平衡--physcpubind似乎是根据numactl手册来完成这项工作的 问题是——根据我从post中提取的信息——使用--phycpubind,进程可以在这个cpu集中迁移。另一个问题是,此集合中的一些CPU
Policy options:
-b, --batch set policy to SCHED_BATCH
-d, --deadline set policy to SCHED_DEADLINE
-f, --fifo set policy to SCHED_FIFO
-i, --idle set policy to SCHED_IDLE
-o, --other set policy to SCHED_OTHER
-r, --rr set policy to SCHED_RR (default)
编辑:数字98是优先级,在我的情况下,我运行的是一个时间关键型流程。
此外,您可能需要隔离正在使用的CPU,以防止计划程序向它们分配/移动进程。我不确定是否理解您试图实现的目标。如果有多个进程,为什么不将每个进程绑定到给定的节点?如果只有一个进程,但有多个线程,则无法使用numactl指定类似循环策略的内容。您需要使用numa库并从代码中执行此操作。(请参阅)Open MPI支持处理器和内存绑定。有关如何在您的OMPI版本中执行此操作的信息,请参阅。
Policy options:
-b, --batch set policy to SCHED_BATCH
-d, --deadline set policy to SCHED_DEADLINE
-f, --fifo set policy to SCHED_FIFO
-i, --idle set policy to SCHED_IDLE
-o, --other set policy to SCHED_OTHER
-r, --rr set policy to SCHED_RR (default)