Проблемы компиляции CUDA в Windows, ошибка Cmake: набор инструментов CUDA не найденC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы компиляции CUDA в Windows, ошибка Cmake: набор инструментов CUDA не найден

Сообщение Anonymous »

Итак, я успешно работаю над своей программой CUDA на своем Linux, но мне бы хотелось поддерживать и платформу Windows. Однако я изо всех сил пытался его правильно скомпилировать. Я использую:
  • Windows 10
  • Cmake 3.15
  • Visual Studio 2017
  • CUDA Toolkit 10.1
При использовании старой устаревшей поддержки Cmake CUDA используя 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 следующую переменную:
Изображение


Это файл «CMakeLists.txt», который я использую в Linux для успешной компиляции. Разница в том, что я использую Cmake 3.5 и CUDA Toolkit 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})


Подробнее здесь: https://stackoverflow.com/questions/566 ... lset-found
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»