Tech Articles

MEMORY


Tech Articles ID    KB8022088
Status:    Published
Published date:   
Updated:    09/22/2016
Reported In:   MSC Nastran
 

Abstract (Question)

Summary

  • Memory is allocated on the "mem" parameter.
  • The MEM parameter cannot exceed memorymax.
  • memorymax defaults to 50% of RAM and should not exceed 80% of physical RAM. It may be redefined on the command line or the RC file.
  • DMP runs use the amount of MEM for each DMP process.

 

Description (Answer)

Details

MEMORY, BPOOL and I/O The memory partitioning is printed in the F04 file. For example a run with mem=max printed:

0    ** MASTER DIRECTORIES ARE LOADED IN MEMORY.
        USER OPENCORE (HICORE)         =  1100802566  WORDS
        EXECUTIVE SYSTEM WORK AREA     =     1169591  WORDS
        MASTER(RAM)                    =      200000  WORDS
        SCRATCH(MEM) AREA              =     6553700  WORDS (     100 BUFFERS)
        BUFFER POOL AREA (BPOOL4)      =  3120347744  WORDS (   47612 BUFFERS)

        TOTAL MSC NASTRAN MEMORY LIMIT =  4229273600  WORDS

A graphical representation of the memory layout is:

The above allocation is from a 3.5 Million DOF using MSC Nastran 2014.   It produced the follow summary at the bottom of the F04 file:

While memory=max is normally a very good balance of resources, this job has 1510 Gb of I/O. Giving more memory to BUFFPOOL could reduce the I/O significantly. e.g. submitting the above job with "mem=60gb bpool=54gb" changed the final I/O statisitcs to:

 

This change reduced the elapsed time from 15,000 seconds to 7,000 seconds.  This improvement

is not typical, but an extreme case ( real client model, not fabricated ) to demonstrate

some manual settings.  SOL 400 jobs use a large amount of BUFFPOOL I/O and in this case

changing the params helped a great deal.  Also, the performance improvement due to I/O

reduction is highly dependent on disk speeds.  For example, if SSD disks are used the

improvement will be less.

 

Partitioning memory to give more to the I/O subsystem takes it away from the

Solver.  The memory used by the solver can be seen in the F04 file.  In this case the

initial allocation was high and that memory could be given to the I/O subsystem.

 

For the default server:

 *** USER INFORMATION MESSAGE 4157 (DFMSYM)

     PARAMETERS FOR SPARSE DECOMPOSITION OF DATA BLOCK  SCRATCH ( TYPE=RSP ) FOLLOW

                      MATRIX SIZE =   1948164 ROWS             NUMBER OF NONZEROES =  52580784 TERMS

           NUMBER OF ZERO COLUMNS =         0        NUMBER OF ZERO DIAGONAL TERMS =         0

           ELIMINATION TREE DEPTH =     10650

                CPU TIME ESTIMATE =       737 SEC                I/O TIME ESTIMATE =        20 SEC

       MINIMUM MEMORY REQUIREMENT =     47039 K WORDS             MEMORY AVAILABLE =    831121 K WORDS

     MEMORY REQR'D TO AVOID SPILL =     47302 K WORDS         MEMORY USED BY BEND  =     47040 K WORDS

     EST. INTEGER WORDS IN FACTOR =    230155 K WORDS           EST. NONZERO TERMS =    471173 K TERMS

     ESTIMATED MAXIMUM FRONT SIZE =      3435 TERMS                 RANK OF UPDATE =        64

 

For the Pardiso solver:

 

      PARAMETERS FOR INTEL MKL PARDISO PARALLEL SPARSE SOLVE

      MATRIX SCRATCH  on unit 308 ( TYPE=1) FOLLOW

                   MATRIX SIZE =3556748 ROWS

           NUMBER OF NONZEROES =96075711 TERMS

        NUMBER OF ZERO COLUMNS =235876

                  SYSTEM (107) =0

           MKL REQUESTED PROC. =2 CPUS

      MEMORY PARAMETERS FOR INTEL MKL PARDISO PARALLEL DECOMPOSITION FOLLOW

                     AVAIL. WORK MEMORY =32976 MB

          APPROX. REQUI. IN-CORE MEMORY =10772 MB

      APPROX. REQUI. OUT-OF-CORE MEMORY =6782 MB

MEMORY and Multiply ADD Another item to consider is the number of passes in a Multiple Add in the F04 file. For example:

If more RAM were given to the SOLVER, the number of PASSes would decrease.

Commands

The memory allocated to Nastran is done via the "mem" command line ( or Runtime Configuration File ) options. This value may be either:

mem=value                           e.g. mem=10gb
mem=percent of physical   e.g. 0.8xphysical  
mem=max                             e.g. Will be a percent of Physical and set BPOOL based on:
                                                 if SOL 101 or 400 ( An estimated amount of mem will go to
                                                 the solver and the rest will go to BPOOL
                                                 if NOT ( sol 101 or 400 ) then
                                                 the solver gets 75% of memorymax and BPOOL = 25% of memorymax

Caveat

  • Memory use is a delicate balance about assigning it to the Solver and the Executive system. The analysis of an F04 file my help determine how to allocate resources.