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