Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cuda.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
651.26 Кб
Скачать

1.4 Модель программирования cuda

CUDA включает два интерфейса программирования приложений (application programming interface, API): высокого уровня (CUDA Runtime API) и низкого (CUDA Driver API) (рисунок 1.2) [7].

Рисунок 1.2 - Связь CUDA API с прикладными программами

GPU является вычислительным устройством - сопроцессором (device) для центрального процессора (host). Ядром (kernel) называется код программы, выполняемый параллельно на GPU.

Модель программирования в CUDA предполагает группирование потоков. Потоки объединяются в блоки потоков (thread block) - одномерные или двумерные сетки потоков, взаимодействующих между собой при помощи разделяемой памяти и точек синхронизации. Программа (ядро, kernel) исполняется над сеткой (grid) блоков потоков (thread blocks) (рисунок 1.3). Каждый блок может быть одно-, двух- или трехмерным по форме. 

Рисунок 1.3 - Группировка потоков

Этапы выполнения CUDA-программы:

- 1 - подготовительный - задание параметров распараллеливания и других параметров;

- 2 - выделение памяти на GPU и помещение в нее данных для проведения вычисления;

- 3 - передача параметров распараллеливания и других параметров в функцию и выполнение этой функции на GPU;

- 4 - получение результатов вычисления из памяти GPU и освобождение памяти GPU.

1.5 Версии вычислительных возможностей cuda и программного обеспечения cuda Toolkit

Устройства CUDA имеют разные версии вычислительных возможностей, каждая версия имеет определенные характеристики (рисунки 1.4, 1.5).

Рисунок 1.4 - Версии вычислительных возможностей для GPU

Рисунок 1.5 - Некоторые характеристики версий вычислительных возможностей

CUDA Toolkit содержит драйверы, компиляторы, отладчики, графический интерфейс, библиотеки и другие инструменты для разработки программ (таблица 1.1).

Таблица 1.1. История версий вычислительных возможностей (compute capability) и CUDA Toolkit

год

версии compute capability

версии CUDA Toolkit

2006

1.0

-

2007

1.1

1.0, 1.1

2008

1.2, 1.3

2.0

2009

-

2.1, 2.2, 2.3

2010

2.0, 2.1

3.0, 3.1, 3.2

2011

-

4.0, 4.1

2012

3.0

4.2, 5.0

2013

3.5

-

1.6 Cuda Toolkit версии 5 и версия вычислительных возможностей 3

CUDA Toolkit версии 5 вышла в октябре 2012. Основные нововведения:

- динамический параллелизм. Потоки на GPU могут динамически рождать новые потоки [8]. Сводя к минимуму пересылку данных в CPU и обратно, динамический параллелизм упрощает параллельное программирование. Это также позволяет применять CUDA к более широкому спектру алгоритмов;

- вызываемые библиотеки из кода, выполняемого на GPU. Такая поддержка связывания объектов обеспечивает более эффективный процесс создания больших приложений на CUDA путем компилирования многочисленных исходных файлов CUDA в отдельные объектные файлы и их объединения в большие приложения и библиотеки;

- поддержка GPUDirect для RDMA - обеспечивает прямую связь между GPU и другими устройствами PCI-E и поддерживает прямой доступ к памяти между сетевыми картами и GPU. Это уменьшает задержки между узлами GPU в кластерах;

- NVIDIA Nsight Eclipse Edition - быстрое написание кода CUDA в среде Eclipse с помощью встроенного редактора CUDA и автоматического рефакторинга.