Как скомпилировать приложение CUDA для Visual Studio 2010? - PullRequest
4 голосов
/ 17 октября 2010

Как скомпилировать приложение CUDA для Visual Studio 2010?

Вот мои шаги: 1. Создайте пустой C ++ проект без предварительно скомпилированных заголовков. 2. Добавьте main.cpp

int main()
{
 return 0;
}
  1. Добавить kernels.cu

    Я сослался на пример проекта MAtrixMul и пошагово скопировал его настройки. теперь это может быть выполнено

# включает "cuda.h"

__global__ void VecAdd(float* A, float* B, float* C)
{
 int i = threadId.x;
 C[i] = A[i] + B[i];
}
  1. Щелкните правой кнопкой мыши по проекту -> Настройки сборки -> Проверить cuda 3.2
  2. kernels.cu -> свойства -> Компилировать с CUDA C / C ++
  3. TRY Compiling: я получаю ошибку:

Ошибка 37: ошибка: Эта версия CUDA Toolkit не поддерживает v100 компилятор. Пожалуйста, убедитесь, что Свойство Platform Toolset имеет значение V90 под общим узлом свойства проекта. C: \ Program Files (X86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ BuildCustomizations \ CUDA 3.1.цели 157 4 dfdfs

  1. Изменить набор инструментов платформы на v90
  2. TRY Compiling: я получаю ошибки:

Ошибка 38, ошибка MSB3721: команда "" C: \ Program Files \ NVIDIA GPU вычисления Инструментарий \ CUDA \ v3.1 \ Bin \ nvcc.exe» -gencode = арка = compute_10, код = \ "sm_10, compute_10 \" --use-local-env --cl-version 2008 -ccbin "C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ bin "-I" C: \ Program Files \ NVIDIA GPU Computing Инструментарий \ CUDA \ v3.1 \ include "-G0 --keep-dir "Debug \" -maxrregcount = 32 - машина 32 - компилировать -D_NEXUS_DEBUG -g -Xcompiler "/ EHsc / nologo / Od / Zi / MDd" -o "Debug \ kernels.obj" "E: \ Projects Зондирование \ dfdfs \ kernels.cu"» выход с кодом 2 . C: \ Program Files (X86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ BuildCustomizations \ CUDA 3.1.цели 272 4 dfdfs

Ошибка 37: ошибка: идентификатор "threadId" является undefined E: \ Projects! Probing \ dfdfs \ kernels.cu 5 1 dfdfs

Пожалуйста, помогите мне.

Спасибо, Илья

Ответы [ 4 ]

5 голосов
/ 17 ноября 2010

Да, я сделал, и это работает.

  1. Создать проект C ++

  2. Проект (щелчок правой кнопкой мыши) -> Настройка сборки Проверьте «Компилятор Cuda 3.2» *

  3. Добавить cudart.lib в свойства-> компоновщик-> ввод-> дополнительные зависимости

  4. Добавить main.cu -> свойства Тип элемента = CUDA C / C ++ *

  5. Проект -> Свойства -> Свойства конфигурации -> Общие -> Набор инструментов v90 **

*) появится после установки Nvidia Parallel Nsight.Будьте внимательны, для этого нужны специальные драйверы, подробнее на домашней странице NSight)

**) вам нужно установить Visual C ++ 2008 Express.

В любом случае, пример проекта по-прежнему должен быть доступен на мое сообщение на форуме nvidia .Проблема, на которую я жалуюсь, это просто устаревшие драйверы.

1 голос
/ 17 октября 2010

Я нашел этот пост на форумах cuda на nVidia. Один из модераторов говорит (09 ноября: мы пока не поддерживаем VS2010).

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

Если у вас установлена ​​последняя версия, проверьте и проверьте, поддерживает ли инструментарий CUDA VS2010.

v90 - это способ обращения к компилятору, который поставляется с VS2008, поэтому я предполагаю, что VS2010 - это компилятор v100.

Возможно, у вас есть подписка MSDN и вы можете вернуться к VS2008.

Этот пост SO также может показаться, что CUDA не поддерживает компилятор VS2010 (пока!)

0 голосов
/ 18 октября 2010

Я сослался на пример проекта MAtrixMul и пошагово скопировал его настройки.он может быть соответствует сейчас, но не обрабатывает никаких вычислений.Проблема описана здесь, на SO, в деталях

Вы можете просмотреть мой проект со всеми необходимыми ему данными из моего сообщения на форумах nvidia (2,7 кб)

Спасибо, Илья

0 голосов
/ 18 октября 2010

Visual Studio 2010 определенно поддерживается - обязательно используйте недавно выпущенный nSight 1.5 (не бета).Я не обновил вопрос, который задал, но @portland, вы выполнили все правильные шаги. У вас просто есть опечатка в вашем ядре.

Вы указали threadId.x вместо threadIdx.x - обратите внимание на x.

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