Created attachment 210340 [details] Patch to enable multithreading in ccx when using spooles. Up to now, ccx uses only one core when factoring the systems of equations using the spooles solver. For spooles to use multiple threads, -DUSE_MT=1 needs to be added to CFLAGS when building calculix-ccx. The included patch adds -DUSE_MT=1 to CFLAGS in the Makefile for ccx. For a system of 161448 equations, this reduces the runtime from 25.76 s to 22.54 s on a Core i7-7700 CPU. (This is with the environment variable OMP_NUM_THREADS set to 4, since this CPU has 4 physical cores and I have disabled hyperthreading.) Record of the tests as per the porters handbook: > make stage ... <build output removed for brevity> ... ===> Staging for CalculiX-ccx-2.16 ===> CalculiX-ccx-2.16 depends on executable: gfortran9 - found ===> CalculiX-ccx-2.16 depends on executable: gcc9 - found ===> Generating temporary packing list <build output removed for brevity> ====> Compressing man pages (compress-man) > make stage-qa ====> Running Q/A tests (stage-qa) > make package ===> Building package for CalculiX-ccx-2.16 # make install ===> Installing for CalculiX-ccx-2.16 ===> Checking if CalculiX-ccx is already installed ===> Registering installation for CalculiX-ccx-2.16 Installing CalculiX-ccx-2.16... # make deinstall ===> Deinstalling for CalculiX-ccx ===> Deinstalling CalculiX-ccx-2.16 Updating database digests format: 100% Checking integrity... done (0 conflicting) Deinstallation has been requested for the following 1 packages (of 0 packages in the universe): Installed packages to be REMOVED: CalculiX-ccx-2.16 Number of packages to be removed: 1 The operation will free 78 MiB. [1/1] Deinstalling CalculiX-ccx-2.16... [1/1] Deleting files for CalculiX-ccx-2.16: 100% The port builds, installs and runs fine. I've seen no significant difference in the calculated results compared to the current port and 2.15. Tests performed on FreeBSD 12.1-STABLE r354569 GENERIC amd64.
Created attachment 210344 [details] Enable multithreading + pkg-descr note
Approved as maintainer: I made some other minor enhancements too. CC mentor
Created attachment 210358 [details] Disable taucs but enable multithreading Since there are bugs reported with the taucs option I will drop it for this release. It makes the ccx package lighter.
(In reply to Pedro F. Giffuni from comment #3) I just tested CalculiX-ccx-2.16_1 on several of my FEA calculations, and it works fine. As expected, the output is functionally identical to that of the previous version.
Approved (as mentor), excepted that I think that the message "Spooles option: by default the single-threaded solver is used unless you set the CCX_NPROC_EQUATION_SOLVER environment variable with the number of cores you want to use." would be better as a pkg-message. Do not write in pkg-descr after the WWW line.
Created attachment 210451 [details] Disable taucs but enable multithreading Hmm .. I had forgotten about pkg-message. Thanks!
A commit references this bug: Author: pfg Date: Sat Jan 4 20:34:10 UTC 2020 New revision: 522059 URL: https://svnweb.freebsd.org/changeset/ports/522059 Log: cad/calculix-ccx: Enable multithreading with spooles. Enabling the multithreaded version of Spooles can bring some modest, but significant, improvements of around 12% for 4 CPUs. Also disable (again) the Taucs slover as it is causing coredumps and requires more investigation. PR: 242995 Approved by: thierry (mentor) Changes: head/cad/calculix-ccx/Makefile head/cad/calculix-ccx/files/patch-Makefile head/cad/calculix-ccx/pkg-descr head/cad/calculix-ccx/pkg-message