Sha*_*mar 5 cuda cmake visual-studio
我正在尝试使用CMake在Windows上编译基于CUDA的应用程序(Visual Studio 2005).这是一个剥离CMake文件的示例:
cmake_minimum_required (VERSION 2.6)
project (HELLO)
#Support for CUDA Integration
FIND_PACKAGE(CUDA)
if(CUDA_FOUND)
SET(CUDA_NVCC_FLAGS "-arch;sm_13")
CUDA_ADD_EXECUTABLE(Hello hello.cu)
else(CUDA_FOUND)
message("CUDA is not installed on this system.")
endif()
Run Code Online (Sandbox Code Playgroud)
我希望通过这个问题了解一些问题.
当我打开解决方案文件(Hello.sln)时,我没有看到任何项目的自定义构建规则设置(右键单击项目 - >自定义构建规则)
我确实在Visual Studio中看到了一个"Hello_generated_hello.cu.obj"添加到我的项目中.这个文件是什么?为什么它被添加到项目中?
默认情况下,CUDA Runtime API部分不在Project属性中.
如果我启用了适当的自定义构建规则(NvCudaRuntimeApi.rules),我现在可以看到CUDA运行时API部分.如果我现在转到GPU子部分,我看到GPU架构仍然设置为sm_10.
即使我使用CUDA_INCLUDE_DIRECTORIES()宏为CUDA编译添加一些目录,我也不会在Project Properties - > CUDA Runtime API - > General - > Additional Include Directories中看到这些设置.
我想知道FindCUDA()包是否能够正确配置VS 2005项目以进行基于CUDA的编译.可能我需要指定其他选项来正确配置项目.我当然希望知道这一点.我希望确保通过CMakeLists文件指定的任何选项,我应该能够在我生成的VS 2005项目中轻松查看它们.
什么是适当的配置方式?
CMake 不支持自定义构建规则(如 CUDA 运行时 API .rules 文件),因此,如果您使用 CMake 配置项目,则无法编辑 .rules 文件提供的 CUDA 属性表。但是,您可以直接在生成项目的 CMakeLists.txt 中设置任何 CUDA 设置,重建项目将检测这些更改并自动重新生成和重新加载项目文件。
FindCUDA 的额外好处(除了跨平台之外)是正确的依赖性分析,这样您就不会像在 Visual Studio 中使用 CUDA .cu 文件(带或不带 .rules 文件)时通常那样以过时的构建结束。
您可以在以下文件中的 CUDPP 项目中找到将 CMake 与 CUDA 结合使用的示例:
希望有帮助。