Intel® Math Kernel Library (Intel® MKL) PARDISO supports an out-of-core (OOC) capability that can be used to solve very large sparse systems of equations. This feature results in the storing of intermediate matrix factors in external files, thus reducing the amount of main memory required during the execution of the solver.
The parameter, iparm(60), controls whether the out-of-core (OOC) or in-core version of the Intel MKL PARDISO direct sparse solver is used. Because the minimum amount of memory required for out-of-core execution depends on the number of OpenMP threads available, it is important that user not change the number of OpenMP threads used between the first call to Intel® MKL PARDISO and the factorization and solution phases.
The default value of iparm(60) is 0.
- If iparm(60) is set to 0, then the standard in-core Intel® MKL PARDISO is used.
- If iparm(60) is set to 1, then the standard in-core Intel® MKL PARDISO is used if the total memory (in MBytes) required to store the matrix factors is less than sum of the value of the two environment variables: MKL_PARDISO_OOC_MAX_CORE_SIZE (default value 2000), and MKL_PARDISO_OOC_MAX_SWAP_SIZE (default value 0 MB); Intel® PARDISO OOC is used otherwise.
- If iparm(60) is set to 2, then Intel® MKL PARDISO OOC mode is used.
Note that if iparm(60) is equal to 1 or 2, and the total memory required to store local arrays is more than MKL_PARDISO_OOC_MAX_CORE_SIZE, the program halts with error -9. In this case, increase the value of MKL_PARDISO_OOC_MAX_CORE_SIZE.
Intel® MKL PARDISO OOC parameters can be set in a configuration file. Set the path of this file in the MKL_PARDISO_OOC_CFG_PATH environment variable and the file name in the MKL_PARDISO_OOC_CFG_FILE_NAME environment variable.
The path and file name are constructed as follows:
<MKL_PARDISO_OOC_CFG_PATH >/< MKL_PARDISO_OOC_CFG_FILE_NAME> for Linux* OS and macOS*, and
<MKL_PARDISO_OOC_CFG_PATH >\< MKL_PARDISO_OOC_CFG_FILE_NAME> for Windows* OS.
By default, the name of the file is pardiso_ooc.cfg and it is placed to the current directory.
*If user do not specify PARDISO OOC parameters by creating a configure file, PARDISO will read environmental variables.
The internal two-level factorization algorithm will not improve performance when Intel MKL PARDISO is used in OOC mode.
The minimum amount of OOC memory used for numerical factorization and solution can be modified. The total memory consumption of OOC mode can be estimated by max(iparm, iparm+iparm), Alternatively, a user can also extract the minimum amount of memory required by PARDISO OOC in kilobytes as the return value of iparm after computing reordering phase.
Please refer the Intel® MKL Developer Reference for more details about Intel® MKL PARDISO OOC mode and to the KB article Tips For Using PARDISO.