Gcc卸载编译选项

问题描述

我正在尝试使用gcc-10,Ubuntu 18.04上的CUDA 11和此CMakeLists.txt文件(或OpenMP版本)来构建最简单的带有GPU卸载功能的OpenMP或OpenACC C ++程序:

cmake_minimum_required(VERSION 3.18)
project(hello VERSION 0.1.0)
find_package(OpenACC required)
add_executable(hello main.cpp)
target_compile_options(hello PRIVATE -O3 -fopenacc -foffload=nvptx-none)
target_link_libraries (hello OpenACC::OpenACC_CXX)

构建失败并显示

[build] [100%] Linking CXX executable hello
[build] /usr/local/bin/cmake -E cmake_link_script CMakeFiles/hello.dir/link.txt --verbose=1
[build] /usr/bin/g++-10 -O3 -DNDEBUG -fopenacc CMakeFiles/hello.dir/main.cpp.o -o hello 
[build] ptxas fatal   : Value 'sm_30' is not defined for option 'gpu-name'
[build] nvptx-as: ptxas returned 255 exit status
[build] mkoffload: Fatal error: /usr/bin/x86_64-linux-gnu-accel-nvptx-none-gcc-10 returned 1 exit status
[build] compilation terminated.

我怀疑缺少定义GPU架构的标志,但找不到相关文档。 Offloading Support in GCC: Compilation options没有Nvidia的例子,当我尽力猜测-foffload="-arch=sm_75"-foffload=nvidia-"-arch=sm_75"时,我得到:

[build] [ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.o
[build] /usr/local/bin/cmake -E time /usr/bin/g++-10 -DFMT_LOCALE -O3 -DNDEBUG -O3 -fopenacc -foffload=nvptx-none -foffload=\"-arch=sm_75\" -std=gnu++2a -o CMakeFiles/hello.dir/main.cpp.o -c /home/paul/st/hello/main.cpp
[build] g++-10: Fatal error: GCC is not configured to support "-arch as offload target
[build] compilation terminated.

任何线索或相关链接将受到高度赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)