Cuda не работает visual studio
Что необходимо для работы с CUDA
Для работы с CUDA необходимо иметь:
- графический процессор (видеокарту), поддерживающий архитектуру CUDA;
- драйвер для этого устройства от NVIDIA;
- компилятор языка C;
- комплект средств разработки CUDA (CUDA Toolkit).
Пункты 1-3 у меня были, включая компилятор из набора Visual Studio 2008.
CUDA Toolkit можно скачать здесь. Вместе с ним поставляются многочисленные примеры, которые находятся в папке
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0
В папке 0_Simple\template находится заготовка для стандартного CUDA-проекта.
Как создавать проекты CUDA в Visual Studio и запускать примеры из книги
В VS при создании нового проекта выбираем тип NVIDIA/CUDA 6.0 и из шаблонов: CUDA Runtime 6.0.
После этого VS формирует заготовку проекта, содержащую единственный исходный файл kernel.cu . Он нам не нужен. Вместо него вставляем пример из книги:
Расширение файла .CU имеет значение! Только в таких файлах можно пользоваться CUDA-расширениями языка C++.
Чтобы настроить подсветку синтаксиса в файлах .CU как в C++, нужно в окне Tools -> Options -> Text Editor -> File Extension указать расширение .cu и в списке Editor: — Microsoft Visual C++. После перезапуска VS получим подсветку синтаксиса.
Для исправления нужно добавить квалификатор __device__ в конструктор структуры:
Решение проблемы "Видеодрайвер nVidia перестал отвечать и был успешно восстановлен"
Обзор возможных способов решения этой проблемы приведен здесь. В моем случае помог следующий рецепт.
Необходимо настроить в системном реестре два параметра:
- TdrLevel – управляет восстановлением. По умолчанию равен "3", что означает „TdrLevelRecover – Recover on timeout”, т. е. автоматическое восстановление по истечению времени задержки ( TdrDelay ). Значение "0" соответствует „TdrLevelOff – Detection disabled”, т. е. отключению детектирования ошибок драйвера.
- TdrDelay – время задержки (в секундах), иначе: время реагирования на бездействие драйвера. Значение по умолчанию равно "2". При отключении детектирования ошибок ( TdrLevel = 0 ) значение TdrDelay игнорируется.
Желательно не отключать проверку ошибок, а увеличить время задержки, установив его равным 3-м или более секундам. Значение подбирается экспериментально: можно начать с 10, и постепенно уменьшать время задержки.
Ключи TdrLevel и TdrDelay устанавливаются в редакторе реестра, в ветке HKLM\System\CurrentControlSet\Control\GraphicsDrivers . Возможно, что их придется создать. Ключи имеют тип REG_DWORD, не забудьте указать галочку «десятичная система счисления» при редактировании параметра.
Изменения в реестре вступят в силу после перезагрузки системы.
В результате получим:
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
Есть ли способ обойти проблему совместимости с VS 2017, или я не могу использовать CUDA?
Решение
- Если вы хотите установить CUDA 8.0 с Visual Studio 2017 вам нужно установить дополнительные компоненты для Visual Studio 2017.
Нажмите на меню «Пуск» и введите установщик Visual Studio. Откройте установщик Visual Studio
открыто Individual components вкладка и выберите VC++ 2015.3 v140 toolset
Теперь вы хотите получить "No supported version of visual studio was found" ошибка.
Но для успешной сборки проектов инструментария Cuda в Visual Studio 2017 вам также необходимо выполнить шаги 5 и 6.
- Перейти к CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions
папку в распакованном дистрибутиве, скопируйте все файлы и вставьте их в
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations:
- На последнем шаге вам нужно будет отредактировать ваш Cuda проекты по распознаванию задач сборки NVidia от Visual Studio 2017 , Открыть свой .vcxproj файл в текстовом редакторе и найти все вхождения CUDA 8.0.props , Заменить макрос в начале строки $(VCTargetsPath14) так что фрагмент XML будет выглядеть следующим образом:
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath14)\BuildCustomizations\CUDA 8.0.props" /></ImportGroup>
Не забудьте отредактировать путь пользовательских целей в конце файла:
<ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath14)\BuildCustomizations\CUDA 8.0.targets" /></ImportGroup>
Удостоверьтесь, что дважды проверили свою конифурацию пути!
Если вы используете nvcc из командной строки вы не можете звонить cl.exe от Visual Studio папка!
Теперь вы можете создать свой проект Cuda из Visual Studio 2017.
Части этого решения от Блог Олега Тарасова .
Другие решения
Я смог загрузить установщик с Вот относительно недавно.
Вам также может понадобиться добавить следующее в свои списки CMakeLists:
list(APPEND CUDA_NVCC_FLAGS --cl-version=2017)
Для людей, видящих это последнее.
Сначала попробуйте установить CUDA 10 (CUDA Toolkit 10.0).
Если он все еще не работает без каких-либо модов, убедитесь, что у вас есть столько наборов инструментов VC ++, сколько вы видите в списке. Проверять, выписываться это видео , остановитесь в 8:41 и сравните списки.
Для того, чтобы получить работающий компилятор Cuda nvcc в оболочке windows нужно сделать следующее
Запустите в оболочке Windows следующие "c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=14.11
Вы можете скомпилировать nvcc код без ошибок из оболочки Windows
Я столкнулся с той же проблемой, используя CUDA 9.1 и VS2017 Enterprise.
После изменения компилятора VC ++ на v140 (вместо 141) все работает нормально.
Но это не перестанет показывать ошибку.
Оставьте это здесь, так как это может помочь кому-то еще в такой же ситуации. (хотя я действительно не понимаю, почему, как, когда, кто или что из решения.
Перейти к отдельным компонентам. Нажмите на Windows 10 SDK 10.0.15063
введите описание изображения здесь
Я использую 64-разрядную версию Windows 7 с процессором Intel и пытаюсь установить CUDA 6.0. Во время установки он дает предупреждение: "Не поддерживается поддерживаемая версия Visual Studio", а также предупреждение о том, что некоторые компоненты CUDA Toolkit не будут работать должным образом.
Тем не менее, у меня уже установлена Microsoft Visual studio в каталоге "C:\Program Files (x86)\Microsoft Visual Studio 10.0".
Есть ли причина, почему установка не видит ее? Должен ли я редактировать переменную окружения "PATH"? Или Visual Studio 10.0 не поддерживается? На странице установки CUDA поддерживается Visual Studio 10.0.
Если вам нужна дополнительная информация, не стесняйтесь просить разъяснений.
EDIT: Я думаю, что моя Visual Studio 10.0 была неисправна, поэтому я загрузил Visual Studio 2012 Express и установил ее. После запуска установщика CUDA он больше не выдавал предупреждение о "Нет поддерживаемой версии. " и начал установку. В конце он заявил следующее:
Увидев, что Nsight и Nsight C++ AMP Debugger не установлены, необходимы или полезны? Согласно этой ссылке, для их установки требуется Professional Edition, поэтому предположительно Express недостаточно. Я все еще хорош?
Наиболее вероятная причина, по которой установщик CUDA 6 говорит, что "Не поддерживается поддерживаемая версия Visual Studio", объясняется тем, что не была найдена поддерживаемая версия Visual Studio.
- Visual Studio 2012
- Visual Studio 2012 Express
- Visual Studio 2010
- Visual Studio 2008
Обратите внимание, что Visual Studio 2010 Express не указан и официально не поддерживается.
Таким образом, у вас может быть Visual Studio 2010 Express, или у вас может быть другой продукт Microsoft, который пытается установить некоторые компоненты Visual Studio, но не является одной из вышеупомянутых официально поддерживаемых версий Visual Studio.
Все перечисленные выше продукты VS могут работать правильно либо в 32-разрядной, либо в 64-разрядной ОС. Продукты Express, настроенные Microsoft, не включают 64-разрядный компилятор (хост) и поддерживают только 32-разрядные приложения. Аналогично, эти продукты могут использоваться только для создания 32-битных приложений CUDA. Но эти 32-битные приложения CUDA могут быть созданы и выполняться правильно либо в 32-битной, либо в 64-разрядной ОС/среде. Экспресс-продукты также не поддерживают подключаемый модуль, необходимый для включения отладчика кода и профилирования устройства nsight. Однако разработка кода, выполнение, профилирование (через автономный визуальный профилировщик, nvvp) и отладка кода хоста по-прежнему возможны.
В общем случае установка должна выполняться и проверяться с помощью инструкций в руководстве по началу работы с окнами.
ВЧасть 1В этой серии я рассказал о том, как вы можете модернизировать аппаратное обеспечение своего ПК, добавив в него видеокарту, совместимую с CUDA Toolkit, например графический процессор Nvidia. В этой части 2 рассматривается установка CUDA, cuDNN и Tensorflow в Windows 10. В данной статье предполагается, что на вашем компьютере уже установлен CUDA-совместимый графический процессор; но если у вас этого еще нет,Часть 1из этой серии поможет вам настроить аппаратное обеспечение, готовое к этим шагам.
Предполагая, что Windows уже установлена на вашем ПК, дополнительные части программного обеспечения, которые вы установите в рамках этих шагов: -
- Microsoft Visual Studio
- инструментарий NVIDIA CUDA
- NVIDIA cuDNN
- питон
- Tensorflow (с поддержкой GPU)
Visual Studio является обязательным условием для CUDA Toolkit
Выбор и загрузка Visual Studio Express
На момент написания этой статьи самой последней версией Visual Studio (которая является бесплатной) является Visual Studio Express Community Version 2017, показанная на рис. 2. Предыдущие версии Visual Studio можно бесплатно получить, присоединившись к «Visual Studio Dev Essentials”И затем ищите нужную версию Visual Studio.
Установка Visual Studio Express
После того, как вы загрузили Visual Studio Express, его установка проста. На рис. 3 показан исполняемый файл, который вы получаете в качестве загрузки.
Когда вы нажимаете опцию «сохранить файл» на рис. 3, появляется окно на рис. 4, где вы можете установить параметры установки (или просто оставить их, как они есть по умолчанию, как я).
Во время установки Visual Studio предложит вам whetherхочу продолжить без нагрузки». Я нажал «продолжить», поскольку не собирался использовать рабочие нагрузки вообще.
Может потребоваться перезагрузка компьютера после установки Visual Studiod
Эти шаги установки CUDA основаны наРуководство по установке Nvidia CUDA для Windows, Набор инструментов CUDA (бесплатный) можно загрузить с веб-сайта NvidiaВот,
На момент написания по умолчанию предлагается версия CUDA Toolkit версии 10.0, как показано на рис. 6. Однако вам следует проверить, какую версию CUDA Toolkit вы выбрали для загрузки и установки, чтобы обеспечить совместимость с Tensorflow (в будущемШаг 7этого процесса). Когда вы идете наВеб-сайт Tensorflow, последняя доступная версия Tensorflow (1.12.0) требуетCUDA 9.0не CUDA 10.0. Чтобы найти CUDA 9.0, вам нужно перейти к «Legacy Releases» в нижней правой части рисунка 6.
Шаг 3.1: Загрузка CUDA 9.0 из архива инструментария CUDA
Выбрав «Legacy Releases», вы попадете в архив CUDA Toolkit. На основеУстановка TensorflowВ соответствии с указаниями, требуемая версия CUDA - 9.0, как показано на Рис. 7.
Шаг 3.2: Установка CUDA 9.0
CUDA 9.0 поставляется как базовая установка и четыре патча; Сначала необходимо установить базовую версию CUDA 9.0, а затем патчи. Варианты базовой установки, которые я выбрал, показаны на рис. 8.
Запуск только что загруженного базового установщика приведет к появлению окна CUDA Setup Package, как показано на рисунке 9.
Рис. 11 дает возможность выбрать место установки; Я выбрал расположение по умолчанию, которое для CUDA:
На рисунке 12 ниже показаны установки CUDA, основанные на Visual Studio, ранее установленной вШаг 1,
Нажатие «Далее» в окне, показанном на рис. 12 выше, дает окно окончательной установки, показанное как рис. 13 ниже, где установщик NVIDIA отмечен как завершенный.
Рис. 13: Окончательное окно установки для базового установщика CUDA 9.0На момент написания этой книги было четыре патча CUDA (а также базовый установщик), так что давайте пойдем и загрузим их. Они показаны на фиг.14.
Когда четыре исправления загружены, их можно установить так же, как и базовый установщик - с окнами установки, обеспечивающими руководство по процессу.
После установки базового установщика CUDA 9.0 и его четырех исправлений следующим шагом будет поиск совместимой версии CuDNN. Основываясь на информации на веб-сайте Tensorflow, для поддержки Tensorflow с графическим процессором требуется версия cuDNN по адресуминимум 7,2,
Шаг 5.1: Загрузка cuDNN
Для того, чтобыскачать CuDNNВы должны зарегистрироваться, чтобы стать участником программы разработчиков NVIDIA (которая бесплатна).
Когда вы создаете учетную запись, входите в систему и заполняете некоторые другие необходимые сведения о том, почему вы используете учетную запись, вы получаете страницу загрузки, показанную на рис. 16.
Поскольку я скачал CUDA 9.0, соответствующая версия cuDNN - это версия 7.4.2. Выбор cuDNN версии 7.4.2 разрешает загрузку в виде zip-файла с именем следующим образом:
Шаг 5.2: Распаковка файлов cuDNN и копирование в папки CUDA
инструкциина нвидииобеспечить поддержку установки windows cuDNN, как и инструкции на веб-сайте Tensorflow; Я воспроизвел эти инструкции в дистиллированном виде, основываясь на своей реализации. В моем случае я загрузил названный выше файл cuDNN .zip в папку с следующим путем на моем ПК (ваш путь, без сомнения, будет другим).
В приведенных ниже инструкциях я ссылаюсь на путь к папке «C: \ Users \ жо \ Documents \ cuDNN_downloads \»(Упоминается чуть выше) как« », Такой, что zip-файл теперь находится в пути:
Я разархивировал файл cuDNN «.zip», в который я его скачал, поэтому структура разархивированной папки, которая будет содержать необходимые файлы cuDNN, теперь: -
В разархивированных подкаталогах папки cuDNN находятся три файла, которые нужно скопировать в каталоги CUDA Toolkit. Это cudnn64_7.dll, cudnn.h и:
1. cudnn64_7.dll
cudnn64_7.dll можно найти по следующему пути в загруженных файлах cuDNN:
Предполагая, что вы установили CUDA 9.0 по пути по умолчанию (как я сделал вШаг 2.3), а именно следующий путь по умолчанию:
Вы можете скопироватьcudnn64_7.dllфайл прямо в папку CUDAбункерПуть к папке (примечание: вам не нужно создавать какие-либо новые подпапки):
2. cudnn.h
Как и в случае с файлом cudnn64_7.dll, приведенным выше, после загрузки и разархивирования папки cuDNN файл заголовкаcudnn64.hможно найти в пути:
Опять же, предполагая, что вы установили CUDA 9.0 в путь по умолчанию, как я сделал вШаг 2.3скопироватьcudnn.hнепосредственно в папку CUDA по следующему пути (новые подпапки не нужны):
3. cudnn.lib
.Lib файлcudnn.libможно найти в загруженном пути cuDNN:
Скопируйте cudnn.lib непосредственно в папку CUDA по следующему пути:
Шаг 5.3: Проверка того, что переменные среды CUDA установлены в Windows
Наконец,инструкции на нвидииубедитесь, что вы ранее установили переменную среды CUDA следующим образом:
В Windows 10 переменные среды можно найти, выбрав:
Панель управления->Система и безопасность->система->Расширенные настройки системы,
Откроется окно «Свойства системы» (рис. 17), в котором следует выбрать кнопку «Переменные среды».
Когда появится окно «Переменные среды», в «системных переменных» (в нижней половине окна) нажмите «Путь» и нажмите кнопку «Изменить». Появится новое окно под названием «Редактировать переменную среды», как показано на рисунке 18 ниже.
При проверке переменных среды я обнаружил процесс установки, который определяет путь установки CUDA -Шаг 3.2см. рис. 11 - уже добавлены два пути к CUDA. Эти пути показаны на рисунке 18 ниже, поэтому я обнаружил, что мне не нужно добавлять дополнительный путь CUDA.
Теперь, когда CUDA и cuDNN установлены, пришло время установить Python для последующей установки Tensorflow. На момент написания самой последней доступной версии Python 3 является Python 3.7, ноВерсии Python 3, необходимые для Tensorflow: 3.4, 3.5 или 3.6, Python 3.6 можно загрузить для Windows 10 сВот, Когда вы запустите установщик Python для окон, появится окно настройки на Рис. 19.
Рис. 19: экран установки Python 3.6; Я выбираю все дополнительные функции на этом экране (pip и IDLE оба используются в последующих шагах)Из вариантов, показанных на рис. 19 выше, во время установки Python я решил выбрать все из них. Эти параметры полезны: установщик Python «pip» используется наШаг 7.2этого руководства по установке Tensorflow. Кроме того, я использую IDE (интегрированную среду разработки для написания и запуска кода Python) под названием «IDLE» вШаг 8,
В «Расширенных настройках» (показанных на Рис. 20 ниже) я выбрал установку Python для всех пользователей (которая не была отмечена по умолчанию); это дает более полезную системную установку.
Tensorflowпредоставляет инструкциидля проверки правильности добавления каталогов установки CUDA, cuDNN и (необязательно: CUPTI) в переменные среды PATH. Поскольку три файла cuDNN были скопированы в подпапки CUDA, я не обновил существующий путь переменных среды CUDA.
Шаг 7.1: вызов командной строки с правами администратора
На этом этапе выполняется общесистемная установка Tensorflow, а не установка для каждого пользователя. Общесистемная установка Tensorflow требует прав администратора, поэтому, соответственно, командная строка должна запускаться с правами администратора.
Откройте командную строку, запустив ‘CMD’В строке поиска, а затем щелкните правой кнопкой мыши в командной строке, чтобы выбрать« Запуск от имени администратора ». Это открывает Администратор: Командная строка, как показано на рисунке 21.
Шаг 7.2: Общесистемная установка Tensorflow через Python pip
После открытия командной строки общесистемная команда установки для Tensorflow с поддержкой GPU выглядит следующим образом:
Команда «pip3» (в отличие от «pip») требуется, так как установка выполняется в Python 3. Выполнение этой команды в командной строке показано на рисунке 22.
Перейдите в меню «Пуск» в Windows и найдите среду IDE с именем «idle», которая будет установлена как часть вашей установки на python, если вы выбрали, как я сделал вШаг 6, Окно Python должно появиться с надписьюОболочка Python 3.6.x, По приглашению (обозначается как «>>>») импортируйте пакет Tensorflow. Это проверит, что Tensorflow был установлен (как вы можете импортировать его). Команда для оболочки IDLE для импорта пакета tenorflow выглядит следующим образом:
Чтобы проверить поддержку CUDA для вашей установки Tensorflow, вы можете запустить в командной строке следующую команду:
Наконец, чтобы убедиться, что графический процессор доступен для Tensorflow, вы можете протестировать, используя встроенную служебную функцию в TensorFlow, как показаноВот:
Требуется несколько минут, чтобы вернуть результат из этого; когда он закончен, он возвращаетсяПравда, а затем приглашение>>>`появляется снова. Импортирование тензорного потока и эти тесты показаны на рис. 24 в оболочке Python IDLE.
Это были шаги, которые я предпринял для установки Visual Studio, CUDA Toolkit, CuDNN и Python 3.6, и все с конечной целью установки Tensorflow с поддержкой GPU в Windows 10. На сегодняшний день моя работа по машинному обучению и глубокому обучению на основе GPU была в Linux Машины с Ubuntu; к тому же, большая часть онлайновой поддержки сообщества машинного обучения фокусируется на Ubuntu
Для машинного обучения основным недостатком использования Windows является то, что необходимо создавать больше объектов из исходного кода (например, используяCmake), чем в Linux, а также для установки дополнительного программного обеспечения для процессов сборки, таких как Visual Studio. Например, если бы выустановить Caffe2в Windows нет встроенных двоичных файлов, и сборка Windows находится в тестовом и бета-режиме. Я установил CUDA и cuDNN на Windows 10 более любопытно, чем что-либо еще, просто чтобы посмотреть, насколько это было просто (или иначе).
Как я намекал вЧасть 1Теперь, когда CUDA, cuDNN и Tensorflow успешно установлены в Windows 10, и я проверил доступ Tensorflow к графическому процессору, я собираюсь смести всю операционную систему Windows 10, чтобы произвести новую установку Ubuntu 18.04 LTS. Эта новая установка Ubuntu будет рассмотрена в части 3 этой серии.
Читайте также: