Слайды и текст доклада
Pic.1
Разработка параллельных программ для GPU Введение в CUDA
Pic.2
АППАРАТНЫЕ Особенности GPU Краткий обзор архитектурных особенностей GPU
Pic.3
Основные тенденции Переход к многопроцессорным системам Развития технологий параллельного программирования OpenMP, MPI, TPL etc. Простота в использовании
Pic.4
Классификация архитектур Виды параллелизма На уровне данных (Data) На уровне задач (Instruction)
Pic.5
Архитектура многоядерных CPU Кэш первого уровня для инструкций (L1-I) для данных (L1-D) Кэш второго уровня на одном кристалле используется раздельно Проблема синхронизации кэш-памяти
Pic.6
Архитектура GPU: Device
Pic.7
Архитектура GPU: TPC Кластер текстурных блоков (TPC) Память для текстур Потоковый мультипроцессор
Pic.8
Архитектура GPU: SM Память констант Память инструкций Регистровая память Разделяемая память 8 скалярных процессоров 2 суперфункциональных блока
Pic.9
Основные отличия GPU от CPU Высокая степень параллелизма (SIMT) Минимальные затраты на кэш-память Ограничения функциональности
Pic.10
Развитие вычислений на GPU Развитие технологии неграфических вычислений
Pic.12
GPGPU General-Purpose Computation on GPU Вычисления на GPU общего (неграфического) назначения AMD FireStream NVIDIA CUDA DirectCompute (DirectX 10) OpenCL
Pic.13
Программная модель CUDA Основные понятия и определения CUDA
Pic.14
CUDA – Compute Unified Device Architecture Host – CPU (Central Processing Unit) Device – GPU (Graphics Processing Unit)
Pic.15
Организация работы CUDA GPU
Pic.16
Warp и латентность Warp Порция потоков для выполнения на потоковом мультипроцессоре (SM) Латентность Общая задержка всех потоков warp’а при выполнении инструкции
Pic.17
Топология блоков (block) Возможна 1, 2 и 3-мерная топология Количество потоков в блоке ограничено (512)
Pic.18
Топология сетки блоков (grid) Возможна 1 и 2-мерная топология Количество блоков в каждом измерении ограничено 65536=216
Pic.19
Адресация элементов данных CUDA предоставляет встроенные переменные, которые идентифицируют блоки и потоки blockIdx blockDim threadIdx
Pic.20
Барьерная синхронизация Синхронизация потоков блока осуществляется встроенным оператором __synchronize
Pic.21
CUDA: Расширение C++ Особенности написания программ для GPU CUDA
Pic.22
Расширение языка С++ Новые типы данных Спецификаторы для функций Спецификаторы для переменных Встроенные переменные (для ядра) Директива для запуска ядра
Pic.24
Типы данных CUDA 1, 2, 3 и 4-мерные вектора базовых типов Целые: (u)char, (u)int, (u)short, (u)long, longlong Дробные: float, double Пример: float(1), float2, float3, float4 dim3 ~ uint3 Пример: …
Pic.25
Спецификаторы функций
Pic.26
Спецификаторы функций Ядро помечается __global__ Ядро не может возвращать значение Возможно совместное использование __host__ и __device__ Спецификаторы __global__ и __host__ не могут использоваться …
Pic.27
Ограничения функций GPU Не поддерживается рекурсия Не поддерживаются static-переменные Нельзя брать адрес функции __device__ Не поддерживается переменное число аргументов
Pic.28
Спецификаторы переменных
Pic.29
Ограничения переменных GPU Переменные __shared__ не могут инициализироваться при объявлении Запись в __constant__ может производить только host через CUDA API Спецификаторы нельзя применять к полям …
Pic.30
Переменные ядра dim3 gridDim unit3 blockIdx dim3 blockDim uint3 threadIdx int warpSize
Pic.31
Директива запуска ядра Kernel<<<blocks, threads>>>(data) blocks – число блоков в сетке threads – число потоков в блоке
Pic.32
Общая структура программы CUDA __global__ void Kernel(float* data) { . . . } void main() { . . . Kernel<<<blocks, threads>>>(data); . . . }
Pic.33
Предустановки Видеокарта NVIDIA с поддержкой CUDA Драйвера устройства с поддержкой CUDA NVIDIA CUDA Toolkit NVIDIA CUDA SDK NVIDIA Nsight Visual Studio 2008+ Компилятор Visual C++ 9. 0+
Pic.34
Литература NVIDIA Developer Zone NVIDAI CUDA – Неграфические вычисления на графических процессорах Создание простого приложения CUDA в Visual Studio 2010
Скачать презентацию
Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!