Calculix with pardiso OUT-OF-CORE mode

Hello,

Did anyone tried to modify the code to have pardiso running in out-of-core mode? Apparently seams simple, just to set iparm[59]=1, has described in the following link:

(I know, the devil normally is in the details!)

This is also a suggestion to improve CalculiX as an out-of-core option would certainly allow for much larger models (at the expense of speed off course).

Maybe a simple way to do this would be to allow another solver option, for example SOLVER=PARDISO-OUT-OF-CORE. This is again just a suggestion.

Regards,
Jorge

1 Like

Look at this:

1 Like

could you send fully detailed instruction how to do it for prepomax ?

1 Like

Hello,

I think this change is already included for next version of CalculiX. The feature is on the closed pull requests. I did not test, but in principle if you compile the development version from GitHub - Dhondtguido/CalculiX: This repository contains the source files of CalculiX, a three-dimensional Finite Element Program (www.calculix.de). you should get a version of calculix with the feature.

To used it I think you have to set the environment variables (MKL_PARDISO_OOC_MAX_CORE_SIZE and MKL_PARDISO_OCC_MAX_SWAP_SIZE) accordingly:

image

Its also good to understand the rules:

Again, I did not test so can not ensure all works as expected.

Unfortunately, those pull requests are closed but not merged.

Hi,

Ive noticed that the changes related with pardiso occ as proposed by viktorkemp were not commited on the main branch, so it seams not taken yet to next version.

(Also the development version seams also not ready to use.)

To have the feature you can replace the pardiso.c file as given by viktorkemp and recompile the source code (ccx_2.20 for example).

i am testing it now, first impression seams to work fine.

Hello,

Maybe someone with more insight could help to check if iparm options inside the the function on line 39

/* Added by Victor Kemp 2022-11-18 to enable Out-Of-Core (OOC) mode. */
void initialize_iparm(ITG *symmetryflag){

make any sense. Function call is then at line 106.

The iparm table can be found here:

Hello jlucas,

i would recommend you to use the function pardisoinit and then to adjust the iparm-values you want to.

Here you can find all information about mkl pardiso:

https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-0/onemkl-pardiso-parallel-direct-sparse-solver-iface.html

HI, I’m an absolute noob at this, but say I have am using prepomax, do I go in the calculix folder and replace it with everything as mentioned here?

Once you have the executable and all the necessary libraries ready, you can put them in the Solver catalog of PrePoMax and select the executable file in Tools → Settings → Calculix.

Hi, so all I basically have to do is, add these files to the ccx_dynamic folder of prepomax, set the environment variables and calculix, and then voila?

To the Solver folder, yes (and select the new .exe file in the settings unless the old one was replaced and the new one has the same name), assuming that you have the executable ready (you may have to recompile it).