PROCMIN_NS = integer constant

PROCMIN_EW = integer constant

PROCMIN_NS and PROCMIN_EW are used to reduce the size of 2- and 3-dimensional grid arrays in the MM5 on each processor. These two settings are crucial for taking full advantage of the benefits of the DM-parallel option because they allow users to exploit the aggregate memory size of a parallel machine to run problems that require more memory than would fit on a single computational node. For example, let's say a distributed memory parallel computer has 64 nodes, each with 128 MB of local memory. The aggregate memory size of the machine is 8 GB. However, this can only be used for a program that is able to reduce its memory on each processor to no more than what is needed locally. If the memory size on each processor is not reduced, then the total size of the problem is limited to what will fit in one 128 MB memory. Programs which can take advantage of the aggregate size distributed memory are said to be scalable in memory.

PROCMIN_NS and PROCMIN_EW are used to divide the array dimensions MIX and MJX that are specified in the configure.user file. The actual horizontal memory size of an MM5 array will be approximately MIX/PROCMIN_NS times MJX/PROCMIN_EW. So if PROCMIN_NS is 1 and PROCMIN_EW is 1, the arrays are effectively full sized -- not decomposed at all. If PROCMIN_NS is 2 and PROCMIN_EW is 2 the size of the arrays on each processor is effectively quartered. Once values are set for PROCMIN_NS and PROCMIN_EW and the model compiled, the model can not be run on fewer than those numbers of processors in each dimension (in other words, never fewer than PROCMIN_NS * PROCMIN_EW). This is because the local arrays on each processor have been reduced in size and can not hold the data for the entire domain. Fewer processors will mean larger portions per processor and, if the requirements grow too large, the array bounds would be exceeded. (There are tests built into the code to ensure that this will not happen; rather, the model will simply abort with an error message if too few processors have been specified).

PROCMIN_NS and PROCMIN_EW may be thought of as specifying at compile time the minimum number of processors that are allowed to be used for an MM5 run. If, for example, PROCMIN_NS is 3 and PROCMIN_EW is 4, then the resulting executable may be run on no fewer than 12 processors. It may be run on more than 12 processors, just not fewer. It is also required that the number of processors have two integer factors such that one of the factors is greater than or equal to MIN(PROCMIN_NS,PROCMIN_EW) and the other factor is greater than or equal to MAX(PROCMIN_NS,PROCMIN_EW). Thus, in the preceeding example, 15 is fine (3*5) but 14 is not (2*7). Within these limits, for performance and memory efficiency the user should make make PROCMIN_NS and PROCMIN_EW as small as possible.

Note that most versions of UNIX provide a "size" command. To find the per-processor memory usage for a particular mm5.mpp executable file, type "size mm5.mpp". The command will report the amount of memory that will be required on each processor to run the model. If you discover this is too large for the per-node memory on the machine you are using, try increasing the values of PROCMIN_NS and PROCMIN_EW.

Note on the Fujitsu VPP series and on the NEC SX systems (when running distributed-memory parallel): Domains are only ever decomposed in the east-west (longitudinal) dimension. Therefore on the Fujitsu VPP, the number of processors in the north south dimension is always 1 and the value of PROCMIN_NS is ignored.

Higher settings of MAXNES use approximately that many times as much memory, so MAXNES should be set as low as possible.


Use the BACK button your browser to return to the configure.user example.


Revised January 9, 2002 to make the discussion a little more clear and fix some typos.