5.3. Solver Memory and Performance

For best performance, understand the individual solvers' memory usage and performance under certain conditions. Each solver uses different methods to obtain memory; understanding how memory is used by each solver can help you to avoid problems (such as running out of memory during solution) and maximize the problem size you can handle on your system.

5.3.1. Running Solvers Using Parallel Processing

One of the easiest ways to improve solver performance is to run the solvers using multiple processors to take advantage of parallel processing. For detailed information about using parallel processing, see the Parallel Processing Guide.

All equation solvers, including eigensolvers for modal and buckling analyses, have highly tuned computational kernels that are called in parallel to take advantage of multiple processor cores. The amount of speedup, which can be significant in many cases, depends highly on the particular simulation involved and the characteristics of hardware being used. For more information on memory usage, see also Memory Usage and Performance in the Performance Guide.

5.3.2. Using Large Memory Capabilities with the Sparse Solver

The sparse solver automatically attempts to use the available system memory to run as efficiently as possible. However, you can configure various memory options for the sparse solver explicitly using the BCSOPTION command, if necessary.

An important factor in big memory systems is system configuration. The best performance occurs when jobs run comfortably within the physical memory limits of a given system configuration. For example, a sparse solver job that requires 7500 MB on a system with 8 GB does not run as well as the same job on a 12-16 GB system. Large memory systems use their memory to hide I/O costs by keeping files resident in memory automatically, so even jobs too large to run in-core benefit from large memory.

5.3.3. Disk Space (I/O) and Postprocessing Performance for Large Memory Problems

I/O performance with large memory  —  One of the hidden system benefits of large memory systems is the ability to cache large I/O requests. Even for modest-sized jobs, you can considerably reduce the cost of I/O when the system free memory is larger than the sum of file sizes active in a job. This feature, often called buffer cache, is a system-tunable parameter and can effectively move all I/O traffic to memory copy speeds. The system details are different for various vendors; consult your hardware manufacturer for details on their systems. For most Linux versions and Windows systems, the benefit of the system buffer cache is automatic and does not require tuning.