Cuda не работает visual studio
Just installed latest Visual Studio 2017 Preview 15.6 and CUDA Toolkit 9.1 Created new CUDA demo project and tried to compile, but got bunch of errors, one of them:
Did anyone try to work with CUDA 9.1 in VS 2017 Preview?
The latest CUDA Toolkit 9.1 is not officially supporting VS 2017 versions beyond 1911 which is v15.4.x VS 2017 v1912 and beyond (v15.5.x and higher) are not officially supported by the latest CUDA 9.1 toolkit.
If you want to use CUDA 9 or 9.1 with VS2017, and you have an unsupported version of VS2017 already installed (or upgraded to) such as 1912 or later, one possible approach would be to install the VS2015 toolchain within VS2017 as discussed here. Another possibility may be to try and download a previous (v15.4.x) version of VS2017. it may still be possible to download that from here.
As a further update, it appears that Microsoft my have just released a v15.5.2 version of VS2017 which is working with CUDA 9.1
3 Answers 3
As per advises from Robert and NVidia DevTalk forum in order to compile project I need to:
- Add Visual Stodio 2015 Toolset to existing VS 2017 installation
- Reinstall CUDA
- Change project properties to use older toolset
I was able to get CUDA 9.1.85 to build with VS 2017 15.4.
I first uninstalled all previous VS instances and then reinstalled VS2017, making sure to go to "individual Components" and selecting VS 2015 Toolset.
I then used the Step A suggestion from @oregonduckman in this post and used the standard VGA driver for my display adapter (video card).
I then killed every NVIDIA process and manually deleted every NVIDIA folder on my machine.
Finally, I installed CUDA 9.1.85 including the VS Integrations which also reinstalled my display adapter driver that I had manually removed. I was then able to build all of the CUDA samples.
I suspect that the issue lays with either the VS Toolset is unsupported by CUDA 9.1 or there was an incompatibility between VS and my NVIDIA driver somehow. Btw, I am running Windows 10 Pro with a GTX 780 card.
Что необходимо для работы с 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, не забудьте указать галочку «десятичная система счисления» при редактировании параметра.
Изменения в реестре вступят в силу после перезагрузки системы.
В результате получим:
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
Установка
Инструменты Visual Studio для сценариев ИИ можно устанавливать в 64-разрядных операционных системах Windows.
Установка Visual Studio Tools for AI
Это расширение работает с Visual Studio 2015 и Visual Studio 2017 выпуска Community или более высокого уровня.
Выберите Сервис > Расширения и обновления.
В диалоговом окне Расширения и обновления выберите Online (Онлайн) с левой стороны.
В поле поиска в правом верхнем углу введите "tools for ai" (средства ИИ).
В результатах выберите Visual Studio Tools for AI (Средства Visual Studio для ИИ).
Подготовка локального компьютера
Перед обучением моделей глубокого обучения на локальном компьютере убедитесь в том, что установлены требуемые компоненты. В их число входят последние версии драйверов и библиотек для GPU NVIDIA (если применимо). Убедитесь также в том, что установлены среда и библиотеки Python, такие как NumPy и SciPy, и соответствующие платформы глубокого обучения, такие как Microsoft Cognitive Toolkit (CNTK), TensorFlow, Caffe2, MXNet, Keras, Theano, PyTorch и Chainer, которые планируется использовать в проекте.
Краткие сведения о программном обеспечении в следующих подразделах взяты с домашних страниц соответствующих продуктов.
Драйвер GPU NVIDIA
Платформы глубинного обучения используют GPU NVIDIA, чтобы повысить скорость, точность и масштаб обучения искусственного интеллекта. Если на компьютере установлены видеоадаптеры NVIDIA, ознакомьтесь со страницей скачивания драйверов NVIDIA или попробуйте обновить операционную систему, чтобы установить последнюю версию драйвера.
CUDA — это платформа параллельных вычислений и модель программирования, разработанная компанией NVIDIA. Она существенно увеличивает производительность вычислений благодаря использованию возможностей GPU. В настоящее время для платформ глубинного обучения требуется набор инструментов CUDA 8.0.
- Перейдите на этот сайт, скачайте и установите CUDA.
- Установите библиотеки CUDA времени выполнения, а затем добавьте путь к двоичным файлам CUDA в переменную среды %PATH% или $Path.
- В Windows путь по умолчанию — "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin".
cuDNN
cuDNN (CUDA Deep Neural Network library, библиотека CUDA для глубинных нейронных сетей) — это GPU-ускоренная библиотека примитивов для глубинных нейронных сетей от NVIDIA. Для новейших платформ глубинного обучения требуется cuDNN v6.
- Перейдите на страницу NVIDIA Developer, чтобы скачать и установить последнюю версию пакета.
- Добавьте каталог, содержащий двоичный файл cuDNN, в переменную среды %PATH% или $Path.
- В Windows можно скопировать файл cudnn64_6.dll в каталог "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin".
Более ранние платформы глубинного обучения, такие как CNTK 2.0 и TensorFlow 1.2.1, требуют библиотеки cuDNN v5.1. Можно одновременно установить несколько версий cuDNN.
Python
Python является основным языком программирования для приложений глубинного обучения. Требуется 64-разрядный дистрибутив Python. Для обеспечения максимальной совместимости рекомендуется версия Python 3.5.4.
Установка Python в Windows
- Мы рекомендуем установить средство запуска Python только для себя и добавить Python в переменную среды %PATH%.
- Обязательно установите pip — систему управления пакетами, которая позволяет устанавливать программные пакеты, написанные на Python, и управлять ими.
Платформы глубинного обучения требуют pip для установки.
Затем необходимо проверить, правильно ли установлен Python 3.5, и обновить систему pip до последней версии, выполнив в терминале следующие команды:
Windows
macOS
Python в Visual Studio
Python полностью поддерживается в Visual Studio благодаря расширениям. Получите дополнительные сведения об установке Инструментов Python для Visual Studio.
NumPy и SciPy
NumPy — это пакет обработки массивов общего назначения, который предназначен для эффективной работы с большими многомерными массивами произвольных элементов и в то же время позволяет работать с небольшими многомерными массивами без значительного снижения быстродействия.
SciPy (произносится "сай пай") — это программное обеспечение с открытым кодом для математических, научных и инженерных вычислений, которое зависит от NumPy. Начиная с версии SciPy 1.0.0 предлагается официальный предварительно собранный пакет wheel для Windows.
Чтобы установить NumPy и SciPy, выполните в терминале следующую команду:
gohlke/pythonlibs/ ) до последних официальных версий пакетов.
Microsoft Cognitive Toolkit (CNTK)
Microsoft Cognitive Toolkit — это единый набор средств глубинного обучения, который описывает нейронные сети как ряд вычислительных шагов в виде направленного графа. CNTK поддерживает языки программирования Python и BrainScript.
В настоящее время CNTK не поддерживает macOS.
Сведения об установке пакета CNTK для Python см. в этой статье.
TensorFlow
TensorFlow — это библиотека ПО с открытым кодом для числовых вычислений с использованием графов потоков данных. Подробные инструкции по установке см. здесь.
Начиная с версии 1.2 TensorFlow больше не предоставляет поддержку GPU в macOS.
Caffe2
Caffe2 — это простая, модульная, масштабируемая платформа глубинного обучения. Она построена на основе платформы Caffe и призвана обеспечить максимальное быстродействие и модульность.
В настоящее время готовый пакет wheel на Python для Caffe2 отсутствует.
Сведения о том, как выполнить сборку на основе исходного кода, см. здесь.
MXNet
Apache MXNet (инкубатор) — это платформа глубинного обучения, призванная обеспечить максимальную эффективность и гибкость. Она позволяет сочетать символическое и императивное программирование для достижения максимальной эффективности и продуктивности.
Чтобы установить MXNet, выполните в терминале следующую команду:
Keras
Keras — это высокоуровневый API для нейронных сетей, написанный на Python, который может работать поверх CNTK, TensorFlow или Theano. Главной целью при его разработке являлось обеспечение быстрого проведения экспериментов. Минимальная задержка на пути от идеи к результату — ключевой фактор успешного исследования.
Чтобы установить Keras, выполните в терминале следующую команду:
Theano
Theano — это библиотека Python, которая позволяет эффективно определять, оптимизировать и вычислять математические выражения с многомерными массивами.
Чтобы установить Theano, выполните в терминале следующую команду:
PyTorch
PyTorch — это пакет Python, который представляет две высокоуровневые возможности:
- тензорные вычисления (как и в случае с NumPy) с эффективным ускорением на базе GPU;
- построение глубинных нейронных сетей на основе ленточной системы autograd.
Чтобы установить PyTorch, выполните в терминале следующую команду:
Windows
Официального пакета wheel пока нет. Можно загрузить сторонний пакет из Anaconda или Калифорнийского университета.
Распакуйте его в домашнем каталоге, например C:\Users\test\pytorch.
Добавьте каталог C:\Users\test\pytorch\Lib\site-packages в переменную среды %PYTHONPATH%.
macOS
Двоичные файлы macOS не поддерживают CUDA. Если требуется CUDA, выполните установку из источника.
Linux
Этот пакет поддерживает как GPU, так и ЦП.
Наконец, установите torchvision в ОС, отличных от Windows:
Chainer
Chainer — это платформа глубинного обучения на основе Python, призванная обеспечить гибкость. Она предоставляет интерфейсы API автоматической дифференциации на основе подхода define-by-run (динамические вычислительные графы), а также высокоуровневые объектно-ориентированные интерфейсы API для построения и обучения нейронных сетей.
Чтобы включить поддержку CUDA, установите CuPy:
В Windows требуется версия 2015 среды Visual Studio или Microsoft Visual C++ Build Tools для компиляции CuPy с использованием CUDA 8.0.
Использование CUDA с Visual Studio 2017
есть ли способ обойти проблему совместимости с VS 2017, или я не могу использовать CUDA?
- если вы хотите установить CUDA 8.0 с Visual Studio 2017 необходимо установить дополнительные компоненты для Visual Studio 2017.
Нажмите в меню Пуск и введите установщик Visual Studio. Откройте Установщик Visual Studio
- скачать CUDA toolkit дистрибутив и извлечь его где-нибудь на вашем диске.
- если бы у вас не было CUDA toolkit установлен, сделайте это сейчас. Если у вас есть только Visual Studio 2017 установлен, снимите флажок Visual Studio integration флажок.
Теперь вы хотите получить "No supported version of visual studio was found" ошибка.
но для успешного создания проектов CUDA toolkit в 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 выглядел следующим образом:
не забудьте отредактировать заказ целевой путь в конце файла:
убедитесь, что дважды проверьте свой путь конифурации!
Если вы используете nvcc из командной строки вы, возможно, не вызываете cl.exe С !
теперь вы можете создать свой проект Cuda из Visual Studio 2017.
части этого решения от блог Олега Тарасова.
на данный момент Microsoft по-прежнему делает VS2015 Update 2 community edition доступным. Вы должны присоединиться к программе "Dev essentials", но она кажется бесплатной.
Я смог загрузить установщик из здесь недавно.
возможно, Вам также придется добавить следующее В свои CMakeLists:
list(APPEND CUDA_NVCC_FLAGS —cl-version=2017)
для того, чтобы получить рабочий компилятор Cuda nvcc в оболочке windows вам нужно сделать следующее
установите правильную версию набора инструментов из отдельного компонента для VS 2017 — VC++ 2017 version 15.4 v.14.11 toolset
запуск в оболочке windows после "c:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=14.11
вы можете скомпилировать nvcc код без ошибок из оболочки Windows
я столкнулся с той же проблемой, используя CUDA 9.1 и VS2017 Enterprise.
после изменения компилятора VC++ на v140 (вместо 141) все работает нормально.
но он не перестает показывать ошибку.
Не знаю почему, но попытка запустить его на VS2015 приводит к ошибкам о том, что v141 не установлен. поэтому из-за какой-то извращенной логики я попытался не использовать v141, где он был установлен. и все сработало!!
оставив это здесь, поскольку это может помочь кому-то еще в той же ситуации. (хотя я действительно не понимаю, почему, как, когда, кто и какие решения.
последнее обновление (исправлено с 06/12/2018) последняя версия Cuda-9.2 и последняя версия Visual Studio-2017.7 не работают вместе. Инструкции, приведенные в решении выше, не работают. Вот что сработало для меня:
перейти к отдельным компонентам. Нажмите на Windows 10 SDK 10.0.15063 Введите описание изображения здесь
I'm trying to install CUDA, but I get a message saying "No supported version of visual studio was found". I think that this is because I am using Visual Studio 2017 (Community), and CUDA currently only supports up to Visual Studio 2015. Unfortunately, Microsoft will not allow me to download old versions of Visual Studio without paying a subscription fee.
Is there a way I can get around the compatibility issue with VS 2017, or can I not use CUDA?
You can download older versions of visual studio here. Yes, you have to join the dev essentials program, but it is free.
8 Answers 8
- If you want to install CUDA 8.0 with Visual Studio 2017 you need to install additional components for Visual Studio 2017.
Click on the Start Menu and type Visual Studio Installer. Open Visual Studio Installer
- Download full CUDA toolkit distribution and extract it somewhere on your disk.
- If you didn't have CUDA toolkit installed, do it now. If you have only Visual Studio 2017 installed, unselect Visual Studio integration checkbox.
Now you want to receive the "No supported version of the visual studio was found" error.
But in order to successfully build Cuda toolkit projects in Visual Studio 2017 , you also need to follow steps 5 and 6.
- Go to the CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions
folder in your extracted distribution, copy all the files and paste them to
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations:
- In the last step, you will need to edit your Cuda projects to recognize NVidia's build tasks from Visual Studio 2017 . Open your .vcxproj file in a text editor and find all occurrences of CUDA 8.0.props . Replace the macro at the beginning of the string with $(VCTargetsPath14) so that XML snippet would look as follows:
Don't forget to edit the custom targets path at the end of the file:
Make sure to double check your path conifuration!
If you use nvcc from command prompt you might not be calling cl.exe from Visual Studio folder!
Это первая публикация из цикла статей об использовании GPGPU и nVidia CUDA. Планирую писать не очень объемно, чтобы не слишком утомлять читателей, но достаточно часто.
Я предполагаю, что читатель осведомлен, что такое CUDA, если нет, то вводную статью можно найти на Хабре.
Что потребуется для работы:
Создание CUDA проекта:
После установки всего необходимого в VS появиться новый вид проекта для С++ с названием CU-DA WinApp, это именно то, что нам надо. В данном типе проекта доступны дополнительные на-стройки для CUDA, позволяющие настроить параметры компиляции под GPU, например версию Compute Capability в зависимости от типа GPU и т.д.
Обычно я создаю чистый проект (Empty Project), так как Precompiled Headers навряд ли пригодиться для CUDA.
Важно отметить, как собирается CUDA приложение. Файлы с расширением *.cpp обрабатываются компилятором MS C++ (cl.exe), а файлы c расширением *.cu компилятором CUDA (nvcc.exe), который в свою очередь определяет, какой код будет работать на GPU, а какой на CPU. Код из *.cu, работающий на CPU, передается на компиляцию MS C++, эту особенность удобно использовать для написания динамических библиотек, которые будут экспортировать функции, использующие для расчетов GPU.
Далее привожу листинг простой программы на CUDA, который выводит на экран информацию об аппаратных возможностях GPU.
Листинг. Программа CudaInfo.
int main()
int deviceCount;
cudaDeviceProp deviceProp;
//Сколько устройств CUDA установлено на PC.
cudaGetDeviceCount(&deviceCount);
printf( "Device count: %d\n\n" , deviceCount);
for ( int i = 0; i < deviceCount; i++)
//Получаем информацию об устройстве
cudaGetDeviceProperties(&deviceProp, i);
//Выводим иформацию об устройстве
printf( "Device name: %s\n" , deviceProp.name);
printf( "Total global memory: %d\n" , deviceProp.totalGlobalMem);
printf( "Shared memory per block: %d\n" , deviceProp.sharedMemPerBlock);
printf( "Registers per block: %d\n" , deviceProp.regsPerBlock);
printf( "Warp size: %d\n" , deviceProp.warpSize);
printf( "Memory pitch: %d\n" , deviceProp.memPitch);
printf( "Max threads per block: %d\n" , deviceProp.maxThreadsPerBlock);
printf( "Max threads dimensions: x = %d, y = %d, z = %d\n" ,
deviceProp.maxThreadsDim[0],
deviceProp.maxThreadsDim[1],
deviceProp.maxThreadsDim[2]);
printf( "Max grid size: x = %d, y = %d, z = %d\n" ,
deviceProp.maxGridSize[0],
deviceProp.maxGridSize[1],
deviceProp.maxGridSize[2]);
printf( "Clock rate: %d\n" , deviceProp.clockRate);
printf( "Total constant memory: %d\n" , deviceProp.totalConstMem);
printf( "Compute capability: %d.%d\n" , deviceProp.major, deviceProp.minor);
printf( "Texture alignment: %d\n" , deviceProp.textureAlignment);
printf( "Device overlap: %d\n" , deviceProp.deviceOverlap);
printf( "Multiprocessor count: %d\n" , deviceProp.multiProcessorCount);
printf( "Kernel execution timeout enabled: %s\n" ,
deviceProp.kernelExecTimeoutEnabled ? "true" : "false" );
>
return 0;
>
* This source code was highlighted with Source Code Highlighter .
В программе я подключаю библиотеку “cuda_runtime_api.h”. Хотя это делать не обязательно, так она инклюдится автоматически, но без неё не будет работать IntelliSence (хотя все равно периодически косячит).
Заключение
Я думаю, что это самый простой способ для написания CUDA-программ, так как требуется минимум усилий для конфигурирования и настройки среды, единственная проблема только с использованием IntelliSence.
В следующий раз будет рассмотрено использование CUDA для математических вычислений и вопросы работы с память видеокарты.
Подготовка
Настройка
Ну вот, собственно и весь наш список. Теперь приступим непосредственно к настройке. Мануал от Nvidia настойчиво рекомендует проверить работоспособность компилятора nvcc и вашей видеокарты. Зайдите в командную строку (Пуск -> стандартные -> выполнить -> вводим cmd) и впишите «nvcc –V». Должна высветиться версия компилятора. Теперь проверим вашу видюшку. Для этого направимся по адресу C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK\C\bin\win32\Release. Нет такого адреса? Меня чур не пинать – так написали разрабы. У меня адрес такой: C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\bin\win64\Release. В этой замечательной папке лежит не менее замечательная программка bandwidthTest, которую мы с радостью и запустим. Должна появиться консоль, а в ней много буковок и циферок. Главное, чтобы в конце была надпись PASSED. Есть? Успех! Теперь мы можем рассчитывать на нашего железного коня.
Вот примерно такая картина маслом должна появиться у вас после запуска bandwidthTest.
В этой же папке лежит множество других программ, запустив которые, Вы сможете лицезреть возможности технологии CUDA.
Перейдём к настройке нашей среды разработки. Допустим Вы установили VS и VA. Сейчас мы настроим их для совместной работы с CUDA. Идём в папку, которая у меня называется C:\Documents and Settings\All Users\Application Data\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\doc\syntax_highlighting\visual_studio_8, и читаем readme.txt. Нихрена не понятно? Правильно! В топку этот английский. В таком случае берём файлик usertype.dat и тащим его (конечно, лучше скопировать) в папку C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE. Затем запускаем Visual Studio. Идём в «Сервис -> Параметры» (Tools > Options), выбираем «Проекты и решения -> параметры проекта VC++» (Solutions > VC++ Project Settings), ищем строчку «включаемые расширения» и добавляем туда расширения .cu и .cu.h. Как нетрудно догадаться, это расширения файлов с кодом. Должно получиться что-то вроде этого:
Сейчас лучше VS закрыть.
Visual Assist
Теперь идём в святую святых – реестр (Пуск -> стандартные -> выполнить -> вводим regedit). Идём по адресу HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10 и видим чудо! Хотя опять и привираю… Дописываем в строки ExtHeader и ExtSource расширения .cu.h и .cu соответственно. Должна получиться следующая картина:
Пока regedit лучше не закрывать. Он нам может ещё пригодиться.
Опять запускаем VS, но на сей раз настраиваем наш VA (VAssistX > Visual Assist X Options). Идём в «Projects -> C/C++» Directories. Меняем «Platform» с текущей на «custom» и настраиваем директории. Нажимаем «New» (папочка со звёздочкой =)) и вписываем туда следующие папки:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\CUDALibraries\common\inc
Это прописано у меня. Ваш случай может отличаться, в зависимости от того, куда вы установили SDK. Так. Это у нас были «Stable include files». Теперь меняем в верхнем правом углу окна на «Source files» и добавляем туда следующие строки:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\src
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\src
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\CUDALibraries\src
Скорее всего так много может не понадобиться, но на всякий случай…
Теперь идём в «Performance» (видно на картинке выше) и нажимаем Rebuild Symbol Databases. Не забываем нажать «Применить» и «ОК». Сейчас нужно всё это счастье перезапустить.
Потом, когда Вы откроете файл с расширение .cu, текст должен быть раскрашен, а ошибки должны подсвечиваться. Если этого нет, то, скорее всего, Вы сделали что-то не так. Вероятно, нужно просто проверить реестр. У меня записи стирались несколько раз, и приходилось прописывать опять.
Финал
Создадим новый проект в VS. Файл -> создать -> проект. Выбираем «консольное приложение Win32, называем наш проект, например «SKYNET» или «TRON». В опциях («Дополнительные параметры») убираем галку с «Предварительно скомпилированный заголовок» и ставим галку на «Пустой проект». Больше у вас галок быть не должно. Нажимаем «готово» и… Ничего не взорвалось? Вам повезло… Ну что ж, продолжим.
Тут вы можете создать файл blabla.cu и проверить работоспособность VA.
Создали? Отлично. Он нам сейчас и понадобится. Нажимаем на него в обозревателе решений правой кнопкой и идём в «свойства». «Свойства конфигурации -> общие -> тип элемента» и выбираем CUDA C/C++. Применяем и идём в свойства проекта («проект -> cвойства» — внезапно, не правда ли? =)). Не забудьте снять выделение с вашего blabla файла. Свойства конфигурации -> Каталоги VC++ -> Каталоги включения (Configuration Properties > CUDA C/C++ > Common). Добавляем папку inc, которая у меня находится по адресу:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\CUDALibraries\common\inc\
Затем «Компоновщик -> Ввод» в тех же «Свойствах конфигурации» (Linker > Input). Ищем «дополнительные зависимости» (Additional Dependencies). Только не долго. Добавляем cudart.lib.
Итак, если Вы дочитали эти 1000 с лишним слов, значит Вы достигли успеха! Да есть же! Осталось проверить работоспособность нашей радости. Для этого можно взять какую-нибудь написать что-то вроде:
using namespace std;
__device__ int Summa(float *Massiv, unsigned int KolvElem) float Summa = 0;
int i=0;
while(i
i++;
>
return Summa;
>
__global__ void Podschet(float *c, float *Massiv)
*c = Summa(Massiv, 20);
>
__host__ int main( void ) float Arr[20];
float c;
float *dev_c;
cudaMalloc((void**)&dev_c, sizeof(float));
float *dev_c2;
cudaMalloc((void**)&dev_c2, sizeof(float) * 20);
cudaMemcpy(dev_c2, Arr, sizeof(float)*20, cudaMemcpyHostToDevice) ;
cudaEventCreate(&syncEvent);
cudaEventRecord(syncEvent, 0);
cudaEventSynchronize(syncEvent);
Читайте также: