[Users] ET build errors (Leonardo DCGP, CINECA cluster)

IOSIF PANAGIOTIS PANAGIOTIS.IOSIF at units.it
Thu Sep 4 12:00:39 CDT 2025


Hi Roland,

Thank you very much for your detailed explanations.

Here is another follow-up that seems to have a happy ending:


  *
I disabled the ADIOS2, AMReX and Silo thorns and recompiled.
     *
I did not add THCExtra/WeakRates to the disabled thorn list.
        *
>From what I understand, this must probably be related to WhiskyTHC, which I do not have installed.
     *
The build complained about the CMake version, triggered by the ExternalLibraries/OpenPMD thorn.

openPMD: Configuring...
CMake Error at CMakeLists.txt:3 (cmake_minimum_required):
  CMake 3.22.0 or higher is required.  You are running version 3.20.2

     *
For some reason, the build this time did not complain about the CCE_Export thorn, even though I did not update the -std=gnu+11 option under CXXFLAGS yet (I was trying to make one change at a time for clarity).
        *
I found this behavior strange. I guess the CMake error happened first, and the build terminated before reaching the CCE_Export problem?

Anyway, this error seemed easy enough to fix.


  *
I updated envsetup in my ini file with:
     *
module load cmake/3.27.9
  *
Recompiled, and the CMake version error went away, but (expectedly) the CCE_Export error reappeared.

Then,  I tried recompiling  by adding -std=gnu++14 to CXXFLAGS.

  *
The build failed, complaining again about the CCE_Export thorn.
  *
At least the change from gnu+11 to gnu++14did not cause new additional errors.
     *
at least no new errors, in the specific cluster and with the specific config files.

Then I tried recompiling by adding -std=gnu++17 to CXXFLAGS.

  *
>From the attached log file, it seems to me that the build was successful this time.
  *
No new errors arose because of the change to -std=gnu++17 in CXXFLAGS.

I will now attempt to run the TOV star example from the gallery and see if everything works as it should.

I will start a new email thread in case I encounter run problems.

I appreciate the help!

Best,
Panayotis


-------------------
Panagiotis Iosif
postdoctoral researcher
Department of Physics, University of Trieste
Via Alfonso Valerio 2, Trieste 34127
Italy
-------------------

________________________________
From: Roland Haas <rhaas at mail.ubc.ca>
Sent: Wednesday, September 3, 2025 5:29 PM
To: IOSIF PANAGIOTIS <PANAGIOTIS.IOSIF at units.it>
Cc: Einstein Toolkit Users <users at einsteintoolkit.org>
Subject: Re: [Users] ET build errors (Leonardo DCGP, CINECA cluster)

Hello Panayotis,

> I removed all CarpetX-related thorns and tried to compile again.
> This time, the build complained about thorns GRHayLHDX, GRHayLIDX, and NewRadX:

They are all using CarpetX (the "X" is the giveaway :-) ).

> Now the build complains about the CCE_Export thorn.

Hmm, that one is very new.

> You may see the error messages in the updated log file attached.
>
> From what I understand, the first main error seems to be this (see make_updated.log file):
> /leonardo/home/userexternal/piosif00/Cactus/arrangements/EinsteinAnalysis/CCE_Export/src/h5_export.cc:8:21: error: 'filesystem' is not a namespace-name; did you mean 'system'?
> 8 | namespace fs = std::filesystem;
> The text around that error message suggests that again a newer C++ dialect option might be required (-std=c++17' or '-std=gnu++17' ).

Hmm, for C++'s filesystem namespace is somewhat new. Some older
compiler put it in experimental/filesystem . However CCE_Export already
has code to handle this (in src/h5_export.cc):

#if defined __cpp_lib_filesystem && __cpp_lib_filesystem < 201703L
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;
#else
#include <filesystem>
namespace fs = std::filesystem;
#endif

Hmm, you are using gcc-12 though I'd have expected it to be new enough
for this.

Hmm, hmm, those __cpp_lib_filesystem ones may only haven been introduced
in C++20 (https://en.cppreference.com/w/cpp/feature_test.html) and they
require the <version> header, which itself is C++20 (though it exists
in gcc-12 and will have values).

Unfortunately even if I add

#include <version>

to src/h5_export.cc then things still fail with -std=gnu++11 since the
macros are only defined when C++17 is used.

So.... I'd disable the thorn (only used to export data for use with
SpECTRE's CCE code) or enable C++17 support.

This may require some larger reworking of the ET code to try and
contain C++17 requirements to CarpetX code if possible.

> In my current cfg file, following what was mentioned in the wiki page
> about configuring a new
> machine<https://docs.einsteintoolkit.org/et-docs/Configuring_a_new_machine>,
> I have an older option, namely -std=gnu+11, for CXXFLAGS.

gnu+11 is kind of old by now, at least I'd try gnu++14 (10 years old).
So no guarantees that this would work (gcc defaults to gnu++17 as of
version 11 "C++17 mode is the default since GCC 11" on
https://gcc.gnu.org/projects/cxx-status.html).

> I will experiment with different C standards options and see if
> something else works.

I'd have expected that both gnu++14 and gnu++17 should work actually
(as long as CarpetX related code is disable since it and eg AMReX
require C++17).

> Questions:
>
>   *
> Are GRHayLHDX, GRHayLIDX and NewRadX safe to disable?

Yes, they are all using CarpetX.

>      *
> For context, my goal is to start with isolated neutron star simulations. Are these thorns necessary for that?

No, they are CarpetX flavors of the GRHayLHD, GRHayLID and NewRad
thorns.

>   *
> Do we expect newer C/C++ standards, like -std=c++17, to break backwards compatibility, i.e. older code?

Yes, new standards will eventually remove functionality that has been
deprecated in older ones. On top of that g++ is becoming more strict in
allowing non-standard constructs. This is, unfortunately, beyond our
control.

>   *
> Please let me know if I am on the right track, or if you see some
> additional issues from the log file.

> Let me note that I did not start with all of the disabled thorns that
> Bruno's original ini
> file<https://bitbucket.org/simfactory/simfactory2/src/a6dff6ecc4a4346c5a73536681486e745d34bb98/mdb/machines/leonardo-DCGP.ini>
> uses, because I didn't know exactly what was needed or not.
> Currently, the disabled thorns in my ini file almost align with those
> in Bruno's original file. There are, though, some additional thorns
> disabled in Bruno's original file, namely: ADIOS2, AMReX, Silo, PAPI
> and THCExtra/WeakRates.

All except PAPI (which you'll only need if doing low-level
benchmarking) are using only by CarpetX (or in WeakRates case are no
even part of the Einstein Toolkit), so those can also be safely
disabled.

> I do not know if I should disable them too, but since I did not
> encounter specific errors about them, I let them be. Let me know if
> they should go too.

It will make compiling faster (note the MakeThornList script I had
suggested will also remove them).


Yours,
Roland

--
My email is as private as my paper mail. I therefore support encrypting
and signing email messages. Get my PGP key from http://pgp.mit.edu .
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.einsteintoolkit.org/pipermail/users/attachments/20250904/b9ba537c/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: make_gnu17.log
Type: text/x-log
Size: 942149 bytes
Desc: make_gnu17.log
URL: <http://lists.einsteintoolkit.org/pipermail/users/attachments/20250904/b9ba537c/attachment-0001.bin>


More information about the Users mailing list