Skip to content

CompilerCompatibility

Roland Haas edited this page Sep 21, 2023 · 12 revisions

Erik is using GCC 10.2 when using CUDA, and only CUDA 11.2.2. No combination for more modern versions that work has been found (https://bitbucket.org/eschnett/cactusamrex/issues/6/static-assert-on-sizeof-char-sizeof).

These compilers are known to compile the CPU version of CarpetX's thornlist:

  • GNU g++ 11
  • GNU g++ 10
  • GNU g++ 9
  • GNU g++ 8 (needs -lstdc++fs)

These compilers are know to fail to compile the CPU version of CarpetX's thornlist:

  • Intel icpc 19, due to incomplete C++17 support and ICE
  • Intel icpc 19.1.3.304 20200925, on db1.hpc.lsu.edu using g++-9.3.0 STL due to incomplete C++17 support
  • GNU g++ 7, due to missing tuple_size_v and ICE
  • GNU g++ 10.3.0 as provided by Cray on NERSC's Perlmutter system (with an ICE when compiling std::chrono)

These compilers are known to compile the GPU version of CarpetX's thornlist:

  • nvcc 11.2
  • nvcc 11.6.1

These compilers are known to not compile the GPU version of CarpetX's thornlist:

  • nvcc 9.X + GNU as host compiler since it supports at most gcc 6.X which is too old for CarpetX
  • all versions of nvcc prior to 11 (https://en.cppreference.com/w/cpp/compiler_support/17) due to lack of C++17
  • nvcc 11.0.3 as provided by Summit's cuda/11.0.3 modules fails with invalid memory access in cicc in AMReX or ADIOS
  • nvcc 11.4 fails in a static assert on size of unique_C_ptr