我想在C中编写一个程序,该程序将文件作为输入,在此文件中将定义NxM大小的矩阵。所以在我的MPI程序中,我希望对矩阵的每个单元都有N * M个进程。
我将使用makefile和hosts文件来运行此程序
run:
mpirun --hostfile ${HOSTFILE} ./${TARGET}
我搜索了互联网和stackoverflow,但是徒劳无功,请你解释一下如何实现它?
答案 0 :(得分:1)
一般而言,MPI实施需要“先验”了解在实际开始排名之前需要启动的排名总数。此要求排除使用等级0来读取输入文件并确定运行时的等级数。
实际上,在调用mpirun时必须知道等级的数量(我暂时不考虑生成和连接/接受路径)。在主机文件中为每个条目启动多个排名的具体语法是依赖于实现的。有关更多信息,请参阅提供的文档。
两个“显而易见”的选择是:
“Spawn”是另一种可能的解决方案,但往往会给整体解决方案增加很多复杂功能。总的来说,上面列出的简单强力方法是优选的。
答案 1 :(得分:0)
您可以通过编写一个小的bash脚本来读取文件中的行数和列数,然后在makefile中使用它。