配置CMake以在Windows上设置CUDA

时间:2011-05-02 12:06:41

标签: visual-studio cuda cmake

我正在尝试使用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()

我希望了解一些问题。

当我打开解决方案文件(Hello.sln)时,我没有看到任何项目的自定义构建规则设置(右键单击Project - > Custom build rules)

我确实在Visual Studio中看到了一个“Hello_generated_hello.cu.obj”添加到我的项目中。这个文件是什么?为什么它被添加到项目中?

默认情况下,CUDA Runtime API部分不属于项目属性。

如果我启用了适当的自定义构建规则(NvCudaRuntimeApi.rules),我现在可以看到CUDA运行时API部分。如果我现在转到GPU子部分,我看到GPU架构仍然设置为sm_10。

即使我使用CUDA_INCLUDE_DIRECTORIES()宏为CUDA编译添加一些目录,我也不会在Project Properties中看到这些设置 - > CUDA Runtime API - >一般 - >附加包含目录。

我想知道FindCUDA()包是否能够为基于CUDA的编译正确配置VS 2005项目。可能我需要指定其他选项来正确配置项目。我当然希望知道这一点。我希望确保通过CMakeLists文件指定的任何选项,我应该能够在我生成的VS 2005项目中轻松查看它们。

配置此方法的适当方法是什么?

1 个答案:

答案 0 :(得分:4)

CMake不支持自定义构建规则(如CUDA运行时API .rules文件),因此如果使用CMake配置项目,则无法编辑.rules文件提供的CUDA属性表。但是,您可以直接在生成项目的CMakeLists.txt中设置任何CUDA设置,重建项目将检测这些更改并自动重新生成和重新加载项目文件。

FindCUDA的另一个好处(除了跨平台)是正确的依赖性分析,因此您永远不会像在Visual Studio中使用CUDA .cu文件时那样通常会使用过时的构建(有或没有.rules文件)。

您可以在以下文件中找到在CUDPP项目中使用CMake with CUDA的示例:

希望有所帮助。