我在F77中寫了一個小測試問題(是的,我知道它已經過時了,不是因爲我不打算進入的原因我不能移動到F90),而且我正在嘗試將其與MPI並行化。我對SMP(特別是OpenMP)比較熟悉,但是我對MPI如何分配內存缺乏瞭解。我當前的代碼結構在程序開始時捕獲了大量內存,然後分割出靜態維度的數組(一種避免動態內存分配問題而不動態分配內存的方式)。我的問題是這樣的:我在程序開始時分配很多內存(通常是大量的可用RAM)。如果我嘗試這樣做MPI,它會嘗試爲每個進程分配相同的大數組嗎?FORTRAN MPI內存分配
例如
Program MPI_SUM
Implicit Real*8(A-H,O-Z)
Include '/usr/include/mpi/mpif.h'
Parameter (MDV = MAX_MEM) ! Let's say I have MAX_MEM defined here
Dimension V(MDV)
Call MPI_Init(IErr)
Call MPI_WORLD_RANK(MPI_COMM_WORLD,myID,IErr)
Call MPI_WORLD_SIZE(MPI_COMM_WORLD,nProc,IErr)
等...等...讓我們說max_mem的是一個值,以使它們的分配分配兩個將超過可用的RAM。每個進程都會嘗試分配一個維度爲MDV的新V數組嗎?
謝謝,那就是我一直在尋找的。我正在計劃開發混合體繫結構(節點上的MPI,節點上的SMP),因此抓取每個節點上的本地內存不應該給我太多問題。 – 2015-04-08 14:18:43