Suggestion for Faster Solver with parallelization

Hello all,
Recently, I have been working on large scale topology optimization framework since I needed one for my research. I intend to make it open source in the future. The framework has full integration with ccx 2.15 version and cgx tools, so no additional learning curve is needed. See some sample problems:
1)cantilever for min compliance under volume reduction by 88%
Number of elements=192000
Total runtime: 49 mins

and this:
2)Bracket for min compliance under volume reduction by 75%
Number of elements=42000
Total runtime : 10 minutes

So far I’ve implemented multithreaded version of SPOOLES. However I intend to replace spooles with something that is faster, can handle large scale FEA problems and can be parallelized throught MPI. Does anyone have any suggestion? I gave the Pardiso-project a thought but since it is not exactly open source, I am hesitant to use it. Is the MKL version any better?

Any help is highly appreciated.


You might consider looking at PaStiX.

This is an excerpt taken from the download page of the main calculix website:

PaStiX has been tested and has prove to accelerate execution times up to a factor of 8! To reach this acceleration hwloc, parsec, scotch and PaStiX4CalculiX have to be downloaded and installed. This yields an acceleration up to a factor of 4. For the factor of 8 the CUDA library from Nvidia has to be installed in order to compute on the GPU (only works for Nvidia cards). For details the user should consult the README.INSTALL file.

I’m far from an expert, but I assume it must be doing something in parallel.

There are also these experimental solvers (CUDA-CUSP and CholdMod)

1 Like

Many thanks, PastiX is definitely a consideration. I’ll look into it. Let me check if any modifications will be needed in the source code for ccx because the one I use is 2.15 and pastix was integrated in 2.17 I believe.

While spooles does a satisfactory job, it fails for larger problems, eg, for the cantilever problem with ~600000 eqns, it fails and I have to resort to the default iterative solver.

Thanks for the help.