Note: The following output from running
ESTIMATE (i.e., nast2004 xl0tdf1 mem=estimate out=xltd0 rcf=nast2004rc
sdir=/tmp ) on this job shows how ESTIMATE isn't always able to
give the optimum memory requirement. The decomposition requirement
to avoid 'spill' is shown above as 70121 K WORDS or 280mb, but ESTIMATE
only calculated 122MB:
Starting ESTIMATE, please wait...
*** USER INFORMATION MESSAGE (pgm:
nastran, fn: estimate_job_requirements)
Estimated DOF =
529257
Estimated memory = 122.0MB
Estimated disk = 4205.4MB
Note: ESTIMATE had some difficulty
analyzing this job.
Note: In addition to the above "decomp" memory
requirement there are other "executive system" memory requirements that
use a portion of the amount you specify for "mem=". These other
memory areas are listed near the top of the .f04 file (see below).
--The following output was taken from a job run with
the following command line: nast2004 xl0tdf1 mem=450mb out=xltd0
rcf=nast2004rc sdir=$SDIR1
** MASTER DIRECTORIES ARE LOADED IN
MEMORY.
USER OPENCORE (HICORE) =
108478947 WORDS
EXECUTIVE SYSTEM WORK AREA =
447997 WORDS
MASTER(RAM) =
58913 WORDS
SCRATCH(MEM) AREA =
6553700 WORDS ( 100 BUFFERS)
BUFFER POOL AREA (GINO/EXEC)= 2425239
WORDS ( 37 BUFFERS)
TOTAL MSC.NASTRAN MEMORY LIMIT = 117964796
WORDS
Step #2: (setting the memory for your run).
Here is the important memory related "decomposition" output:
MEMORY REQR'D TO AVOID SPILL =
70121 K WORDS'
Memory Available =
108468 K WORDS
You can see that this job will not spill since there
is sufficient "Memory Available". However, if "Memory Available" had
been less than 70121 K words than you would have needed to increase
the memory setting for this job by the difference between the two numbers
and then re-run the job with this larger "mem=" setting.
Back to Top
Since I/O time can be
a significant part of a MSC.Nastran run, it's important to configure
your job with the best I/O settings for your particular machine and
MSC.Nastran job configuration.
The three topics in
this section will discuss methods for optimizing your MSC.Nastran
I/O performance.
Note: This discussion
assumes you're running the job as a scratch run (i.e., scr=yes specified
on the MSC.Nastran command line). However, the same recommendations
would apply if this were a permanent database run (i.e., scr=no)--the
only difference being that you would have to apply the following
recommendations to not only the SCRATCH DBSET (SCRATCH/SCR300), but
also to any additional permanent database files allocated to your
run (i.e., DBALL DBSET).
Keep in mind that you
should always give the highest priority to assigning the SCRATCH
DBSET to your fastest filesystem since the Scratch DBSET (especially
the SCR300 files) generates the most I/O activity compared to any
other DBSET.
Topic #1: (Swap filesystem
(/tmp))
As a rule of thumb,
the swap filesystem (/tmp) should be used whenever possible since
in most cases it provides I/O speeds that are faster than your standard
disk-based filesystems. This is based on studies using a variety
of solution sequences and disk configurations. To give you an idea
of the variations you might see using different I/O methods (see figure1.1).
With this in mind lets
look at a few examples and some recommended file allocation settings:
Case #1:
SunBlade 2000, 8GB
Memory, 16GB swap space (/tmp)
MSC.Nastran Job's
High-Water file requirements:
SCRATCH DBSET (Total
6GB)--
SCRATCH: 3GB
SCR300 : 3GB
- Recommended MSC.Nastran
settings:
To avoid excessive paging
you should keep the usage of the /tmp below the physical memory (8GB). Since
the total SCRATCH DBSET space of 6GB is much less than the available
8GB of memory you can assign the entire SCRATCH DBSET to /tmp:
nastran <input_file> sdir=/tmp
Note: The above sdir setting
directs both the SCRATCH (3GB) and SCR300(3GB) database files to
/tmp.
Case #2
SunBlade 2000, 8GB
Memory, 16GB swap space (/tmp)
MSC.Nastran Job's
High-Water file requirements:
SCRATCH DBSET- (Total
20GB)
SCRATCH: 10GB
SCR300 : 10GB
- Recommended MSC.Nastran
settings:
Even though the total
Scratch DBSET size is larger than the available 8GB Memory and 16GB
/tmp you should still point as much as possible of your MSC.Nastran
I/O to this /tmp filesystem. To optimize the use of the limited
/tmp space you'll need to partition the Scratch DBSET between the
/tmp and your other non-/tmp filesystems.
Here are the MSC.Nastran's
FMS commands (INIT and ASSIGN) that you could use to do this partitioning:
INIT SCRATCH LOGICAL=(slow1(10gb),fast2(5gb)),
scr300=(fast1(10gb),slow2(5gb))
assign fast1 = '/tmp/input.fast1_1'
assign fast2 = '/tmp/input.fast2_1'
assign slow1 = 'input.slow1_1'
assign slow2 = 'input.slow2_1'
Note: The decision to
use /tmp (i.e., fast1/fast2) or your standard filesystem (slow1/slow2)
will depend on which file, scratch or scr300 does the most I/O (see Topic #3 (advanced techniques), Step #3).
Topic #2 (new/updated I/O methods):
MSC.Nastran 2004 has several new/updated
I/O methods. These methods can provide significant performance improvement
(elapsed time reductions) in certain cases. You will have to
experiment with these to find the one that gives you the best performance
since they are highly sensitive to your hardware configuration and
MSC.Nastran job characteristics. However, one of these methods
stands out, and can improve performance in almost all cases if you
have sufficient memory to hold the entire DBSET file(s) in memory.
This is the "buffio" method (described in detail within the MSC.visualNastran
Installation /Operations Guide).
Hint: To ensure that your buffio "wsize,wnum" allocation
setting was applied you can substitute "buffio=yes" with "buffio=must" in
the "sysfield=" setting shown below. If you don't specify "must" the
space you requested may be silently reduced if it exceeds the available
memory on your machine. By using "buffio=must" the job will immediately
terminate with an error message if the requested space is not available.
Here are examples of jobs that benefited
from using buffio.
Job #1 (using buffio reduced elapsed
time by 20%):
Machine Configuration:
Sun Fire V440, 16GB
Memory
Job configuration:
MSC.Nastran 2004,
Sol 101 (statics), 2.5 million DOF, 64bit MSC.Nastran executable
buffio setting: sysfield=scr*(buffio=yes),scratch(wsize=-5GB,wnum=2),scr300(wsize=-1GB,wnum=2)
Note: This sysfield
setting would appear as follows on your MSC.Nastran command line:
nastran <input_file> scr=yes
exe=/msc/msc2004/solaris/solaris64/analysis.utlra.64 sysfield=scr*(buffio=yes),scratch(wsize=-5GB,
wnum=2),scr300(wsize=-1GB,wunum=2)
The following excerpt from the .f04 file shows the SCRATCH (9.773
GB) and SCR300 (1.235 GB)
file sizes used to determine the above "wsize,wnum" settings and also
verification that the buffio settings of "scratch(wsize=-5GB, wnum=2),scr300(wsize=-1GB,wunum=2)".. were set
correctly:
|