2015-04-04 31 views
0

我使用C代碼從MPI模擬中輸出64個二進制文件。從MPI模擬中加入輸出二進制文件

這些文件對應於64個進程的輸出。將所有這些文件加入單個文件中的方法是什麼?也許使用C腳本?

+0

爲什麼不用'貓'來做呢? 'cat file_n >> target' – dvhh 2015-04-04 02:44:49

+0

是否有類似大小的輸出?他們是大還是相對小? – kag0 2015-04-06 21:20:26

+0

它們都是相同的大小,7.3 MB。 – user3124318 2015-04-06 23:36:39

回答

2

由於這是MPI的標籤,我會提供一個MPI解決方案,但它可能不是提問者可以做的事情。

如果您能夠修改模擬,爲什麼不採用MPI-IO方法?更好的是,查看HDF5或Parallel-NetCDF並獲得自我描述的文件格式,平臺可移植性以及大量已經理解您的文件格式的分析和可視化工具。

但無論採取哪種方法,總體思路是使用MPI來描述每個文件的哪一部分屬於每個進程。最簡單的例子是如果每個進程都有助於一維數組。那麼對於N個項目的邏輯全局數組,每個過程貢獻1/N個項目,偏移量爲「myrank/N」

0

由於所有輸出文件都相當小且尺寸相同,因此使用MPI_Gather一個節點上的一個大的二進制數組,然後可以寫入一個文件。如果分配大數組是一個問題,那麼您可以簡單地使用MPI_ISend和MPI_Recv一次寫入一個文件。

很明顯,這是一個非常原始的解決方案,但它也非常簡單,萬無一失,而且實際上不會花費太長時間(假設您在模擬結束時完成了所有這些)。