Для начала CUDA надо скачать Заходим на http://www.nvidia.com/object/cuda_get.html выбираем операционную систему в выпадающем списке при этом неже появляются доступные для скачивания пакеты. Нам нужен CUDA Driver, CUDA Toolkit, CUDA SDK для чего все это надо можно прочесть тут http://www.nvidia.ru/object/cuda_learn_ru.html. Скачали. Теперь устанавливаем, надеюсь проблем с эти не будет. VisualStudio 2008 Express Edition можно взять с сайта Microsoft тем более что она бесплатна. Устанавливаем. Теперь попробуем настроить все это дело, что бы можно было писать проекты на C(или почти на C) в среде VisualStudio используя технологию CUDA. Когда мы устновили CUDA Toolkit мы вместе с этим создадим несколько переменных окружения системы, это
- CUDA_BIN_PATH содержит путь к компилятору и рантайм библиоткам
- CUDA_INC_PATH путь к хедерам CUDA
- CUDA_LIB_PATH путь к библиотекам нужным для линковки
CUDA SDK это туча вских примеров и еще кое-чего очень нужного. Итак к главному. Создаем пустой проект в VS File->New->Project выбираем в шаблонах Empty Project в поле Name вбиваем имя проекта(у меня это cuda1) и жмем OK. У
нас в проводнике решения три папки
шлепаем две из них оставляя SourceFiles.
Затем вызываем контекстное меню по
оставшейся папке Add->NewItem,
в поле Name вобьем cuda1.cu
и Add. В открывшийся файл
вобьем чего нибудь типа
#include
<stdio.h>
#include
<stdlib.h>
#include
<cuda.h>
int
main(int
argc, char**
argv)
{
cudaDeviceProp
devprop;
int
iCount;
if
(cudaGetDeviceCount(&iCount)==cudaSuccess)
{
printf("Device
count: %d\n",iCount);
}
else
{
printf("%s",cudaGetErrorString(cudaGetLastError()));
return
0;
}
if
(cudaGetDevice(&iCount)==cudaSuccess)
{
printf("Device:
%d\n",iCount);
}
else
{
printf("%s",cudaGetErrorString(cudaGetLastError()));
return
0;
}
if
(cudaGetDeviceProperties(&devprop,0)==cudaSuccess)
{
printf("Device
name: %s\n",devprop.name);
printf("Global
mem:%dM\n",devprop.totalGlobalMem/1024/1024);
printf("MemPerBlock:
%dKb\n",devprop.sharedMemPerBlock/1024);
printf("RegsPerBlock:
%d\n",devprop.regsPerBlock);
printf("Warp
Size: %d\n",devprop.warpSize);
printf("MultiProcessorCount:
%d\n",devprop.multiProcessorCount);
printf("maxThreadsPerBlock:
%d\n",devprop.maxThreadsPerBlock);
printf("maxThreadsDim:
%dX%dX%d\n",devprop.maxThreadsDim[0],devprop.maxThreadsDim[1],devprop.maxThreadsDim[2]);
printf("maxGridSize:
%dX%dX%d\n",devprop.maxGridSize[0],devprop.maxGridSize[1],devprop.maxGridSize[2]);
}
else
{
printf("%s",cudaGetErrorString(cudaGetLastError()));
return
0;
}
system("pause");
return
0;
}
Далее, в папке с CUDA SDK есть папка C\common, а там файл Cuda.Rules (я так подозреваю это набор правил VS для правельной компиляции *.cu файлов), надобно его добавить, кликаем по cuda1 в проводнике решений, а затем Project->Custom Build Rules->Find Existing находим и открываем Cuda.Rules, в окне Available Rules File ставим напротив него галку, OK. Теперь добавим пути VS Tools->Options, выбираем Include Files, добавляем новый путь, вот тут нам пригодятся переменные окружения, вбиваем $(CUDA_INC_PATH). В Library Files добавляем $( CUDA_LIB_PATH). Жмем OK. Темерь надо добавить библиотеки для линковки Project->Property->Linker->Input и в поле Additional Dependencies вбиваем cuda.lib cudart.lib Вощникла одна маленькая проблема, подсветка синтаксиса не пашет(даже родного сишного, не говоря уже о всяких __global__). Это можно исправить так.
верстаем Вот вроде и все.
|