【发布时间】:2015-06-09 04:09:28
【问题描述】:
我正在 F77 中编写一个小测试问题(是的,我知道它已经过时了,不,由于我不打算进入的原因,我不能移动到 F90),并且我正在尝试将它与MPI。我对 SMP(特别是 OpenMP)比较熟悉,但我对 MPI 如何分配内存缺乏了解。我当前的代码结构在程序开始时占用了一大块内存,然后分割出一个静态维度的数组(一种在不动态分配内存的情况下解决动态内存分配问题的方法)。我的问题是:我在程序开始时分配了 很多 内存(通常是大部分可用 RAM)。如果我尝试这样做,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 数组吗?
【问题讨论】: