我有一個生成系統矩陣的Python腳本。這是在一個處理器上連續發生的,在一個進程中,沒有任何並行處理。我也有解算器代碼。代碼使用MPI在許多處理器上運行。Python和MPI進程之間的內存共享策略
目前,Python腳本創建矩陣,將其寫入文件,通過subprocess.call(["mpirun ....."])
調用解算器,解算器從文件中讀取矩陣,解析並寫回文件,最後Python腳本將結果讀迴文件。
現在我正在尋找更有效率的東西,避免文件讀/寫。一個想法是啓動MPI進程並在後臺運行,然後通過Python和求解器之間的某種進程間通信傳輸數據和命令。
如何在Python中進行進程間通信?還是有更好的選擇?
我想避免的是在MPI(MPI4Py)中使用Python腳本,這是因爲可調試性以及並行化沒有意義。
您確定文件I/O是限速步驟嗎? –
'mpiexec'通常將其標準輸入重定向到等級0的標準輸入,而對於所有等級的標準輸出則相反。只需打開一個管道到'mpiexec'命令,發送矩陣,然後讀取結果。只要確保除標準輸出外沒有其他等級的輸出。或者使用'os.mkfifo()'創建一個單獨的FIFO。 –