使用cmake编译cuda指定cuda架构
Specify the cuda architecture by using cmake for cuda compilation
我有以下用于生成 750 cuda arch 的 cmake 和 cuda 代码,但是,这总是导致 CUDA_ARCH = 300(2080 ti with cuda 10.1 ). set_property
和 target_compile_options
我都试过了,都失败了。 cuda_add_executable
和 cuda_add_library
在这种情况下,我们是否有解决方案以使 -gencode
部分有效?
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>)
#include <cstdio>
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
__device__ void print_arch(){
const char my_compile_time_arch[] = STR(__CUDA_ARCH__);
printf("__CUDA_ARCH__: %s\n", my_compile_time_arch);
}
__global__ void example()
{
print_arch();
}
int main(){
example<<<1,1>>>();
cudaDeviceSynchronize();
}
将我的评论更改为答案:
project(Hello CUDA)
enable_language(CUDA)
set_property(TARGET oounne PROPERTY CUDA_ARCHITECTURES 75)
我有以下用于生成 750 cuda arch 的 cmake 和 cuda 代码,但是,这总是导致 CUDA_ARCH = 300(2080 ti with cuda 10.1 ). set_property
和 target_compile_options
我都试过了,都失败了。 cuda_add_executable
和 cuda_add_library
在这种情况下,我们是否有解决方案以使 -gencode
部分有效?
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>)
#include <cstdio>
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
__device__ void print_arch(){
const char my_compile_time_arch[] = STR(__CUDA_ARCH__);
printf("__CUDA_ARCH__: %s\n", my_compile_time_arch);
}
__global__ void example()
{
print_arch();
}
int main(){
example<<<1,1>>>();
cudaDeviceSynchronize();
}
将我的评论更改为答案:
project(Hello CUDA)
enable_language(CUDA)
set_property(TARGET oounne PROPERTY CUDA_ARCHITECTURES 75)