How to perform a CPU benchmark for solver speed

It’s been a while since I wanted to perform a benchmark of solver speed for my computer. After postponing it for too long, @FEAnalyst showed an excellent tutorial on this Polish site, and now I want to bring it (in English) to our community. The download link is this one.

The benchmark consists of a simple linear elastic analysis of a block under its weight and fixed in one face. The block has 64K elements, with 70K nodes and 414K DOFs.
image

There are also 5 executable *.cmd files that control each one of the CalculiX solvers (Iterative Cholesky, Iterative Scaling, PastiX, Pardiso, and Spooles). The procedure is to edit each one and run them by double-clicking.
image

To edit them, one needs to open them in Notepad++, VSCode, or similar software and edit two things:

When the proper editions are done, you need to double-click the CMD file. A *.logfile will appear and the results of the calculation time will be shown in real-time. It is advised not to run any other applications on your computer meanwhile to not pollute the data.
image

After running this procedure on each applicable solver you want, you can post-process the results in graphical data (who doesn’t like some Excel plots?):
image

In my case, anything more than 4 processors doesn’t change much the solver speed. It may vary by analysis and CPU, therefore advanced users can further modify the *.cmd files to run this benchmark in other input files regarding other geometries, non-linear procedures, and steps. Hope this will help someone.

Best regards,
Lucas.

5 Likes

This is very nice @lucas_bueno ! I was thinking of doing this but in Python.

Some quick updates. I finally managed to get Pardiso Solver to work. It is not hard, just some trial and error. The first step is to download the Intel MKL files and install them in some folder of the computer. After this, I recommend copying the following files to the CalculiX folder you use:

image

Moreover, I found it necessary to use the ccx_dynamic.exe distribution for Pardiso to work. It may be needed to insert this solver from the official CalculiX website in the appropriate folder of PrePoMax. My benchmark test gave similar results to PastiX.

The easiest way is to download the package with Pardiso solver from here (second row of the CalculiX CrunchiX table): PrePoMax

All the necessary libraries are included and there’s no need to install them.

Thank you for the information, @FEAnalyst . I would probably never find this website.

I’ve been benchmarking the solvers myself recently and found a similar finding - on my machine, essentially no benefit after 8 cores, and diminishing returns after 6.

Commercial solvers don’t seem to have this dramatic of a limitation and can scale with dozens and even hundreds of cores. Is there a reason why Pardiso/PastiX/etc have such a limitation?