Cancel
Showing results for 
Search instead for 
Did you mean: 

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Solution Partner Phenom Solution Partner Phenom
Solution Partner Phenom

Dear Pierre-Alain,

Reading your F06 file I can see the following:

 

  • The RAM memory installed in your computer is 8192 MB = 8 GB:

    ^^^REAL MEMORY IN WORDS=2147483647x4 bytes/word=8192MB
  • The RAM memory specified by the MEM command line nastran keyboard is 3100 MB:

    ^^^MEMORY PASSED TO ADINA IN MB          3100
  • Memory for Element Storage: this is the estimated memory for minimum in-core and out-of-core requirements. In this case 98048904 x 4bytes/word=374 MB


           M E M O R Y     R E Q U I R E M E N T   (in words)
      
    AVAILABLE MEMORY FOR THE ADINA PROGRAM (MSTORE)       = 812500000
    ESTIMATED MEMORY FOR IN-CORE STORAGE .......(IOPTIM=3)= 98048904
    ESTIMATED MEMORY FOR OUT-OF-CORE STORAGE....(IOPTIM=2)= 73162708
    NOTE: WHEN SPARSE SOLVER IS USED - ADDITIONAL MEMORY
            IS REQUIRED - PLEASE SEE BELOW INFORMATION
            RELATED TO SPARSE SOLVERS.
    
    MAXIMUM REQUESTED (TEMPORARY) MEMORY (in words)...... = 98048904  
    IN-CORE STORAGE FLAG . . . . . . . . . . . (IOPTIM)  = 3
    
    ****************************************************************
    Available total memory . . . . . . . . . . . . .    6500.0 mb
    Memory used for storage of model data. . . . . .     643.4 mb
    ****************************************************************
    Re-allocating 643.4 MB of memory ...

 

And finally the RAM memory for the Sparse solver: the key here is that the solution runs fully in memory (in-core solution), this is critical. If the solution is out-of-core, then you need to increase RAM memory using NXNA_MEMORY environment variable, OK?.

 

*****************************************************************************
*                                                                           *
*          <<<<< SPARSE SOLVER INFORMATION >>>>>                            *
*                                                                           *
* NUMBER OF NON-ZERO TERMS IN FACTORIZED MATRIX......=           225291101  *
* MEMORY USED BY THE SOLVER (in words)...............=           238797546  *
* TOTAL MEMORY USED BY THE PROGRAM (in words)........=           319224019  *
*             << IN-CORE SOLUTION >>                                        *
*****************************************************************************
  
Memory used by the in-core sparse solver. . :    1910.4 mb
Total memory used by the program. . . . . . :    2553.8 mb

 

Best regards,

Blas.

Blas Molero Hidalgo, Ingeniero Industrial, Director
IBERISA • 48004 BILBAO (SPAIN)
WEB: http://www.iberisa.com
Blog Femap-NX Nastran: http://iberisa.wordpress.com/

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Creator
Creator

Dear Blas,

So if the solution already runs fully in memory, which is the case here, there is no way to improve performance through memory settings?

I thought that the nxadina.exe process was limited by the system, but it seems that the analysis just can't use more than 2554 MB, right ?

 

Regards,

 

Pierre-Alain

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Siemens Phenom Siemens Phenom
Siemens Phenom

The statement "but it seems that the analysis just can't use more than 2554 MB, right ?" is incorrect.

 

The correct statement is: the analysis does not need more than 2554 MB.

 

The log file explicitly shows you how much memory is required to store the matrices (643 MB) and how much is required to solve those matrices (1910 MB).

 

If the model was bigger, nxadina would use more memory as required.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Pioneer
Pioneer

Hello PierreAlainG,

 

First of all, I would recommend to use the Process Explorer ( https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ) instead of the task manager. You can see how a process calls another, the CPU and memory history for each process and so on.

 

Secondly, you are calculating friction which is probably done with contact elements. Contact is IMHO an iterative process so that using more processors might not help and Multi-Core-CPU will not be used 100%. In an example that I created a while ago to explain the usage of SMEM, I did some contact calculation. In the first figure you can see the calculation without SMEM, as you can see, the CPU is often waiting for the memory which is slow because it is swapped to the harddisk:

 

 ohne_SMEM.png

 

In the second figure, you can see the CPU doesn't have to wait because all the data is in the RAM. You can see a strait line at 25% which means, one core (out of 4) is working at full load. But as it is an itearative process only sometimes a second or thrid CPU ist helping.

 

mit_SMEM.png

 

So if your CPU history looks like this, everything is fine. If you do calculations without contact you probably have 100% usage all the time when using SMEM.

 

 

JonkMcCool

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Siemens Phenom Siemens Phenom
Siemens Phenom

NX Nastran SOL 601 spawns the Adina solver via an ISHELL process. The Adina solver does not use any of the parent NX Nastran memory space or DBSETs.

 

SMEM controls the size of the NX Nastran SCRATCH DBSET that is held in memory. It's setting has absolutely no effect on the Adina process.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Pioneer
Pioneer

Thank you  JimB for the Info, you are right. ADINA is mature enough to decide itself how much memory it needs and uses. The things I stated refere to SOL 101 using contacct elements and to all the other solution that use the Nastran Solver.

 

The process tree is still interesting because the Analysis.exe still takes the MEM assigned as the following three pictures show.

 

 

process tree with no extra commands:

