I noticed that calculix doesn’t use all cores, at least not for every operation. I have set the number of cores to 6 via the environment variable OMP_NUM_THREADS=6. In the output calculix also writes:
Using up to 6 cpu(s) for the stress calculation.
Using up to 6 cpu(s) for the symmetric stiffness/mass contributions.
However, the SPOOLES solver uses only one core:
Factoring the system of equations using the unsymmetric spooles solver
Using 1 cpu for spooles.
What can I do so that SPOOLES also uses 6 cores?
Check the documentation chapter “How to perform CalculiX calculations in parallel”. It describes what can and needs to be done with Spooles in terms of parallelization.
If you have a specific reason for sticking with spooles, ignore this comment, but I highly recommend you try the pastix or pardiso solver
@Calc_em: Thanks. The chapter says that SPOOLES had to be compiled with a multi treading option. How can I check if this is the case for me? I have an already precompiled version of Calculix and honestly I don’t even know where I got it from. It is a bit older, the archive is called CL34-win64.zip.
@JohnM: no, there is actually no specific reason to use SPOOLES. I just use it because it “came with it”. As far as i know, spastix and paradiso have to be compiled by the user, and I haven’t managed to do that yet.
if you are using Windows, there are pre-compiled versions on the calculix website, and you’re in luck, 2.20 is out. the link is easy to miss, it just says “files”. if you run ccx_dynamic.exe, it will default to pastix and switch to pardiso for modal. runs in parallel
Spooles is an old solver (1998) known to be tested so long, perform well and reputable. better use as references for another newest solver (e.g PaStiX or Pardiso) in which some bugs or unwell may exist
you can find the precompiled executable at GitHub, however an updates to the latest version of CalculiX is not available.
Multithreaded Spooles produces wrong results for eigenvalue problems half the time. I don’t know if that’s Spooles itself or some dependency or CCX but I don’t go near multithreaded Spooles anymore.
i was hear about it in MT, left the user verify for all solver. even Taucs solver in commercial FE, the developer still notify.
Thank you very much for all the answers. I downloaded the new version and it seems that now all cores are used for each operation. I have not generated results yet, but I will run some test models.
I am using Ubuntu 20.04 with the ccx_2.20 executable from http://www.dhondt.de/. By setting OMP_NUM_THREADS I get stress calculation and symmetric stiffness/mass contributions with several cores working but not Spooles (only 1 core). Same as Nobody-86 was explaining (but for Windows i guess).
So, are there compiled versions for Linux anywhere out there that I could use in a similar easy way?
It would be even better to get Pastix and/or Pardiso included as I know Spooles cannot swap to the hard-drive and the other ones seem to be faster.
Thanks a lot in advance!
Unless you are using Ubuntu to create a Linux environment for some sort of coupled analysis with open foam for example, I would suggest trying the windows environment. the pardiso and pastix solvers are both available, run multiple processor and work well.
Hey, thanks for your feedback. I have a working Windows environment. Lately this was lacking a little bit of RAM to run a bigger problem. As I have access to some Linux server I wanted to test this one to do the calculation. In the meantime i found in some older thread: FEA Cluster where an linux pardiso executable can be downloaded. I will try this out. In addition I ordered some more RAM for my Windows machine.
right, it seems better to invest in large RAM and processor speed instead number of cores or disk speed.
some report shown MKL Pardiso degrades in out-of-core mode. also no guarantee to works when RAM is not enough, due to improperly in read/write process.
I had some luck setting up a large page file to a fast SSD to ease ram needs. Works well enough up to about 170% of the maximum working set. (i.e. working set up to 110 GB for 64 GB of ram. Much of the data and code is not used simultaneously. This is somewhat less true for Pastix than Pardiso as for me Pastix becomes slower than Pardiso for problems greater than 1,100,000 nodes.
Also for Spooles as run inside Mecway, Victor proficed a change to the MECWAY 13 init file so that the internal spooles would make swap files. I sucessfully ran a 4,000,000+ node problem, though it took near 24 hours.
thanks for sharing experiences, is PaStiX stopped to ran and unfinished at some limit?
if i may know, detail is needed
- processor type AMD or Intel based
- analysis type: static, dynamic, cyclic
- large deformation : activated or not
- material : elastic or plastic
- contact : exist or no, single/multi part, large/small sliding, friction
thanks in advances
August 17 |
Works well enough up to about 170% of the maximum working set. (i.e. working set up to 110 GB for 64 GB of ram.
thanks for sharing experiences, is PaStiX stopped to ran and unfinished at some limit? About 500,000 nodes. Over that the 8i compilation is needed
This is somewhat less true for Pastix than Pardiso as for me Pastix becomes slower than Pardiso for problems greater than 1,100,000 nodes
if i may know, detail is needed
- processor type AMD or Intel based AMD 3700X
- analysis type: static, dynamic, cyclic Static non-linear
- large deformation : activated or not not?
- material : elastic or plastic Compression only
- contact : exist or no, single/multi part, large/small sliding, friction No.
thanks in advances
i miss something, it’s about MKL versions since many scientific community reported bad performances for not Intel based processor. some critical features (AVX) is deactivated or locked by the publisher.
i work in area of medium mesh size, but the model may complex enough frequently struggle and hard to finish. it’s static/cyclic, large deformation elastoplastic, bunch of multipart contact and large sliding. in my experiences PaStiX is faster to convergences than MKL
i have used MKL Pardiso for so long before PaStiX implemented, then trying keep away after issue in locked features.