使用CMake构建CUDA

3
我正在尝试使用在线找到的Cuda v8.0编译现有的CMake项目。为此,我使用CMake GUI版本。(我目前正在运行Windows 10,并使用Visual Studio 2017)。"配置"步骤总是给我以下错误消息:

找不到任何CMAKE_CUDA_COMPILER。

我已经安装了cuda 8.0(以及其他从路径中删除的Cuda版本),CuDNN也在我的路径中。我希望在某些时候生成可以用来编译项目的Visual Studio项目文件...
这可能会导致哪些错误?

编辑

根据请求,我上传了CMakeOutput.log:https://framabin.org/?c532b10d2a4aef54#NkJZItfUfPwMP6BHCiP5DhQS40duM4AhsKR+bWHN0tE=

请提供您正在使用的简短的 CMakeLists.txt 文件,期望它能够正常工作,但实际上却没有。这样我们可能就能够发表评论了。另外,请问您正在使用哪个版本的 CMake? - einpoklum
我正在使用cmake 3.11.1。但是CMakelist不是我的(我对cmake不太熟悉)。 - Emile D.
你收到的错误信息很奇怪,因为你链接的文件中并没有提到那个变量(CMAKE_CUDA_COMPILER),而且 CMake 本身似乎也没有使用它。当你最初运行 cmake 时,它会生成文件 CMakeFiles/CMakeOutput.logCMakeFiles/CMakeError.log。你能否将它们上传到某个地方并提供链接? - einpoklum
1
@EmileD。我在你的输出中看到了以下行:nvcc fatal : 32 bit compilation is only supported for Microsoft Visual Studio 2013 and earlier。你可以尝试切换到VS2013。 - Raul Laasner
1
我认为错误来自于CUDA而不是CMake。它由c:\program files\nvidia gpu computing toolkit\cuda\v9.1\include\crt/host_config.h中的#if _MSC_VER < 1600 || _MSC_VER > 1911触发。您可以尝试查找您的VS版本并查看是否存在不匹配。如果您想使用不同版本的CUDA,只需将CMAKE_CUDA_COMPILER指向正确的路径即可。 - Raul Laasner
显示剩余8条评论
2个回答

2

好的!在@raul-laasner的帮助下,我认为我解决了我的问题!

  1. 首先,我的Cuda版本没有被正确识别。而且我不确定此时是否找到了一个版本。我的环境变量可能也被忽略了。我必须将CMAKE_CUDA_COMPILER选项指定为"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/bin/nvcc.exe"。
  2. 然后,问题是我使用了太新的Visual Studio版本。首先,Cuda v8.0与Visual Studio 2017不兼容:Cuda 8.0 with Visual Studio 2017。但即使使用最新版本的Cuda,我的Visual Studio也太新了。这意味着:当涉及到Visual Studio版本时,NVIDIA落后于时代...现在,微软计划在大多数升级中更新_MSC_VER。因此,我有两个选择:

    • 将Visual Studio降级到兼容版本。
    • 使用更高版本的Cuda(9.2),并修改c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.h以更改_MSC_VER验证的上限。

通过执行第二个选项,我成功配置和编译了项目。虽然我不确定这种"hacky"方式是否会在以后出现问题。但至少,我已经迈出了更进一步的一步!


0
对我来说,这个问题是由于nvcc(x64版本)不支持x86平台而引起的,并通过为cmake指定平台来解决。
$build> cmake .. -G"Visual Studio 15 2017 Win64"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接