3

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

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 架构的标志,但我找不到相关文档。GCC 中的卸载支持:编译选项没有 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.

任何线索或相关链接将不胜感激。

4

0 回答 0