Dear all!
I’m having an OpenACC project that compiles fine in the past. However, after a system upgrade (Arch Linux, gcc upgraded to 13.1.1), my project was broken.
The project compiles fine with GCC on CPU only.
The error persists no matter what c++ standard I use (tried default, c++11 c++14 and c++17).
Could someone please take a look and tell me is there anything wrong with my project or I should just downgrade my compiler?
Really appreciate your help!
The error messages I received:
[lisanhu@lisanhu-xps-15 build]$ cmake ../
-- The C compiler identification is NVHPC 23.3.0
-- The CXX compiler identification is NVHPC 23.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/lisanhu/mine/program/nvhpc/Linux_x86_64/23.3/compilers/bin/nvc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/lisanhu/mine/program/nvhpc/Linux_x86_64/23.3/compilers/bin/nvc++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.8s)
-- Generating done (0.0s)
-- Build files have been written to: /home/lisanhu/mine/workspace/cmdb2/build
[lisanhu@lisanhu-xps-15 build]$ make foo-gpu
/usr/bin/cmake -S/home/lisanhu/mine/workspace/cmdb2 -B/home/lisanhu/mine/workspace/cmdb2/build --check-build-system CMakeFiles/Makefile.cmake 0
make -f CMakeFiles/Makefile2 foo-gpu
make[1]: Entering directory '/home/lisanhu/mine/workspace/cmdb2/build'
/usr/bin/cmake -S/home/lisanhu/mine/workspace/cmdb2 -B/home/lisanhu/mine/workspace/cmdb2/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/lisanhu/mine/workspace/cmdb2/build/CMakeFiles 2
make -f CMakeFiles/Makefile2 CMakeFiles/foo-gpu.dir/all
make[2]: Entering directory '/home/lisanhu/mine/workspace/cmdb2/build'
make -f CMakeFiles/foo-gpu.dir/build.make CMakeFiles/foo-gpu.dir/depend
make[3]: Entering directory '/home/lisanhu/mine/workspace/cmdb2/build'
cd /home/lisanhu/mine/workspace/cmdb2/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/lisanhu/mine/workspace/cmdb2 /home/lisanhu/mine/workspace/cmdb2 /home/lisanhu/mine/workspace/cmdb2/build /home/lisanhu/mine/workspace/cmdb2/build /home/lisanhu/mine/workspace/cmdb2/build/CMakeFiles/foo-gpu.dir/DependInfo.cmake --color=
make[3]: Leaving directory '/home/lisanhu/mine/workspace/cmdb2/build'
make -f CMakeFiles/foo-gpu.dir/build.make CMakeFiles/foo-gpu.dir/build
make[3]: Entering directory '/home/lisanhu/mine/workspace/cmdb2/build'
[ 50%] Building CXX object CMakeFiles/foo-gpu.dir/bindings.cc.o
/home/lisanhu/mine/program/nvhpc/Linux_x86_64/23.3/compilers/bin/nvc++ -O2 -gopt --c++17 --gnu_extensions -MD -MT CMakeFiles/foo-gpu.dir/bindings.cc.o -MF CMakeFiles/foo-gpu.dir/bindings.cc.o.d -o CMakeFiles/foo-gpu.dir/bindings.cc.o -c /home/lisanhu/mine/workspace/cmdb2/bindings.cc
"/usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits", line 3363: error: type name is not allowed
inline constexpr bool is_convertible_v = __is_convertible(_From, _To);
^
"/usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits", line 3363: error: type name is not allowed
inline constexpr bool is_convertible_v = __is_convertible(_From, _To);
^
"/usr/lib/gcc/x86_64-pc-linux-gnu/13.1.1/../../../../include/c++/13.1.1/type_traits", line 3363: error: identifier "__is_convertible" is undefined
inline constexpr bool is_convertible_v = __is_convertible(_From, _To);
^
"/usr/include/stdlib.h", line 141: error: identifier "_Float32" is undefined
extern _Float32 strtof32 (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 147: error: identifier "_Float64" is undefined
extern _Float64 strtof64 (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 153: error: identifier "_Float128" is undefined
extern _Float128 strtof128 (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 159: error: identifier "_Float32x" is undefined
extern _Float32x strtof32x (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 165: error: identifier "_Float64x" is undefined
extern _Float64x strtof64x (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 234: error: identifier "_Float32" is undefined
_Float32 __f)
^
"/usr/include/stdlib.h", line 240: error: identifier "_Float64" is undefined
_Float64 __f)
^
"/usr/include/stdlib.h", line 246: error: identifier "_Float128" is undefined
_Float128 __f)
^
"/usr/include/stdlib.h", line 252: error: identifier "_Float32x" is undefined
_Float32x __f)
^
"/usr/include/stdlib.h", line 258: error: identifier "_Float64x" is undefined
_Float64x __f)
^
"/usr/include/stdlib.h", line 317: error: identifier "_Float32" is undefined
extern _Float32 strtof32_l (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 324: error: identifier "_Float64" is undefined
extern _Float64 strtof64_l (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 331: error: identifier "_Float128" is undefined
extern _Float128 strtof128_l (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 338: error: identifier "_Float32x" is undefined
extern _Float32x strtof32x_l (const char *__restrict __nptr,
^
"/usr/include/stdlib.h", line 345: error: identifier "_Float64x" is undefined
extern _Float64x strtof64x_l (const char *__restrict __nptr,
^
18 errors detected in the compilation of "/home/lisanhu/mine/workspace/cmdb2/bindings.cc".
make[3]: *** [CMakeFiles/foo-gpu.dir/build.make:79: CMakeFiles/foo-gpu.dir/bindings.cc.o] Error 2
make[3]: Leaving directory '/home/lisanhu/mine/workspace/cmdb2/build'
make[2]: *** [CMakeFiles/Makefile2:88: CMakeFiles/foo-gpu.dir/all] Error 2
make[2]: Leaving directory '/home/lisanhu/mine/workspace/cmdb2/build'
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/foo-gpu.dir/rule] Error 2
make[1]: Leaving directory '/home/lisanhu/mine/workspace/cmdb2/build'
make: *** [Makefile:172: foo-gpu] Error 2