C++ 使用MPI在多核上运行

C++ 使用MPI在多核上运行,c++,mpi,cpu-cores,C++,Mpi,Cpu Cores,我使用present命令提交MPI作业:mpirun-np处理器编号filename 我的理解是,上面的命令允许我提交4个独立的处理器,这些处理器通过MPI进行通信。然而,在我们的设置中,每个处理器有4个内核,这些内核没有被使用 . 我的问题如下: 是否可以从MPI run命令行提交作业以在同一节点或多个节点上的多个核心上运行?如果是,怎么做 上述要求是否需要在规范中进行任何特殊注释/设置?通过阅读一些文献,我确实了解到内核之间的通信时间可能与处理器之间的通信时间不同,因此确实需要考虑问题是如

我使用present命令提交MPI作业:mpirun-np处理器编号filename

我的理解是,上面的命令允许我提交4个独立的处理器,这些处理器通过MPI进行通信。然而,在我们的设置中,每个处理器有4个内核,这些内核没有被使用 . 我的问题如下:

  • 是否可以从MPI run命令行提交作业以在同一节点或多个节点上的多个核心上运行?如果是,怎么做

  • 上述要求是否需要在规范中进行任何特殊注释/设置?通过阅读一些文献,我确实了解到内核之间的通信时间可能与处理器之间的通信时间不同,因此确实需要考虑问题是如何分布的……但对于这个问题呢?还有什么需要估计的呢

  • 最后,传输的数据量是否有限制?总线可以发送/接收的数据量是否有限制?缓存是否有限制


  • 谢谢

    所以1是关于启动流程的问题,2+3基本上是关于性能调优的问题。性能调优可能涉及对底层代码的大量工作,但您不需要修改一行代码来完成这些工作

    我从您的第一个问题中了解到,您希望修改已启动的MPI进程的分布。这样做必然超出标准,因为它依赖于操作系统和平台;因此,每个MPI实现都有不同的方法来实现这一点。和的最新版本允许您指定处理器的最终位置,因此可以为每个套接字指定两个处理器,等等

    您无需修改代码即可使其正常工作,但根据核心发行版的不同,会出现性能问题。一般来说,很难说得太多,因为这取决于您的通信模式,但是是的,处理器越“靠近”,通信速度就越快

    MPI任务之间来回传输的数据总量没有指定的限制,但确实存在带宽限制(每条消息都有限制)。缓存大小是任意大小