假设我有一个文件,让我们调用它foo.cpp,我的目标是在cuda模式下用nvcc编译这个文件.从命令行可以通过调用来轻松完成:
nvcc --x=cu foo.cpp
我正在努力的是让CMake做同样的事情.事实证明,CMake命令cuda_add_executable(foo foo.cpp)将过滤*.cpp文件并使用c ++编译器(而不是nvcc).
请注意,将所有文件重命名为*.cu不是一个选项,因为代码库也必须支持非cuda构建.
在FindCUDA源代码中,我找到了一个激活特定非.cu文件的CUDA编译的选项.虽然看起来缺乏文档(源代码之外).
您可以在每个文件级别设置CUDA编译
set_source_files_properties( foo.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ )
Run Code Online (Sandbox Code Playgroud)
在CMAKE 3.3或更高版本中.
其余的照常工作:
cuda_add_executable(foo foo.cpp)
Run Code Online (Sandbox Code Playgroud)
实际上,我预计应该有一个简单的解决方案,比如使用CUDA_NVCC_FLAGS或cuda_add_executable( ... OPTIONS --x=cu )传递--x=cu旗帜.不幸的是,它不起作用.原因可能是该级别的设置范围不大,因为它会影响所有文件.
| 归档时间: |
|
| 查看次数: |
1348 次 |
| 最近记录: |