我想用3个命令行输入来运行我的mpi程序。
mpirun -np 4 ./exe file_1 file_2 Size
对于每个file_1
,每个文件对都有相关的file_2
和Size
相同。我想用不同的进程数执行我的程序,比如-np 2,4,6,8和10。
我有一百多个文件。我想从命令行执行一次代码,该命令行使用指定的进程数逐个读取这些文件。
对于串行代码,我尝试了以下命令,它通过逐个获取所有.txt文件来工作。
find . -name "*.txt" | awk -F"/" '{system ("./a.out " $2)}'
我不确定如何使用不同数量的进程同时执行三个程序行输入(file1,file2,size)。
答案 0 :(得分:0)
据我了解您的问题,您可以使用:
find . -name "*.txt" -print0 | xargs -0 -n2 -J% -- mpirun -np4 ./exe % $SIZE
如果您的工作目录包含例如文件a.txt
,b.txt
,c.txt
,d.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%
仅表示选项的结束,后面跟着要执行的命令(包含替换字符)。