鑑於主進程A產生一組工作進程B,每個工作進程都產生了自己的唯一工作進程C,如何在C到A之間打開一個通信器?在mpi4py中產生進程的相互通信?
我試圖創建一個循環,使用mpi4py之間的幾段代碼,這些代碼是彼此分開編寫的,同時儘量減少對代碼的修改。因此,MPI代碼的一般框架如下:
- Master A(一個進程)產生8個進程B的工作進程,並將一個數組分散到他們。
- 每個B進程都會產生一個工作者C,對該數組進行一些操作並將其廣播給他們自己的工作者。
- 每個工作人員C以自己的方式操作數組,然後(理想情況下)主人A從每個C的數組中收集數組。
我知道這將涉及打開現有進程之間的互通器,可能使用組通信。什麼是實現這一目標的最佳方式?
謝謝。
謝謝,韋斯利!選項1更符合我試圖實現的目標。在mpi4py中使用MPI_COMM_CONNECT和ACCEPT的語法是什麼?是否像每個worker都調用MPI.MPI_COMM_CONNECT()一樣簡單,然後master有多少行「comm_n = MPI.MPI_COMM_ACCEPT」,就像工作進程一樣? – astromaddie
我不知道語法。我從不使用MPI4PY。但我確定在那裏有文檔。 –