使用cmake构建CUDA目标文件

16
我有以下的设置。我将使用CUDA扩展用MPI等其他东西编写的C++框架。该项目使用cmake进行构建。我想避免使用库来进行扩展,并从我的CUDA源文件构建对象文件。之后,我想链接这些对象文件和其他使用其他编译器编译的文件。 有人知道如何实现吗?
我查看了http://code.google.com/p/cudpp/wiki/BuildingCUDPPwithCMake以获取有关如何使用cmake与CUDA的概述,但是此解决方案也使用库。

2
OpenCV库具有使用CUDA加速的GPU模块。主要方法是使用CUDA_COMPILE CMake宏编译cuda文件,然后将对象文件添加到ADD_EXECUTABLE或ADD_LIBRARY中。请参见OpenCV - geek
1个回答

28

使用较新版本的cmake自带的CUDA支持,可以编译对象文件。您可以使用cuda_compile命令。请参见下文。

# CMakeLists.txt for G4CU project                                                                                                                                                                          
project(test-cuda-thrust-gdb)

# required cmake version                                                                                                                                                                                   
cmake_minimum_required(VERSION 2.8)

# packages                                                                                                                                                                                                 
find_package(CUDA)

# nvcc flags                                                                                                                                                                                               
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_20,code=sm_20)

cuda_compile(HELPER_O helper.cu)
cuda_compile(DRIVER_O driver.cu OPTIONS -G)

cuda_add_executable(driver ${HELPER_O} ${DRIVER_O})

如果需要更多信息,请查看FindCUDA.cmake文件。


谢谢你的回答。我最终决定选择库版本,无论如何还是谢谢你。 - soriak
这个回答已经非常过时了。现在(CMake 3.18及更高版本),CUDA可以像CXX一样在CMake中作为语言使用。因此,没有必要使用cuda_compile等命令。取而代之的是,将“find_package(CUDA)”替换为“find_package(CUDAToolkit)”,以链接到CUDA运行时和库。架构可以通过“CMAKE_CUDA_ARCHITECTURES”指定。 - paleonix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接