0
我是一個MPI初學者,所以我想知道的MPI程序級別的確切定義,以及我們爲什麼需要它MPI等級過程
例如,有兩行代碼在這裏:
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
我是一個MPI初學者,所以我想知道的MPI程序級別的確切定義,以及我們爲什麼需要它MPI等級過程
例如,有兩行代碼在這裏:
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
要理解這一點,你需要認識到,MPI使用SPMD(單程序多數據)模型。這意味着如果你並行運行這個程序,例如在同一時間4個進程中,每個進程都運行同一程序的獨立副本。所以,最基本的問題是:爲什麼不是每個流程都做同樣的事情?要使用並行編程,您需要進程來完成不同的事情。例如,您可能希望一個進程充當向多個工作人員發送作業的控制器。等級是每個過程的基本標識符。如果在4個進程上運行,那麼上述程序將在不同進程中返回0,1,2和3的等級。一旦一個過程知道它的等級,它可以適當地採取行動,例如「如果我的等級爲零,則調用控制器函數,否則調用輔助函數」。
我們還有「MPI_Comm_size(MPI_COMM_WORLD,&n)」,其中「n」是Comm組中的進程數。那麼這是否意味着1rank可以有多個進程,或者只有1個進程只能識別1個進程?而不是爲什麼我們有這些整數非初始化的價值 –