Как найти и связать библиотеки CUDA с помощью CMake 3.15 и более поздних версий?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как найти и связать библиотеки CUDA с помощью CMake 3.15 и более поздних версий?

Сообщение Anonymous »

Я использую CMake 3.15-rc3 в своей Unix-подобной системе.
Мне нужно связать программу, которую я создаю, с несколькими библиотеками CUDA, включая cublas code>, cufft, cusolver, curand, nppicc, nppial, nppist, nppidei, nppig, nppitc, npps.
Исходя из того, что я нашел в Интернете, мне нужно сделать что-то вроде этого:

Код: Выделить всё

add_executable(test benchmark.cpp)
find_package(CUDALibs)
target_link_libraries(test CUDA::cudart CUDA::cublas CUDA::cufft CUDA::cusolver CUDA::curand CUDA::nppicc CUDA::nppial CUDA::nppist CUDA::nppidei CUDA::nppig CUDA::nppitc CUDA::npps)
Когда я запускаю make, я получаю следующую ошибку:

Код: Выделить всё

CMake Warning at CMakeLists.txt:27 (find_package):
By not providing "FindCUDALibs.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "CUDALibs",
but CMake did not find one.

Could not find a package configuration file provided by "CUDALibs" with any
of the following names:

CUDALibsConfig.cmake
cudalibs-config.cmake

Add the installation prefix of "CUDALibs" to CMAKE_PREFIX_PATH or set
"CUDALibs_DIR" to a directory containing one of the above files.  If
"CUDALibs" provides a separate development package or SDK, be sure it has
been installed.

Похоже, мне нужен файл CUDALibsConfig.cmake. Где мне взять этот файл и как указать cmake, чтобы он использовал его?
Если я использую следующее, это работает:

Код: Выделить всё

find_package(CUDA REQUIRED)
target_link_libraries(run_benchmarks tf libmxnet.so ${CUDA_LIBRARIES} ${CUDA_cusparse_LIBRARY} ${CUDA_cublas_LIBRARY} ${CUDA_npp_LIBRARY})

Но согласно этому find_package(cuda) устарел, поэтому я хочу научиться правильному использованию.
Изменить
Я попробовал то, что было предложено в одном из ответов.
Я добавил CUDA в проект LANGUAGES:

Код: Выделить всё

project(
test_project
DESCRIPTION "Test project"
LANGUAGES CXX CUDA
)
А затем я использовал find_package (ТРЕБУЕТСЯ FindCUDAToolkit)
Однако при запуске cmake я получаю следующие ошибки:

Код: Выделить всё

 nchafni   dev  …  sample_code  benchmarks  build  1  cmake ..
-- The CXX compiler identification is GNU 7.5.0
-- The CUDA compiler identification is NVIDIA 10.1.243
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working CUDA compiler: /usr/local/cuda-10.1/bin/nvcc
-- Check for working CUDA compiler: /usr/local/cuda-10.1/bin/nvcc -- works
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
CMake Error at CMakeLists.txt:17 (find_package):
By not providing "FindFindCUDAToolkit.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"FindCUDAToolkit", but CMake did not find one.

Could not find a package configuration file provided by "FindCUDAToolkit"
with any of the following names:

FindCUDAToolkitConfig.cmake
findcudatoolkit-config.cmake

Add the installation prefix of "FindCUDAToolkit" to CMAKE_PREFIX_PATH or
set "FindCUDAToolkit_DIR" to a directory containing one of the above files.
If "FindCUDAToolkit" provides a separate development package or SDK, be
sure it has been installed.

-- Configuring incomplete, errors occurred!

Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/663 ... -and-later
Ответить

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

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

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

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

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