我使用present命令提交MPI作业:mpirun -np no.of processors filename
我的理解是上面的命令允许我提交到4个通过MPI进行通信的独立处理器。但是,在我们的设置中,每个处理器都有4个内核未被利用 。 我的问题如下:
是否可以提交作业以在同一节点上的多个核心或MPI运行命令行中的多个节点上运行?如果是这样的话?
以上是否需要在代码中进行任何特殊注释/设置?我从阅读一些文献中了解到,核心之间的通信时间可能与处理器之间的通信时间不同,因此需要考虑如何分配问题......但对于这个问题?还需要估算什么呢?
最后,传输的数据量是否有限制?总线可以发送/接收的数据量是否有限制?缓存有限制吗?
谢谢!
答案 0 :(得分:2)
因此,1是关于启动流程的问题,2 + 3是关于基本上是性能调优的问题。性能调优可能涉及对底层代码的大量工作,但您不会需要修改一行代码来执行此操作。
我从您的第一个问题中了解到,您希望修改已启动的MPI流程的分布。这样做必然超出标准,因为它依赖于操作系统和平台;所以每个MPI实现都有不同的方法来做到这一点。最新版本的OpenMPI和MPICH2允许您指定处理器的最终位置,因此您可以为每个插槽指定两个处理器等。
您无需修改代码即可使用,但根据核心发行版存在性能问题。一般来说很难说清楚这一点,因为它取决于你的通信模式,但是,处理器越“接近”,通信就越快。
在MPI任务之间来回传输的数据总量没有明确限制,但是,有带宽限制(每条消息有限制)。缓存大小就是它。