Получение информации об устройстве

Опубликовано марта 6, 2018 в Технология CUDA

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

К тому же часто в компьютере установлено несколько устройств с поддержкой CUDA. В таких ситуациях крайне желательно отличать один GPU от другого.

Например, во многие материнские платы уже интегрирован графический процессор NVIDIA. Если производитель или пользователь поставит в такой компьютер еще и дискретный графический процессор, то окажется, что процессоров с поддержкой CUDA два. А некоторые продукты NVIDIA, в частности карта GeForce GTX 295, изначально оснащены двумя GPU. Если в компьютере находится такая карта, то она тоже будет распознаваться как два процессора с поддержкой CUDA.

Прежде чем приступать к написанию кода для устройства, хорошо бы иметь механизм, позволяющий узнать, сколько устройств присутствует и какие возможности поддерживает каждое из них. К счастью, для получения подобной информации есть очень простой интерфейс. Первым делом нужно узнать, сколько в системе есть устройств, построенных на базе архитектуры CUDA. Они и смогут исполнять ядра, написанные на CUDA С. Узнать число CUDA-устройств позволяет функция cudaGetDeviceCount (). Нет нужды говорить, что мы претендуем на получение приза за лучшее имя функции.

После возврата из cudaGetDeviceCount () мы можем перебрать имеющиеся устройства и запросить информацию о каждом из них. Исполняющая среда CUDA возвращает свойства устройства в структуре типа cudaDeviceProp. Какие свойства мы можем получить? В версии CUDA 3.01 структура cudaDeviceProp объявлена следующим образом:

Получение информации об устройстве

Мы не хотели бы проваливаться в кроличью нору слишком глубоко или слишком быстро, поэтому пока отложим обсуждение этих свойств. На самом деле в представленном выше списке некоторые важные подробности опущены, поэтому имеет смысл поискать дополнительную информацию в руководстве NVIDIA CUDA Programming Guide. Когда вы начнете сами писать приложения, эти свойства окажутся весьма полезными. Ну а пока просто покажем, как опросить каждое устройство и распечатать его свойства.