My laptop has 16 GB of RAM and 4 processors. What would be the optimal memory settings and solver choice for the the following scenarios;
Solved! Go to Solution.
Nastran is a very IO intensive application. The most important hardware item for maximizing performance is the hard disk. If you have a conventional SATA drive, it will be the limiting factor for performance. Running in parallel on multiple processors will not noticeably improve performance. If you have a good SSD drive, you may be able to run parallel=2 before being bottlenecked by IO.
In either case, you can use the 16 GB of ram to your advantage. The key is allocating as little as possible to Nastran itself. The reason for this is that the operating system will use unallocated ram as an IO buffer to improve disk performance.
If you look in the .f04 file, you will see the minimum memory required to avoid spill. This varies from job to job, but you will quickly get a feel for how much memory your typical model needs to run. You don't have to be real precise here - if most of your models need 1100 - 1800 MB, you could probably always allocate 3 or 4GB to Nastran and not worry about it. This would still leave 10 GB or so unallocated ram to use as a buffer.
Very good, this is exactly what I have learned after running with success big models (more than DOF 4.5M) of modal frequency analysis using NX NASTRAN V8.5.1, thanks to your help and comments: a big SSD drive is critical, the performance gain is impressing, I strongly suggest to mount SSDs of minimum 500 GB.
Also, the recomendation of allocate say MEM=5GB is very good, this way more RAM available for IO cache. Also I have learned to take a look to *.F04 file and understand the important info there, thanks Jim!.
Thank you JimB, your feedback is very helpful. I think it's time that I get myself a SSD.
For larger models I have noticed that when I assign more than 8000mb of memory the following error is written out in the log file. MEMORY REQUEST EXCEEDS LP-64 LIMIT OF 2047. My solution to this is to specify to use the nastran64Lw solver. Am I doing the right thing here?
I know that the SMEM can be used to specify RAM to be used for scratch. Do you know of any way to limit the amount of RAM used as a IO buffer so that I still have some left to be able to work on my laptop while solving?
In summary from what I have learnt and from your input thus far these will be my settings.
Scenario 1 (solve while working on my laptop)
sdirectory=D:\Scratch (location on SSD)
Scenario 2 (solve overnight using all available resources)
sdirectory=D:\Scratch (location on SSD)
The nastran64 executable is built with 32 bit integers and 64 bit longs and pointers. The 32 bit integers limit the memory address space to 7.999 GB. The nastran64L executables are built with 64 bit integers, longs and pointers so they have no current practical memory address limit. If you are submitting a nastran job via a command line or batch script, nastran64.exe or nastran64L.exe should be used. If you are double clicking a shortcut and want the GUI to browse for the input deck, then nastran64w.exe or nastran64Lw.exe should be used (think: w = Window).
SMEM can be used to specify ram to be used for scratch. On modern operating systems, it is only truly beneficial when the entire SCRATCH DBSET can fit into memory. The three components of this DBSET are shown in the summary table at the bottom of the .f04 file. They are MEMFILE (the memory allocated by SMEM), SCRATCH and SCR300. SCRATCH and SCR300 are both disk files. MEMFILE will be used first. If it's capacity is exceeded, SCRATCH and SCR300 will be used. If you see any IO going to SCRATCH or SCR300, your SMEM setting is not large enough to provide benefit. You are better off running with the default SMEM, a lower MEM setting and letting the remaining memory be used by the OS as IO cache.
Your Scenario 1 looks good. For Scenario 2, you'll have to evaluate 2 things:
Scenario 2 is not really a good choice. If you use 85% of your available memory for nastran, you have < 15% of your memory available for I/O cache. Even if you have SSD disks, I/O cache can play an important role.
I've attached a small PDF document I'd prepared a couple of years ago. The SSD disk drives have significantly improved since.
It is also a good idea to have a set of disk drives in a RAID0 configuration (avoid mirroring data). This will enhance performance as well.
Dear Easwaran Viswanathan,
This information is great, very useful, thank you for sharing!!.