Данная статья поможет вам быстро начать программировать приложения использующие библиотеку NVIDIA CUDA, при условии, что вы уже умеете программировать на С++ в среде Microsoft Visual Studio (в данной статье показано на примере версии 2010 года) и владеете навыками установки сторонних библиотек и компонентов, а также прямыми руками ;) Поехали!
1. Устанавливаем Microsoft Visual Studio 2010 и необходимые компоненты.
2. Далее скачиваем по ссылке: https://developer.nvidia.com/cuda-downloads, дистрибутив CUDA Toolkit+SDK в соответствии с конфигурацией того компьютера на котором вы будете программировать. Например в моем случае это ноутбук с 64-x разрядной операционной системой Windows 7 для которого я скачиваю соответствующий дистрибутив.
3. Устанавливаем скачанный SDK, установка стандартная, единственное лишь обратите внимание на попытку установщика установить видеодрайвер более старой версии, я эту опцию отключил так как у меня уже стоял обновленный драйвер.
4. Запускаем MVS. Далее Файл => Создать => Проект => NVIDIA => CUDA => вводим имя проекта => ОК.
5. Теперь у нас есть MVS CUDA проект, в нем мы видим файл kernel.cu с примером кода. Нам этот код не понадобиться, смело удаляйте его и вставляйте вместо него вот этот:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
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");
}
system("pause");
return 0;
}
6. Компилируем (F7), запускаем (F5). Если все сделали правильно, на экране отобразяться параметры вашего GPU устройства.
Исходники проекта (MVS2010) выложил здесь: http://code.google.com/p/re-cuda-team/
