Пример получения информации об имеющихся GPU

   
На этом шаге мы рассмотрим небольшой пример приложения с использованием технологии CUDA.

  •    
    Создадим приложение, которое получает информацию о всех видеокартах компании NVIDIA, имеющихся на компьютере.Для этого откроем NVIDIA Nsight Eclipse Edition Release 6.5.
    Появится следующее окно:


    Рис. 1. Установка рабочей директории

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


    Рис. 2. Среда программирования NVIDIA Nsight Eclipse Edition Release 6.5

  •    
    Создадим проект. Для этого нажмем сочетание клавиш Shift + Alt + N. Откроется окно, в котором выберем CUDA C/C++ Project.

       
    Появится следующее окно:


    Рис. 3. Создание пустого проекта

       
    В поле Project name зададим имя проекта. Пусть имя проекта будет firstProject.

       
    Далее нажмем кнопку Next>. Потом нажмем кнопку Finish. После этого у нас будет пустой проект.

  •    
    В левой части среды программирования располагается дерево каталогов нашего проекта.


    Рис. 4. Дерево каталогов проекта

       
    Добавим к проекту файл, в котором будет находиться текст программы. Для этого щелкнем правой клавишей мыши на имени папки firstProject. Далее выберем New -> File. Пусть имя нашего файла будет main.cu. Далее нажимаем кнопку Finish.

  •    
    Теперь все готово для работы. Напишем следующую программу:

    #include <cstdio>
    #include <cuda.h>
    #include <cuda_runtime.h>
    int main(){
     int deviceCount = 0;
     cudaDeviceProp devProp;
    
     cudaGetDeviceCount(&deviceCount);
     printf("Найдено устройств: %d\n", deviceCount);
    
     for(int i = 0; i < deviceCount; ++i){
      cudaGetDeviceProperties(&devProp, i);
    
      printf("Устройство %d\n", i+1);
      printf("Compute Capability: %d.%d\n", devProp.major, devProp.minor);
      printf("Имя: %s\n", devProp.name);
      printf("Общая глобальная память: %d\n", devProp.totalGlobalMem);
      printf("Разделяемая память на блок: %d\n", devProp.sharedMemPerBlock);
      printf("Количество регистров на блок: %d\n", devProp.regsPerBlock);
      printf("Общая константная память: %d\n", devProp.totalConstMem);
      printf("Максимальное количество нитей на блоке: %d\n", 
        devProp.maxThreadsPerBlock);
      printf("Максимальное количество нитей в сетке: %d %d %d\n", 
        devProp.maxThreadsDim[0],devProp.maxThreadsDim[1],devProp.maxThreadsDim[2]);
      printf("Максимальный размер сетки: %d %d %d\n", 
        devProp.maxGridSize[0],devProp.maxGridSize[1],devProp.maxGridSize[2]);
      printf("Размер wrap-a: %d\n", devProp.warpSize);
     }
    
      return 0;
    }
    

       
    Проект можно взять здесь.

  •    
    Для того, чтобы скомпилировать проект нужно сначала нажать Ctrl+B, потом Ctrl+F11, потом OK. Если все было сделано без ошибок, то в нижней части среды программирования
    появится информация об имеющихся GPU.


    Рис. 5. Окно консоли

  •    
    На следующем шаге мы рассмотрим спецификаторы доступа.



    Вы можете оставить комментарий, или Трекбэк с вашего сайта.

    Оставить комментарий