CUDA教程 | 如何用CMake编译CUDA代码

技术

编译CUDA代码可以使用NVCC工具直接在命令行输入命令进行编译,比如:


        
          
nvcc cuda_test.cu -o cuda_test  

      

但是这种方法只适合用来编译只有几个文件的CUDA代码,大规模的工程代码一般都使用CMake工具进行管理。本文介绍2种使用CMake编译CUDA代码的方法。

之前写了几篇介绍CUDA编程的文章,后续有时间再继续写。

CUDA编程01: 搭建CUDA编程环境

CUDA编程02: 初识CUDA编程

CUDA编程03:线程层级

CUDA编程04:CUDA内存模型

CUDA编程05:流和事件

1. 使用find_package

如果CMake的版本小于3.10,可以在CMakeLists.txt文件中使用find_package来导入CUDA包,然后就可以使用cuda_add_executable()或者cuda_add_library()来编译CUDA可执行文件或者库文件了。


        
          
cmake_minimum_required(VERSION 3.8)  
project(CUDA_TEST)  
  
find_package(CUDA REQUIRED)  
  
message(STATUS "cuda version: " ${CUDA_VERSION_STRING})  
include_directories(${CUDA_INCLUDE_DIRS})  
  
cuda_add_executable(cuda_test cuda_test.cu)  
target_link_libraries(cuda_test ${CUDA_LIBRARIES})  

      

其中变量CUDA_VERSION_STRING表示CUDA的版本号,CUDA_INCLUDE_DIRS表示CUDA头文件存放的目录,CUDA_LIBRARIES表示CUDA的库文件。更多说明可以参考CMake的官方文档:


        
          
https://cmake.org/cmake/help/latest/module/FindCUDA.html  

      

CMakeLists.txt写好后,执行下面的命令就可以编译出可执行文件:


        
          
mkdir build && cd build  
cmake ..  
make  

      

2.添加CUDA编程语言支持

3.10及以上版本的CMake中,find_package的方式已经被弃用(可以用但不推荐),要编译CUDA代码可以CMakeLists.txt文件中添加对CUDA编程语言的支持。如果程序中CUDA代码是可选的,那么可以在CMakeLists.txt文件中使用下面的语句进行使能:


        
          
enable_language(CUDA)  

      

如果CUDA代码是必须的,那么就需要像下面这样进行设置,表示在项目CUDA_TEST中要用到CUDAC++两种编程语言:


        
          
project(CUDA_TEST LANGUAGES CUDA CXX)  

      

可以通过CheckLanuage判断CUDA是否可用


        
          
include(CheckLanguage)  
check_language(CUDA)  

      

然后就可以跟编译普通C++代码一样用add_executable编译可执行文件了:


        
          
cmake_minimum_required(VERSION 3.10)  
project(CUDA_TEST LANGUAGES CUDA CXX)  
  
include(CheckLanguage)  
check_language(CUDA)  
  
add_executable(cuda_test cuda_test.cu)  

      

参考资料

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎音视频体验白皮书
火山引擎联合AMD发布了音视频体验白皮书,以抖音亿级日活用户实践和大规模场景落地经验,详细解读音视频体验评估指标和模型,分享火山引擎音视频实验室的评测方案和抖音在音视频体验优化上的典型策略、案例,助力企业优化用户体验,促进业务增长。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论