NX_ADINA_no_memory_configuration.PNG

 

 

the process tree using 5000MB for MEM

NX_ADINA_memory_5000.PNG

 

 

and the process tree using 5000MB MEM and 3000MB SMEM

NX_ADINA_memory_5000_SMEM_3000.PNG

 

 

It would be interessting if the analisys.exe is able to give the memory to processes it calls or not. Since MEM and especially SMEM are so helpful for solutions that use the NASTRAN solver, I have MEM=8000MB and SMEM=6500MB right in my nast9.rcf. If the analisys would no be able to pass the memory it would mean that this memory is blocked and not availible to the adina solver. If not enough physical memory is availible this could then actually slow down adina solution.

 

Best Regards,

Jonk

 

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Siemens Phenom Siemens Phenom
Siemens Phenom

Jon,

 

You can leave these settings in the rcf file for nastran superelement solution sequences. If you run an advanced nonlinear solution, simply specify small memory values for Nastran on the Solver Parameters dialog.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Pioneer
Pioneer

Just to make sure that I understand this correctly then - on my system, I have a 6-core processor, 64 GB RAM, and also a 400 GB PCI Express SSD.

 

Does this mean that since I can't use smem to make the ADINA solver use RAM for scratch that the best thing that I can do is to either get a bigger or faster PCIe SSD (to speed up the run)?

 

My model has 1102310 equations (and I am using CTETRA10s, but I am testing the run using the sparse solver right now and will be conducting tests with the iterative solver next).

 

Thanks.

 

P.S. Also...given my hardware configuration - should I be setting scr=yes and pointing it to a directory on the PCIe SSD or should I be setting scr=no? (I just want to double check). Thank you.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Siemens Phenom Siemens Phenom
Siemens Phenom

Again, Advanced Nonlinear spawns Adina as an ISHELL process. None of the "regular" Nastran parameters you mention really apply (SDIR, SMEM, SCR, etc.).

 

The only parameter you can really control for Adina is memory allocation. If it has enough memory to solve in core, it does minimal swapping and does not need much scratch IO. The .f06 will tell you how much memory is needed to solve in core.

 

The only setting you really need to become familiar with is the environment variable NXNA_MEMORY. See Remark 6 at https://docs.plm.automation.siemens.com/tdoc/nxnastran/11/help/#uid:id511001

 

In an Advanced Nonlinear run, Nastran starts up, reads the input deck and writes data to be transferred to Adina in an .op2 file. When Adina is done, Nastran reads data from Adina temporary results files and writes the final .op2 file. Neither of these processes requires much memory. If you are running on a 32 GB machine, you may be able to specify mem=14GB on the Nastran command line. Nastran will start up, allocate it's 14GB, use a small portion of that to do the initial data transfer, then spawn an Adina process, which will also allocate 14GB. You've now got 28GB of your 32 GB in use, but Adina only has access to 14GB.

 

Rather than using the mem keyword only (where Nastran and Adina both allocate the same amount), you can adjust the split using NXNA_MEMORY. In the scenario above, you should set NXNA_MEMORY=26624 and then specify mem=1GB on the Nastran command line. This gives 1GB of memory to Nastran, which is typically more than enough to do the file reads/writes, and allows the Adina process to allocate 26 GB.

 

Also note that the Adina scratch files do not get written to sdir. If you want them to be on the SSD, you need to launch the solve from a folder on the SSD.

 

Final Note: the memory allocation mentioned above is changing in NX Nastran version 12. The Nastran core memory is being split into a static portion (a minimal amount required to hold the database and other essential data) and a dynamic portion. The dynamic portion will be released prior to an ISHELL process being spawned. With this change, you will be able to specify mem=26GB directly on the command line and the Nastran process will release a majority of this so Adina will be able to allocate it.

Re: Memory settings for Advanced Non Linear Static Analysis (SOL601)

Pioneer
Pioneer

@JimB

Thank you for your thorough response.

 

I did read about the NXNA_MEMORY system environment variable.

 

The system has 64 GB of RAM, and I think that it said that it needed like maybe 14-16 GB for an in-core solution for the entire run.

 

The SSD that I have installed on the system is an Intel 750 series 400 GB PCI Express Gen 3.0 x4 (NVMe 1.0) half height, half-length add-on card.

 

So beyond that, I can't think of any more ways to speed up the run, hence why I was looking for ideas to see if there was a way to speed up the run any more.

 

Looking at the nxadina.exe process in Windows Task Manager (yes, I realise that process explorer is actually better for it, but this is "simple" enough to give me an idea) - after each equilibrium iteration, it reads a little shy of 2 GB of data in (takes about 20 seconds to do so) in between each equilibrium iteration.

 

I'm not sure where it is reading the data to/from. I've set scr=no, but I will have to do more testing with the various settings to see if it even makes much of a (or any) difference (at all).

 

Thanks.

 

(P.S. The Windows OS is on its own SATA 6 Gbps SSD, and the windows page file is also on its own, separate SATA 6 Gbps SSD as well.)

 

Also if I recall correctly (I'm not in front of that system right now), it says that it passed 29 GB of RAM over to ADINA, and it only uses (also IIRC, according to the .f06) upto 16 GB for the run, so to that end, it seems like that the ADINA has plenty of RAM for the solution.

 

I just want to make sure that I am doing everything I possibly can, given the hardware that I've got, to make this run as quickly as possible.

 

Thanks.