[英]Running MPI program with multiple inputs files and number of processes
我想用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)執行。
據我了解您的問題,您可能使用例如:
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
。 xargs
的-0
選項指定應使用以空分隔符輸入, -n2
表示應一次獲取兩個文件,並且-J%
規定替換字符%
,即將在提供的命令中使用的字符替換為從輸入中獲取的文件名。 最后, --
僅表示選項的結尾,后跟要執行的命令(包含替換字符)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.