我有一些与研究相关的问题。
目前我已经完成了基于 MPI 的结构骨架框架工作的实现(具体使用openmpi 6.3)。框架应该在单机上使用。现在,我将它与其他以前的骨架实现(例如scandium,fast-flow,..)进行比较
我注意到的一件事是我的实现的性能不如其他实现。我认为这是因为,我的实现基于 MPI(因此需要匹配发送和接收操作的双向通信),而我与之比较的其他实现基于共享内存。(......但我仍然没有很好的解释来推理,这是我问题的一部分)
这两个类别的完成时间存在很大差异。
今天我也介绍了open-mpi的共享内存配置=> openmpi-sm
我的问题来了。
第一,为共享内存配置 MPI 意味着什么?我的意思是,当 MPI 进程存在于它们自己的虚拟内存中时;以下命令中的标志到底是什么?(我认为在 MPI 中,每次通信都是通过显式传递消息,进程之间不共享内存)。
shell$ mpirun --mca btl self,sm,tcp -np 16 ./a.out
第二为什么与为共享内存开发的其他骨架实现相比,MPI 的性能要差这么多?至少我也在一台多核机器上运行它。(我想这是因为其他实现使用了线程并行编程,但我对此没有令人信服的解释)。
非常欢迎任何建议或进一步讨论。
如果我需要进一步澄清我的问题,请告诉我。
感谢您的时间!