Compilation failure: "invalid type" errors in Vectors vmask code

Create issue
Issue #2547 wontfix
Bernard Kelly created an issue

Fresh download & first compilation of latest ETK release: compilation fails during Vectors thorn because of issues with “vmask” code:

`In file included from /gpfs/scratch/bjk0015/codes/Cactus_ET_2021_05/arrangements/CactusUtils/Vectors/src/vectors.cc(1): /gpfs/scratch/bjk0015/codes/Cactus_ET_2021_05/arrangements/CactusUtils/Vectors/src/vectors.h(1228): error: invalid type for defaulted constructor vmask(vmask &&) = default; ^

In file included from /gpfs/scratch/bjk0015/codes/Cactus_ET_2021_05/arrangements/CactusUtils/Vectors/src/vectors.cc(1): /gpfs/scratch/bjk0015/codes/Cactus_ET_2021_05/arrangements/CactusUtils/Vectors/src/vectors.h(1230): error: invalid type for defaulted assignment operator vmask &operator=(vmask &&) = default;`

I can fix this issue by commenting out the definition of the “vmask” structure, and the following code that calls it – which is apparently not used in the rest of the code anyway. git diff is attached here.

Further notes:

The compilation is on the WVU machine Spruce Knob, using the Intel 17.0.1 compiler. I’m using the following configuration options:

CC=icc

CFLAGS=-Ofast -qopenmp -xHost  -align -std=gnu99

CPP=cpp

CPPFLAGS=-DMPICH_IGNORE_CXX_SEEK

CPP_DEBUG_FLAGS=-DCARPET_DEBUG

CPP_OPENMP_FLAGS=-fopenmp

CROSS_COMPILE=yes

CXX=icpc

CXXFLAGS=-Ofast -qopenmp -xHost  -align -std=gnu++11

CXX_DEBUG_FLAGS=-O0

CXX_NO_OPTIMISE_FLAGS=-O0

CXX_OPENMP_FLAGS=-fopenmp

CXX_OPTIMISE_FLAGS=-Ofast

CXX_PROFILE_FLAGS=-pg

C_DEBUG_FLAGS=-O0

C_LINE_DIRECTIVES=yes

C_NO_OPTIMISE_FLAGS=-O0

C_OPENMP_FLAGS=-fopenmp

C_OPTIMISE_FLAGS=-Ofast

C_PROFILE_FLAGS=-pg

Comments (5)

  1. Roland Haas

    These are usually caused by using an old C++ library with the Intel compiler. See eg https://bitbucket.org/einsteintoolkit/tickets/issues/2115#comment-54832951 in #2115 .

    #2115 is also on Spruce Knob and at that point there was not correct library available, yet that may have changed in particular if you are also using a different Intel compiler.

    That ticket also links to Intel compatibility chart of C++ libraries and compilers: https://software.intel.com/en-us/articles/intel-c-compiler-170-for-linux-release-notes-for-intel-parallel-studio-xe-2017

    Bascially you pass a -gxx-name /path/to/g++ to icpc and it uses that to find out which stdc++ library to use.

  2. Roland Haas

    Since this is caused by a compiler (STL really) that does not support C++11 correctly, and C++11 is a requirement for Cactus, I will close this as wontfix (there is also the fix above to make icpc use a better STL).

  3. Log in to comment