1
我的MPI應用程序有一些過程可以產生一些大的數據。假設我們有N + 1個進程(一個用於主控,另一個用於工作),每個工作進程都會生成大量數據,現在只需寫入普通文件file1,file2,...,fileN。每個文件的大小可能會大不相同。現在我需要發送所有的fileM來排序M進程來完成下一個任務,所以就像所有的數據傳輸一樣。MPI大數據全部傳輸
我的問題是我應該如何使用MPI API有效地發送這些文件?我以前使用Windows共享文件夾來傳輸這些文件,但我認爲這不是一個好主意。
我想到MPI_file和MPI_All_to_all,但這些函數似乎不適合我的情況。簡單的MPI_Send和MPI_Recv似乎很難使用,因爲每個進程都需要傳輸大量數據,而現在我不想使用分佈式文件系統。
您目前正在將N個文件寫入每個進程本地的磁盤,還是他們都住在同一個地方?我認爲你將數據寫入磁盤,因爲它不適合內存? – 2010-06-13 09:01:29
我想在集羣上運行這個應用程序,所以我需要在不同的機器上傳輸這些數據,並且數據大小可能不適合內存。 – csslayer 2010-06-13 09:37:31
什麼構成「大量」數據? MPI_Send/Recv由MPI_Count參數限制消息大小,該參數是一個32位值。 「大量」數據中有多少32位(4GB)塊? 每個等級有多少內存可供使用?這些數據在計算過程中是否存儲在內存中? 節點之間的互連是什麼?什麼是文件系統的互連?很可能,互連結構將比文件系統更快。 – 2010-06-14 13:36:41