Шаг 2.
Технология CUDA.
Основные понятия

    На этом шаге мы рассмотрим основные понятия.

    Предложенная компанией Nvidia технология CUDA (Compute Unified Device Architecture) заметно облегчает написание GPGPU - приложений (GPGPU - General-Purpose computing on Graphics Processing Units). Она не использует графических API (Application Programming Interface) и свободна от ограничений, свойственных этим API.

    Данная технология предназначена для разработки приложений для массивно-параллельных вычислительных устройств. На сегодняшний момент поддерживаемыми устройствами являются все видеокарты компании Nvidia, начиная с серии GeForce8, а также специализированные для решения расчетных задач видеокарты семейства Tesla.

    Основными преимуществами технологии CUDA являются ее простота - все программы пишутся на "расширенном" языке С, наличие хорошей документации, набор готовых инструментов, включающий профайлер, набор готовых библиотек, кроссплатформенность (поддерживаются Microsoft Windows, Linux и Mac OS X), а также CUDA является бесплатной (ее можно скачать с сайта www.developer.nvidia.com).

    Технология CUDA построена так, что GPU (называемый устройством, device) выступает в роли массивно-параллельного сопроцессора к CPU - Central processing unit (называемому host). Программа на CUDA задействует как CPU, так и GPU. При этом обычный (последовательный, то есть непараллельный) код выполняется на CPU, а для массивно-параллельных вычислений соответствующий код выполняется на GPU как набор одновременно выполняющихся нитей (потоков, threads).

    При этом очень важно понимать, что между нитями на CPU и нитями на GPU есть принципиальные различия:

    За счет того, что программы в CUDA пишутся фактически на обычном языке C (на самом деле для частей, выполняющихся на CPU, можно использовать язык C++), в котором добавлено небольшое число новых конструкций (спецификаторы типа, встроенные переменные и типы, директива запуска ядра), написание программ с использованием технологии CUDA оказывается заметно проще, чем при использовании традиционного GPGPU (то есть использующего графические API для доступа к GPU). Кроме того, в распоряжении программиста оказывается гораздо больше контроля и возможностей по работе с GPU.

    На следующем шаге мы рассмотрим CUDA host API.




Предыдущий шаг Содержание Следующий шаг