Мы начинаем работу над проектом CUDA / C ++.Мы используем несколько машин разработки под управлением Windows и Linux, а также несколько серверов CI.У нас есть проект CMake, а также предварительно заданный локальный каталог для предварительно скомпилированных сторонних библиотек (например, C:\thirdparty
).
Мой вопрос: есть ли способ просто скопировать nvcc.exe
и связанные двоичные файлы в этот сторонний каталог?Или каждый разработчик и сборочная машина должны запускать установщик CUDA?
Я следил за этой записью в блоге: https://devblogs.nvidia.com/building-cuda-applications-cmake/
Их решение сработало для меня после локальной установки CUDA,Однако не похоже, что вы можете переместить двоичные файлы nvcc из их расположения установки по умолчанию и при этом все собрать.Я скопировал C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
в C:\thirdparty\CUDA\10.0.
Затем я позвонил set(CMAKE_CUDA_COMPILER "C:/thirdparty/CUDA/10.0/bin/nvcc.exe")
в моем CMakeLists.txt
.Сбой CMake:
AddCudaCompileDeps:
C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.15.26726 \ bin \HostX86 \ x64 \ cl.exe / E / nologo / showIncludes / TP / D__CUDACC__ / DCMAKE_INTDIR = "Debug" / DCMAKE_INTDIR = "Debug" / D_MBCS / I "C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0\ bin "/ I" C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \ include "/ I./FIcuda_runtime.h / c C: \ Users \ me \ projects \ cuda-test \ build \ CMakeFiles \ CMakeTmp \ main.cu C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ VC\ VCTargets \ BuildCustomizations \ CUDA 10.0.targets (536,9): ошибка: Каталог CUDA Toolkit v10.0 'C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v10.0 \' не существует.Убедитесь, что CUDA Toolkit установлен правильно, или определите свойство CudaToolkitDir для устранения этой ошибки. [C: \ Users \ me \ projects \ cuda-test \ build \ CMakeFiles \ CMakeTmp \ cmTC_64f0a.vcxproj] Готово Создание проекта "C: \ Users \ me \ projects \ cuda-test \ build \ CMakeFiles \ CMakeTmp \ cmTC_64f0a.vcxproj "(цели по умолчанию) - FAILED.
Я использую Windows 10 с CMake 3.12.0,
Вот CMakeLists.txt для справки:
cmake_minimum_required (ВЕРСИЯ 3.8 FATAL_ERROR)
set (CMAKE_CUDA_COMPILER "C: /thirdparty/CUDA/10.0bin/nvcc.exe ") проект (cmake_and_cuda ЯЗЫКИ CXX CUDA)
include (CTest)
add_library (частицы STATIC randomize.cpp randomize.h
частицы.cu части.h v3.cu v3.h)
# Запросить сборку частиц с помощью -std = c ++ 11 # Поскольку это общедоступная функция компиляции, все, что связано с частицами #, будет также собираться с -std = c ++ 11target_compile_features (частиц PUBLIC cxx_std_11)
# Мы должны явно указать, что нам нужно, чтобы все файлы CUDA в библиотеке частиц # создавались с помощью -dc, так как функции-члены могут вызываться # другими библиотеками и исполняемыми файлами set_target_properties (частицы СВОЙСТВА CUDA_SEPARABLE_COMPILATION ON)
if (BUILD_TESTING)
add_executable (icle_test test.cu)
set_target_properties (частицы_тест PROPERTIES CUDA_SEPARABLE_COMPILATION ON) target_link_libraries (частичка частиц PRIVATE частицы)
add_test (ИМЯ частицы_10k КОМАНДА частиц_ тест 10000)
add_test (ИМЯ частицы_256k КОМАНДА частиц_тест 256000)
если нам нужно добавить в APP (APPпуть по умолчанию к драйверу (libcuda.dylib) в виде rpath, # чтобы статическая среда выполнения cuda могла найти его во время выполнения.set_property (TARGET частиц_тест PROPERTY BUILD_RPATH $ {CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}) endif () endif ()