Презентация «Разработка параллельных программ для GPU. Введение в CUDA»

Смотреть слайды в полном размере
Презентация «Разработка параллельных программ для GPU. Введение в CUDA»

Вы можете ознакомиться с презентацией онлайн, просмотреть текст и слайды к ней, а также, в случае, если она вам подходит - скачать файл для редактирования или печати. Документ содержит 35 слайдов и доступен в формате ppt. Размер файла: 307.13 KB

Просмотреть и скачать

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


Скачать презентацию

Если вам понравился сайт и размещенные на нем материалы, пожалуйста, не забывайте поделиться этой страничкой в социальных сетях и с друзьями! Спасибо!