-
assigned issue to
- marked as major
Compilation failure: "invalid type" errors in Vectors vmask code
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)
-
-
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.#2115is 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++
toicpc
and it uses that to find out which stdc++ library to use. -
- changed status to open
-
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).
-
- changed status to wontfix
- Log in to comment