cuda - CMake:如何将 cuda 添加到现有项目

标签 cuda cmake

我有一个构建库的项目,我想为其添加一些 cuda 支持。

结构是:

|基址
|_subdir1
|_subdir2

CMakeLists.txt 文件的基本结构:(subdir2 不重要)。
在Basedir中:

cmake_minimum_required(VERSION 2.6)
PROJECT(myproject)
find_package(CUDA)
INCLUDE_DIRECTORIES(${MYPROJECT_SOURCE_DIR})
ADD_SUBDIRECTORY(subdir1)
ADD_SUBDIRECTORY(subdir2)

在子目录 1 中:
ADD_LIBRARY(mylib shared
    file1.cpp
    file2.cpp
    file3.cpp
)

INSTALL(
TARGETS mylib
DESTINATION lib
PERMISSIONS
    OWNER_READ OWNER_WRITE OWNER_EXECUTE
    GROUP_READ GROUP_EXECUTE
    WORLD_READ WORLD_EXECUTE
)

FILE(GLOB_RECURSE HEADERS RELATIVE ${MYPROJECT_SOURCE_DIR}/myproject *.h)

FOREACH(HEADER ${HEADERS})
    STRING(REGEX MATCH "(.*)[/\\]" DIR ${HEADER})
    INSTALL(FILES ${HEADER} DESTINATION include/myproject/${DIR})
ENDFOREACH(HEADER)

我实际上真的不知道如何将 cuda 支持放入其中。我想用 file2.cu 替换 file2.cpp 并且我做到了,但它没有构建 .cu 文件,只有 cpp 文件。

我是否必须添加 CUDA_ADD_EXECUTABLE() 以包含任何 cuda 文件?然后我将如何将其链接到其他文件?

我尝试将以下内容添加到 subdir1 中的 CMakeLists.txt:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)

这将编译文件,但会构建一个可执行的 cuda。我如何将它链接到 mylib?
只是与?:
TARGET_LINK_LIBRARIES(cuda mylib)

我不得不承认我在 cmake 方面没有经验,但我想你已经想到了。

最佳答案

您可以使用 CUDA_ADD_LIBRARYmylib项目。它的作用是 CUDA_ADD_EXECUTABLE但对于图书馆。

CUDA_ADD_LIBRARY(mylib SHARED
    file1.cpp
    file2.cu
    file3.cpp
    OPTIONS -arch sm_20
)

TARGET_LINK_LIBRARIES(mylib ${CUDA_LIBRARIES})

关于cuda - CMake:如何将 cuda 添加到现有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273760/

相关文章:

linux - 了解 cuobjdump 输出

c++ - 结构的 cudaMalloc 和相同结构的元素

CMake SET 命令未按预期工作(CMake 未设置预定义缓存变量的值)

c++ - Cmake 错误 : variables NOTFOUND when configuring or building openpose on windows 10

macos - 如何向 CMake 添加框架

cuda - 每 block 最大线程数与共享内存大小

cuda - 使用 CUDA Profiler nvprof 进行内存访问

cuda - 我应该如何解释这个 CUDA 错误?

c++ - 使用 CMake 为 Fedora 23 构建 SFML 时出错 [xcb-image not found]

python - 使用pip_pypy3安装pyarrow时出现 "Could NOT find Arrow"错误