所以我已经成功地在我的Linux上完成了我的CUDA程序,但是我也想支持Windows平台。然而,我一直在为正确地编译它而奋斗。我用:
当使用旧的Cmake支持使用find_package(CUDA 10.1 REQUIRED)
时,它正确地报告了工具包使用时的正确路径。然而,我的理解是,最新的Cmake不再正确地支持旧的方法,并且cuda_add_library
等不再正确地链接。因此,我将我的“CMakeLists.txt”文件重新格式化为以下基于这的文件
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行得到以下错误:
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”中添加以下内容:
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:
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})
发布于 2019-06-19 10:53:28
我已经在另一台电脑上试过了,它工作得很好。所以我完全不知道为什么这件事不管用。因为在我的系统变量中正确设置了CUDA_PATH。
然后进一步研究,通过卸载Visual的“Build”,并且只安装Community,CMake使用了IDE而不是构建工具,然后它开始正常工作。
发布于 2021-06-24 18:16:37
对于Windows 10、VS2019社区和CUDA 11.3,以下内容对我起了作用:
.\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文件夹中这四个档案是:
我尝试过用Visual安装(并重新安装) CUDA,但是CMake无法找到CUDA安装(即使定义了CUDA_PATH和CMAKE_CUDA_COMPILER )。
发布于 2019-06-24 11:50:16
看看这个。它可以解决你的问题。https://gitlab.kitware.com/cmake/cmake/issues/19029
似乎Nvidia cuda安装程序在安装VS 2017与vs集成方面存在一些问题。检查是否可以在vs安装路径中找到此文件。
C:/Program Files (x86)/Microsoft Visual
Studio/2017/Professional/Common7/IDE/VC/VCTargets/BuildCustomizations/CUDA
10.1.xml
https://stackoverflow.com/questions/56636714
复制相似问题