Можно ли перемещать / распространять компилятор cuda (nvcc) после установки? - PullRequest
0 голосов
/ 25 сентября 2018

Мы начинаем работу над проектом 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 ()

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Да, я сделал это в Windows, потому что на сборочной машине нет видеокарты Nvidia и, следовательно, невозможно запустить установщик CUDA или установить драйвер.

Я просто скопировал папки с рабочего компьютера и добавил средупеременные для:

Инструментарий CUDA - CUDA_PATH (C: \ Program Files \ Компьютерный инструментарий NVIDIA GPU \ CUDA \ v10.0)

Примеры CUDA - NVCUDASAMPLES_ROOT (C: \ ProgramData \ NVIDIA Corporation \Образцы CUDA \ v10.0)

(зависит от того, на что вы ссылаетесь в своих проектах кода, конечно, это то, что мне нужно)

Это сработало для меня в CUDA 9.2 (MVS 2015)и 10,0 (MVS 2017).

0 голосов
/ 25 сентября 2018

Это очень возможно.Установка CUDA (в отличие от установки драйвера nVIDIA) - это просто набор файлов на диске.Если вы даже хотите поместить их все в общий каталог, на самом деле не имеет значения, является ли он C:\Program Files\CUDA (или любым другим по умолчанию в Windows) или C:\thirdparty\cuda.

Ваша "единственная" проблема в том, что у вас есть соответствующие переменные среды и, возможно, определенные записи в реестре (не уверен, так как мой опыт работы с Linux).Переменные среды могут (или не могут) включать некоторые из следующих параметров: CUDA_DIR, LD_LIBRARY_PATH, C_INCLUDE_PATH, LIBRARY_PATH, CPLUSINCLUDE_PATH.Переменные среды определенно включают PATH.

Предупреждение: у меня есть опыт размещения CUDA только в произвольных местах в Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...