运行具有多个输入文件和进程数的MPI程序

时间:2018-02-08 13:02:48

标签: c awk mpi

我想用3个命令行输入来运行我的mpi程序。

mpirun -np 4 ./exe file_1 file_2 Size

对于每个file_1,每个文件对都有相关的file_2Size相同。我想用不同的进程数执行我的程序,比如-np 2,4,6,8和10。 我有一百多个文件。我想从命令行执行一次代码,该命令行使用指定的进程数逐个读取这些文件。

对于串行代码,我尝试了以下命令,它通过逐个获取所有.txt文件来工作。

find . -name "*.txt" | awk -F"/" '{system ("./a.out " $2)}'

我不确定如何使用不同数量的进程同时执行三个程序行输入(file1,file2,size)。

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,您可以使用:

find . -name "*.txt" -print0 | xargs -0 -n2 -J% -- mpirun -np4 ./exe % $SIZE

如果您的工作目录包含例如文件a.txtb.txtc.txtd.txt,则会启动命令:

mpirun -np4 ./exe a.txt b.txt $SIZE
mpirun -np4 ./exe c.txt d.txt $SIZE

此处,find首先查找当前目录中的所有*.txt个文件,将其名称输出为空分隔字符串,并将此列表输出到xargs-0的{​​{1}}选项指定它应该指向空分隔的输入,xargs表示它应该一次取两个文件,并且-n2规定替换字符{ {1}},即将提供的命令中的字符替换为从输入中获取的文件名。最后,-J%仅表示选项的结束,后面跟着要执行的命令(包含替换字符)。