我想在使用cmake构建系统的现有C ++代码库中添加cuda代码。我在NVIDIA上发现了一篇文章(下面的链接),它完全展示了如何使用make build。我是cmake构建系统的新手,但我通过阅读和试验本网站上其他链接的内容进行了很好的尝试。到目前为止没有成功!有人对此有所了解吗?如果是,那么请指导我。
https://devblogs.nvidia.com/separate-compilation-linking-cuda-device-code/
这是我的CMakeLists.txt文件
cmake_minimum_required(VERSION 3.5.1)
message(STATUS "CMake version: ${CMAKE_VERSION}")
project(CUDAwithC)
find_package(CUDA 9.1 REQUIRED)
INCLUDE(FindCUDA)
INCLUDE_DIRECTORIES(/usr/local/cuda-9.1/include include)
set(SOURCE_FILES src/app.cpp src/particle.cpp src/v3.cpp)
cuda_add_executable(
tee ${SOURCE_FILES}
)
set(
CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS};
-x cu -gencode -arch=compute_20 -dc
)
target_link_libraries(
tee /usr/local/cuda/lib64/libcudart.so
)
答案 0 :(得分:1)
查看错误消息会有所帮助。
只需查看代码,而不是指定库路径,请使用$ {CUDA_LIBRARIES}。
转储flags部分并使用cuda_add_executable的OPTIONS参数传递-arch标志。
不要使用include_directories(最佳做法),而是使用target_include_directories并传递$ {CUDA_INCLUDE_DIRS}。你不应该这样做,因为cuda_add_executable会为你做这件事(据报道)。
启用compile_commands.json以查看构建系统正在尝试执行的操作很有帮助。
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
还值得通过FindCUDA.cmake阅读以了解它提供的内容。
/usr/share/cmake-3.10/Modules/FindCUDA.cmake