Вы находитесь на странице: 1из 12

Технология NVIDIA CUDA

 
 

Подготовил: студент КНиИТ 1 курс 171 группа


Берденев Владислав
Технология CUDA
Технология CUDA — это программно-аппаратная вычислительная
архитектура NVIDIA, основанная на расширении языка Си, которая
даёт возможность организации доступа к набору инструкций
графического ускорителя и управления его памятью при
организации параллельных вычислений.

«Технология NVIDIA CUDA» Берденев Владислав


Основные характеристики CUDA:
• унифицированное программно-аппаратное решение для
параллельных вычислений на видеочипах NVIDIA;
• большой набор поддерживаемых решений, от мобильных до
мультичиповых;
• стандартный язык программирования Си;
• стандартные библиотеки численного анализа FFT (быстрое
преобразование Фурье) и BLAS (линейная алгебра);
• оптимизированный обмен данными между CPU и GPU;
• возможность разработки на низком уровне.

«Технология NVIDIA CUDA» Берденев Владислав


Преимущества и ограничения CUDA

Рисунок 1 - Традиционная модель программирования GPGPU


«Технология NVIDIA CUDA» Берденев Владислав
Преимущества CUDA
• интерфейс программирования приложений CUDA основан на
стандартном языке программирования Си с расширениями, что
упрощает процесс изучения и внедрения архитектуры CUDA;
• более эффективная передача данных между системной и
видеопамятью отсутствие необходимости в графических API с
избыточностью и накладными расходами;
• линейная адресация памяти, и gather и scatter, возможность
записи по произвольным адресам;
• аппаратная поддержка целочисленных и битовых операций.

«Технология NVIDIA CUDA» Берденев Владислав


Ограничения CUDA
• отсутствие поддержки рекурсии для выполняемых функций;
• минимальная ширина блока в 32 потока;
• закрытая архитектура CUDA, принадлежащая NVIDIA.

«Технология NVIDIA CUDA» Берденев Владислав


Состав NVIDIA CUDA
CUDA включает два API:
• высокого уровня (CUDA Runtime API);
• и низкого (CUDA Driver API).

Также CUDA имеет две библиотеки:


• CUBLAS — CUDA вариант BLAS , предназначенный
для вычислений задач линейной алгебры и
использующий прямой доступ к ресурсам GPU;
• CUFFT — CUDA вариант библиотеки Fast Fourier
Transform для расчёта быстрого преобразования
Фурье, широко используемого при обработке
сигналов.. Рисунок 2 - Состав NVIDIA CUDA

«Технология NVIDIA CUDA» Берденев Владислав


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

Рисунок 3 - Модель программирования CUDA


«Технология NVIDIA CUDA» Берденев Владислав
Модель программирования CUDA
Модель программирования в CUDA предполагает группирование
потоков.
Потоки объединяются в блоки потоков (thread block) —
одномерные или двумерные сетки потоков, взаимодействующих
между собой при помощи разделяемой памяти и точек
синхронизации. 
Блоки потоков выполняются в виде небольших групп, называемых
варп (warp), размер которых — 32 потока.
Группировка блоков в сетки позволяет уйти от ограничений и
применить ядро к большему числу потоков за один вызов.
«Технология NVIDIA CUDA» Берденев Владислав
Среда программирования
В состав CUDA входят runtime библиотеки:

• общая часть, предоставляющая


встроенные векторные типы и
подмножества вызовов RTL,
поддерживаемые на CPU и GPU;
• CPU-компонента, для управления одним
или несколькими GPU;
• GPU-компонента, предоставляющая Рисунок 4 - Стадии компиляции CUDA-приложения
специфические функции для GPU.
«Технология NVIDIA CUDA» Берденев Владислав
Заключение
Представленная компанией NVIDIA программно-аппаратная
архитектура для расчётов на видеочипах CUDA хорошо подходит
для решения широкого круга задач с высоким параллелизмом.
CUDA работает на большом количестве видеочипов NVIDIA, и
улучшает модель программирования GPU, значительно упрощая её
и добавляя большое количество возможностей, таких как
разделяемая память, возможность синхронизации потоков,
вычисления с двойной точностью и целочисленные операции.

«Технология NVIDIA CUDA» Берденев Владислав


Спасибо за внимание!

Подготовил: студент КНиИТ 1 курс 171 группа


Берденев Владислав