c++ - CMake + 库达 : compile cpp files in Cuda-mode (--x=cu)

标签 c++ cuda cmake

假设我有一个文件,我们称它为 foo.cpp,我的目标是在 cuda 模式下用 nvcc 编译这个文件。在命令行中,这可以通过调用轻松完成:

nvcc --x=cu foo.cpp

我正在苦苦挣扎的是让 CMake 做同样的事情。事实证明,CMake 命令 cuda_add_executable(foo foo.cpp) 将过滤 *.cpp 文件并使用 c++ 编译器(而不是 nvcc)。

请注意,将所有文件重命名为 *.cu 不是一种选择,因为代码库还必须支持非 cuda 构建。

最佳答案

FindCUDA source code我找到了一个选项来为特定的非 .cu 文件激活 CUDA 编译。尽管似乎缺少文档(在源代码之外)。

您可以在每个文件级别上设置 CUDA 编译

set_source_files_properties( foo.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ )

CMAKE 3.3 或更高版本。

其余照常工作:

cuda_add_executable(foo foo.cpp)

实际上,我希望有一个简单的解决方案,比如使用 CUDA_NVCC_FLAGScuda_add_executable( ... OPTIONS --x=cu ) 来传递 - -x=cu 标志。不幸的是,它不起作用。原因可能是该级别的设置范围没有用,因为它会影响所有文件。

关于c++ - CMake + 库达 : compile cpp files in Cuda-mode (--x=cu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36021233/

相关文章:

c - 使用 libxdo 时,它会引发 "error: unknown type name ‘useconds_t’“

c++ - 避免使用带有默认参数的类模板的括号

c++ - 如何在没有额外拷贝的情况下从 std::map 安全地获取 "pop-front"?

ubuntu - CMake:错误的构建目标目录

c++ - 使用 CMake 未定义对 SDL 的引用

cuda - 如何使 pytorch 中的 cuda 不可用

c++ - 如何从 Qt Creator GUI 中的 QLineEdit 获取输入?

c++ - C数据库线程安全

c - CUDA 内联汇编从 GAS 到 Intel 的翻译

c++ - CUDA block 级并行原语