【发布时间】:2021-12-30 15:06:33
【问题描述】:
我在ttt.cu 中有一个简单的 cuda 代码
#include <iostream>
__global__ void example(){
printf("__CUDA_ARCH__: %d \n", __CUDA_ARCH__);
}
int main(){
example<<<1,1>>>();
}
使用 CMakeLists.txt:
cmake_minimum_required(VERSION 3.18)
project(Hello)
find_package(CUDA REQUIRED)
cuda_add_executable(sss ttt.cu)
然后我得到了错误:identifier "__CUDA_ARCH__" is undefined。我想知道为什么会发生这种情况,我应该怎么做才能使__CUDA_ARCH__ 有效?我们可以在标题.h 文件中的主机代码中使用有效的__CUDA_ARCH__ 吗?
更新:
我打算使用以下 cmake 来生成 750 cuda 拱门,但是,这总是导致 __CUDA_ARCH__ = 300(2080 ti 与 cuda 10.1)。我尝试了set_property 和target_compile_options,都失败了。
cmake_minimum_required(VERSION 3.18)
project(Hello)
find_package(CUDA REQUIRED)
cuda_add_executable(oounne ttt.cu)
set_property(TARGET oounne PROPERTY CUDA_ARCHITECTURES 75)
#target_compile_options(oounne PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-gencode
arch=compute_75,code=sm_75>)
【问题讨论】:
标签: c++ cmake compilation cuda cuda-gdb