MPI如何决定我们创建的流程数量

时间:2014-01-04 19:13:00

标签: c unix parallel-processing mpi

我想在C中编写一个程序,该程序将文件作为输入,在此文件中将定义NxM大小的矩阵。所以在我的MPI程序中,我希望对矩阵的每个单元都有N * M个进程。

我将使用makefile和hosts文件来运行此程序

run:

    mpirun --hostfile ${HOSTFILE} ./${TARGET}

我搜索了互联网和stackoverflow,但是徒劳无功,请你解释一下如何实现它?

2 个答案:

答案 0 :(得分:1)

一般而言,MPI实施需要“先验”了解在实际开始排名之前需要启动的排名总数。此要求排除使用等级0来读取输入文件并确定运行时的等级数。

实际上,在调用mpirun时必须知道等级的数量(我暂时不考虑生成和连接/接受路径)。在主机文件中为每个条目启动多个排名的具体语法是依赖于实现的。有关更多信息,请参阅提供的文档。

两个“显而易见”的选择是:

  1. 在调用mpirun命令之前,手动检查每个输入文件并记下NxM大小(可能在文件名中)。
  2. 让“脚本”检查文件(直接或使用从应用程序代码派生的“帮助程序”),确定NxM大小,并格式化相应的mpirun命令。
  3. “Spawn”是另一种可能的解决方案,但往往会给整体解决方案增加很多复杂功能。总的来说,上面列出的简单强力方法是优选的。

答案 1 :(得分:0)

您可以通过编写一个小的bash脚本来读取文件中的行数和列数,然后在makefile中使用它。