MPI编程 进程分配问题!!!

轩晔 2011-09-20 09:49:34
我编写了一个测试程序,打算用两个进程运行该程序,我的实验平台是一个工作站,该工作站有两个CPU,每个CPU有4个核心,
我想在想测试一下两种情况下的通信时间并做对比:
1.这2个进程在不同的CPU上;
2.这2个进程在同一个CPU内;

以上是我的需求,我的问题是:
1.如何设置MPI环境实现以上两种情形的运行环境
2. 如上面实验环境,MPI默认情况是如何分配进程的,把这两个进程默认分配到同一个CPU内,还是不同的CPU间?



PS:如果用MPI集群跑比较容易解决,但是测试的环境在单机工作站上如何设置,请大侠们不吝赐教,小弟感激不禁!!!


先谢谢各位了!!
...全文
632 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_iclifort 2011-09-23
  • 打赏
  • 举报
回复
本身这些都是对程序员透明的,如果你要做到绑定,必须要借助相关MPI或者其它运行库提供的设置选项,或者通过API控制。可能地结果是代码无法移植到其它平台/MPI

如果使用的是 Intel MPI,可以通过特定的环境变量来实现这种控制,详细请参考手册 3.2章 “Process Pinning"

I_MPI_PIN
I_MPI_PIN_MODE
I_MPI_PIN_PROCESSOR_LIST
(I_MPI_PIN_PROCS)
。。。
intel_iclifort 2011-09-22
  • 打赏
  • 举报
回复
这个恐怕取决于具体MPI的实现,请参考相应的文档。 有些编译器的OpenMP 实现倒是有一些API提供支持CPU/Core绑定的

有一点供参考,同一个CPU处理器中的核是共享cache的,如果数据大小正好合适,应该效率高些。 MPICH2 以及相关的MPI实现,在SMP上都有相关的优化吧
轩晔 2011-09-22
  • 打赏
  • 举报
回复
经过测试我发现当进程数量少于core数量是 MPI进程在各个core之间来回切换,改种切换会带来进程开销,因此如何把进程帮定到core是解决问题的关键,但是目前为止我还没找到如何实现进程和core的帮定。。。求各位给个思路。。。

566

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