Compiling procedure for PaStiX:

This description is directly extracted from the ccx README file:

"Finally, CalculiX has recently been linked with PaStiX. PaStiX is a very fast freeware solver able to use the Graphical Processing Unit (GPU). Benchmark tests have revealed a speed-up of a factor up to 8 for static calculations with contact. This, however, assumes that you have a hight-end Graphical card with at least 32 GB of memory on it. Still, even without using the GPU speed-ups of up to a factor of 4 were observed. This applies to medium to big models in the range between 1 and 5 million degrees of freedom."


A good starting point will be the Peter Wauligmann Master's Thesis:

Linear Equation Solvers on GPU Architectures for Finite Element Methods in Structural Mechanics

If you are interested, it is avaible on the CalculiX DISCOURSE Group.

In the CalculiX source folder, the shell script files to compile all the dependencies are already available:

bash
cd /usr/local/ClaculiX/ccx_2.22/src
ls make_*.sh

the output should be:

bash
-rwxr-x--- 1 alex users 109 Jul 31  2022 make_hwloc.sh
-rwxr-x--- 1 alex users 668 Jul 31 2022 make_parsec.sh
-rwxr-x--- 1 alex users 662 Jul 31 2022 make_pastix.sh
-rwxr-x--- 1 alex users 221 Jul 31 2022 make_scotch.sh

In comparison the other solvers implemented before, PaStiX need a strictly dependancy and some minor changes to the standard procedure are often required.
To use PaStiX you need to compile these projects in the exact order:

  1. BLAS
  2. HWLOC
  3. the model partitioner SCOTCH
  4. the model partitioner METIS (optional)
  5. the scheduler StarPU (optional)
  6. the scheduler PaRSEC (optional but highly required)
  7. the PaStiX solver.

You need to compile these libraries in version that supports 8-byte integers in the above order (the requirement for 8-byte integers comes from the fact that some of the above libraries automatically assume the use of 8 bytes for an integer). In the CalculiX source directory shell scripts *.sh are provided to do the compiling and linking job. They assume a directory tree in the form:

bash
/usr/local
├── CalculiX
│ └── ccx_2.22
│ └── src
├── OpenBLAS_i8
├── PaStiX
│ ├── hwloc_i8
│ ├── starpu_i8
│ ├── parsec_i8
│ ├── scotch_i8
│ └── PaStiX4CalculiX
└── cuda-12.4

Moreover, if you want to use GPU you need to install the CUDA library.


Back to CalculiX compiling procedure