首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPI新手-关于'mpirun‘如何工作和过程管理的几个问题

MPI新手-关于'mpirun‘如何工作和过程管理的几个问题
EN

Stack Overflow用户
提问于 2014-03-04 16:31:48
回答 1查看 1.3K关注 0票数 4

首先,我不是一个专业的程序员,但我必须为我的项目编写代码(虽然我对C++和python有一定的熟练程度)。当我被困在这里的时候,我经常来到这里,大多数时候我都从这里得到了很好的解决方案,但是现在我有了关于MPI编程的基本问题,否则我不知道它的概念,我就无法真正继续下去。

这是我对问题的描述,

我想为科学计算的算法创建一个代码。代码可分为两部分。

A.)矩阵-矩阵的向量乘法和逆。这个部分相对简单,我甚至有自己的MPI代码来处理这个部分。

( B.)为更复杂的计算调用外部MPI准备程序(这部分也应该很简单,因为它只是调用一个UNIX命令行)。

我遇到的问题是如何将这两个部分连接在一起?我的算法是这样的,

对于指定范围内的k,将大小为6NMx1的状态向量除以M块,让每个M节点处理这些块。操作大小为6NMx1的状态向量(根据A)(在A之后并行)已完成,运行B)使用并行/*中的M节点--这就是我被困在*/更新状态向量结束的地方

),我必须使用mpirun来调用UNIX命令,

代码语言:javascript
复制
mpirun -np #PPN my_app > some_output

我要问的问题是

  1. “mpirun”实际上是如何工作的?它是否在调用时产生新的进程?
  2. 假设我使用的是M集群计算节点,每个节点都有16个处理器,如果我只使用节点的一个进程来调用上面的UNIX命令,它会生成16个进程吗?如果是这样的话,我最终将运行256 M进程,对吗?
  3. 我的主要目标是使用系统向量中的每个计算节点处理一个块(块是独立的,大小为6Nx1),并将使用来自每个块的数字作为B的输入。我在使用集群,所以当我提交作业时,我必须事先定义节点数,并且我严格要求每个节点也运行B。)(在A之后并行)完事了。对于如何使用MPI做这件事,有什么建议吗?有些人叫我分别为A编写代码。)),并使用python脚本在顶层控制它们,因此它应该看起来像..。

Python脚本:

代码语言:javascript
复制
for k in specified range
   mpirun A.) --> This is straightforward for me
   mpirun B.)
end for

(b.伪码)

代码语言:javascript
复制
/* THIS PROGRAM SHOULD HAVE 16M PROCESSES */
if rank % 16 == 0
   mpirun -np 16 my_app > output
end if
/* I WANT M CALLS TO THIS PROGRAM IN PARALLEL */
MPI_COMM.BARRIER

你认为这个方案将使用16M进程并行于B)吗?如果有更好的方法来实现B)比这个,甚至更好的,包装在同一个代码与A),请建议我!

3.)这是我的原型代码,所以我不关心效率。我只是需要它的工作,我会关心优化以后。

如果我的描述混乱,请问我,我会回来澄清。谢谢你抽出时间,我真的很感谢你的帮助!)

EN

回答 1

Stack Overflow用户

发布于 2014-03-04 18:03:49

Mpirun只是一个命令,它运行您在选项命令行中所需的作业数,它可能会检测您拥有和使用哪种机器。

回答第二个问题很复杂,因为如果您使用的是具有多个节点的集群,那么您可能应该使用专用协议。例如,使用slurm,您可以通过一个S批处理协议运行您的程序,如下所示:

代码语言:javascript
复制
// number of proc on one node
#SBATCH -n 2
// number of node
#SBATCH -N 4

run ./a.out

这意味着您将在4个节点上运行您的程序,每个节点上有2个procs。

我真的不知道以下的原因,因为这对我来说有点混乱,但也许你应该重新考虑一下你的问题。如果在节点中工作,则不需要MPI,但应该使用openMP。

如果在节点中使用非共享内存,则需要MPI。

我希望它能对你的工作有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22177562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档