首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CUDA编译Windows上的问题,Cmake错误:没有找到CUDA工具集

CUDA编译Windows上的问题,Cmake错误:没有找到CUDA工具集
EN

Stack Overflow用户
提问于 2019-06-17 18:09:36
回答 5查看 19.7K关注 0票数 7

所以我已经成功地在我的Linux上完成了我的CUDA程序,但是我也想支持Windows平台。然而,我一直在为正确地编译它而奋斗。我用:

  • Windows 10
  • Cmake 3.15
  • 2017
  • CUDA工具包10.1

当使用旧的Cmake支持使用find_package(CUDA 10.1 REQUIRED)时,它正确地报告了工具包使用时的正确路径。然而,我的理解是,最新的Cmake不再正确地支持旧的方法,并且cuda_add_library等不再正确地链接。因此,我将我的“CMakeLists.txt”文件重新格式化为以下基于的文件

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(myproject LANGUAGES CXX CUDA)

add_library(mylib SHARED mycudalib.cu)

# My code requires C++ 11 for the CUDA library, not sure which ones of these 
# will do the trick correctly. Never got the compiler this far.
target_compile_features(mylib PUBLIC cxx_std_11)
SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CUDA_STANDARD 11)    


set_target_properties( mylib PROPERTIES CUDA_SEPARABLE_COMPILATION ON)

add_executable(test_mylib test.cpp)

target_link_libraries(test_mylib mylib ${CUDA_CUFFT_LIBRARIES})

但是,我从第2行得到以下错误:

代码语言:javascript
运行
复制
CMake Error at C:/Program Files/CMake/share/cmake-3.15/Modules/CMakeDetermineCompilerId.cmake:345 (message):
  No CUDA toolset found.
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.15/Modules/CMakeDetermineCompilerId.cmake:32 (CMAKE_DETERMINE_COMPILER_ID_BUILD)
  C:/Program Files/CMake/share/cmake-3.15/Modules/CMakeDetermineCUDACompiler.cmake:72 (CMAKE_DETERMINE_COMPILER_ID)
  CMakeLists.txt:2 (project)

我在网上尝试了各种建议,例如在“CMakeLists.txt”中添加以下内容:

代码语言:javascript
运行
复制
set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/bin/nvcc")

或向Cmake添加以下变量:

这是我在Linux上使用的“CMakeLists.txt”文件,可以成功地编译。不同之处在于我使用了Cmake3.5和CUDA工具包9.0:

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.5)
project( myproject)
find_package(CUDA 9.0 REQUIRED)
if(CUDA_FOUND)  
        list(APPEND CUDA_NVCC_FLAGS "-std=c++11")
endif(CUDA_FOUND)

cuda_add_library(mylib SHARED mycudalib.cu)
cuda_add_executable(test_mylib test.cpp)
target_link_libraries(test_mylib mylib ${CUDA_CUFFT_LIBRARIES})
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-06-19 10:53:28

我已经在另一台电脑上试过了,它工作得很好。所以我完全不知道为什么这件事不管用。因为在我的系统变量中正确设置了CUDA_PATH。

然后进一步研究,通过卸载Visual的“Build”,并且只安装Community,CMake使用了IDE而不是构建工具,然后它开始正常工作。

票数 5
EN

Stack Overflow用户

发布于 2021-06-24 18:16:37

对于Windows 10、VS2019社区和CUDA 11.3,以下内容对我起了作用:

  1. 使用7-zip或WinZip解压完整安装包。
  2. 将此解压缩目录.\visual_studio_integration\CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions中的四个文件复制到VS2019安装C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations的MSBuild文件夹中

这四个档案是:

  • CUDA 11.3.道具
  • CUDA 11.3.目标
  • CUDA 11.3.xml
  • Nvda.Build.CudaTasks.v11.3.dll

我尝试过用Visual安装(并重新安装) CUDA,但是CMake无法找到CUDA安装(即使定义了CUDA_PATH和CMAKE_CUDA_COMPILER )。

票数 9
EN

Stack Overflow用户

发布于 2019-06-24 11:50:16

看看这个。它可以解决你的问题。https://gitlab.kitware.com/cmake/cmake/issues/19029

似乎Nvidia cuda安装程序在安装VS 2017与vs集成方面存在一些问题。检查是否可以在vs安装路径中找到此文件。

代码语言:javascript
运行
复制
C:/Program Files (x86)/Microsoft Visual 
Studio/2017/Professional/Common7/IDE/VC/VCTargets/BuildCustomizations/CUDA 
10.1.xml
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56636714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档