Toolkit Fails to Compile on Sawtooth (Idaho National Lab)

Issue #2642 resolved
Leonardo Werneck created an issue

Compilation of the Riemann release of the toolkit fails with the Intel-19.0.5 compiler on Sawtooth (Idaho National Lab). Attached is the full configuration used for the compilation (sawtooth-intel19.cfg). The compilation errors are the following:

/home/rosaleon/sawtooth/test_compile/Cactus/arrangements/Carpet/CarpetMask/src/mask_surface.cc(144): error: more than one instance of overloaded function "CarpetMask::isnan" matches the argument list:
function "isnan(double)"
function "std::isnan(double)"
argument types are: (CCTK_REAL8)
assert(not isnan(theta));
^

/home/rosaleon/sawtooth/test_compile/Cactus/arrangements/Carpet/CarpetMask/src/mask_surface.cc(160): error: more than one instance of overloaded function "CarpetMask::isnan" matches the argument list:
function "isnan(double)"
function "std::isnan(double)"
argument types are: (CCTK_REAL8)
assert(not isnan(phi));
^

Checking status of thorn IllinoisGRMHD
compilation aborted for /home/rosaleon/sawtooth/test_compile/Cactus/configs/intel19/build/CarpetMask/mask_surface.cc (code 2)
make[4]: *** [mask_surface.cc.o] Error 2
make[3]: *** [make.checked] Error 2
make[2]: *** [/home/rosaleon/sawtooth/test_compile/Cactus/configs/intel19/lib/libthorn_CarpetMask.a] Error 2
make[2]: *** Waiting for unfinished jobs....
COMPILING WVUThorns/IllinoisGRMHD/src/driver_conserv_to_prims.C
/home/rosaleon/sawtooth/test_compile/Cactus/arrangements/WVUThorns/IllinoisGRMHD/src/driver_conserv_to_prims.C(204): error: more than one instance of overloaded function "isnan" matches the argument list:
function "isnan(double)"
function "std::isnan(double)"
argument types are: (double)
if(isnan(CONSERVS[RHOSTAR]*CONSERVS[STILDEX]*CONSERVS[STILDEY]*CONSERVS[STILDEZ]*CONSERVS[TAUENERGY]*PRIMS[BX_CENTER]*PRIMS[BY_CENTER]*PRIMS[BZ_CENTER])) {
^

compilation aborted for /home/rosaleon/sawtooth/test_compile/Cactus/configs/intel19/build/IllinoisGRMHD/driver_conserv_to_prims.C (code 2)
make[4]: *** [driver_conserv_to_prims.C.o] Error 2
make[3]: *** [make.checked] Error 2
make[2]: *** [/home/rosaleon/sawtooth/test_compile/Cactus/configs/intel19/lib/libthorn_IllinoisGRMHD.a] Error 2
make[1]: *** [intel19] Error 2
make: *** [default-target] Error 2
Using the only available configuration: intel19.
^Cmake[1]: *** [intel19] Interrupt
make: *** [default-target] Interrupt

I am currently working on a pull request to fix the issue in IllinoisGRMHD.

Cheers,

Leo

Comments (7)

  1. Roland Haas

    This is the sympton caused by using an outdated stdc++ template library. In you fix you are basically re-introducing the compatibility hacks (more or less) that we have just removed from Cactus. A better fix for the compilation failure is to make sure that icpc uses a new enough g++ (and its STL library) by passing a -gxx-name option and the path to a new enough g++.

    If on the other hand you really want an isnan that persists even when -Ofast is used (though you are defeating the Ofast purpose in that case and with Ofast there just may not be any NaN produce in a consitent way to begin with) you could use your change. But it addresses a different issue than the compilation failure I think.

  2. Roland Haas

    @Leonardo Werneck given that this is most likely a configuration file option issue. I will close this ticket with “wontfix” unless objected by 2022-11-18

  3. Zach Etienne

    This has been resolved. Leo says:

    It is just a peculiarity of the C++ compiler, but by providing the path to a newer version of the standard template library the errors go away.
    

  4. Roland Haas

    @Zach Etienne @Leonardo Werneck Can you click on the the “resolve” button (near the top right)? It should be visible to your account I think (if not, that can be fixed).

  5. Zach Etienne

    Leo W says: "This was just a peculiarity of the C++ compiler, but by providing the path to a newer version of the standard template library the errors go away."

  6. Log in to comment