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

Нажмите для полного просмотра!
Разработка параллельных программ для GPU. Введение в CUDA, слайд №1Разработка параллельных программ для GPU. Введение в CUDA, слайд №2Разработка параллельных программ для GPU. Введение в CUDA, слайд №3Разработка параллельных программ для GPU. Введение в CUDA, слайд №4Разработка параллельных программ для GPU. Введение в CUDA, слайд №5Разработка параллельных программ для GPU. Введение в CUDA, слайд №6Разработка параллельных программ для GPU. Введение в CUDA, слайд №7Разработка параллельных программ для GPU. Введение в CUDA, слайд №8Разработка параллельных программ для GPU. Введение в CUDA, слайд №9Разработка параллельных программ для GPU. Введение в CUDA, слайд №10Разработка параллельных программ для GPU. Введение в CUDA, слайд №11Разработка параллельных программ для GPU. Введение в CUDA, слайд №12Разработка параллельных программ для GPU. Введение в CUDA, слайд №13Разработка параллельных программ для GPU. Введение в CUDA, слайд №14Разработка параллельных программ для GPU. Введение в CUDA, слайд №15Разработка параллельных программ для GPU. Введение в CUDA, слайд №16Разработка параллельных программ для GPU. Введение в CUDA, слайд №17Разработка параллельных программ для GPU. Введение в CUDA, слайд №18Разработка параллельных программ для GPU. Введение в CUDA, слайд №19Разработка параллельных программ для GPU. Введение в CUDA, слайд №20Разработка параллельных программ для GPU. Введение в CUDA, слайд №21Разработка параллельных программ для GPU. Введение в CUDA, слайд №22Разработка параллельных программ для GPU. Введение в CUDA, слайд №23Разработка параллельных программ для GPU. Введение в CUDA, слайд №24Разработка параллельных программ для GPU. Введение в CUDA, слайд №25Разработка параллельных программ для GPU. Введение в CUDA, слайд №26Разработка параллельных программ для GPU. Введение в CUDA, слайд №27Разработка параллельных программ для GPU. Введение в CUDA, слайд №28Разработка параллельных программ для GPU. Введение в CUDA, слайд №29Разработка параллельных программ для GPU. Введение в CUDA, слайд №30Разработка параллельных программ для GPU. Введение в CUDA, слайд №31Разработка параллельных программ для GPU. Введение в CUDA, слайд №32Разработка параллельных программ для GPU. Введение в CUDA, слайд №33Разработка параллельных программ для GPU. Введение в CUDA, слайд №34Разработка параллельных программ для GPU. Введение в CUDA, слайд №35

Содержание

Вы можете ознакомиться и скачать презентацию на тему Разработка параллельных программ для GPU. Введение в CUDA. Доклад-сообщение содержит 35 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Разработка параллельных программ для GPU
Введение в CUDA
Описание слайда:
Разработка параллельных программ для GPU Введение в CUDA

Слайд 2





АППАРАТНЫЕ Особенности GPU
Краткий обзор архитектурных особенностей GPU
Описание слайда:
АППАРАТНЫЕ Особенности GPU Краткий обзор архитектурных особенностей GPU

Слайд 3





Основные тенденции
Переход к многопроцессорным системам
Развития технологий параллельного программирования
OpenMP, MPI, TPL etc.
Простота в использовании
Описание слайда:
Основные тенденции Переход к многопроцессорным системам Развития технологий параллельного программирования OpenMP, MPI, TPL etc. Простота в использовании

Слайд 4





Классификация архитектур
Виды параллелизма
На уровне данных (Data)
На уровне задач (Instruction)
Описание слайда:
Классификация архитектур Виды параллелизма На уровне данных (Data) На уровне задач (Instruction)

Слайд 5





Архитектура многоядерных CPU
Кэш первого уровня
для инструкций (L1-I)
для данных (L1-D)
Кэш второго уровня
на одном кристалле
используется раздельно
Проблема синхронизации кэш-памяти
Описание слайда:
Архитектура многоядерных CPU Кэш первого уровня для инструкций (L1-I) для данных (L1-D) Кэш второго уровня на одном кристалле используется раздельно Проблема синхронизации кэш-памяти

Слайд 6





Архитектура GPU: Device
Описание слайда:
Архитектура GPU: Device

Слайд 7





Архитектура GPU: TPC
Кластер текстурных блоков (TPC)
Память для текстур
Потоковый мультипроцессор
Описание слайда:
Архитектура GPU: TPC Кластер текстурных блоков (TPC) Память для текстур Потоковый мультипроцессор

Слайд 8





Архитектура GPU: SM
Память констант
Память инструкций
Регистровая память
Разделяемая память
8 скалярных процессоров
2 суперфункциональных блока
Описание слайда:
Архитектура GPU: SM Память констант Память инструкций Регистровая память Разделяемая память 8 скалярных процессоров 2 суперфункциональных блока

Слайд 9





Основные отличия GPU от CPU
Высокая степень параллелизма (SIMT)
Минимальные затраты на кэш-память
Ограничения функциональности
Описание слайда:
Основные отличия GPU от CPU Высокая степень параллелизма (SIMT) Минимальные затраты на кэш-память Ограничения функциональности

Слайд 10





Развитие вычислений на GPU
Развитие технологии неграфических вычислений
Описание слайда:
Развитие вычислений на GPU Развитие технологии неграфических вычислений

Слайд 11





Эволюция GPU
Описание слайда:
Эволюция GPU

Слайд 12





GPGPU
General-Purpose Computation on GPU
Вычисления на GPU общего (неграфического) назначения
AMD FireStream
NVIDIA CUDA
DirectCompute (DirectX 10)
OpenCL
Описание слайда:
GPGPU General-Purpose Computation on GPU Вычисления на GPU общего (неграфического) назначения AMD FireStream NVIDIA CUDA DirectCompute (DirectX 10) OpenCL

Слайд 13





Программная модель CUDA
Основные понятия и определения CUDA
Описание слайда:
Программная модель CUDA Основные понятия и определения CUDA

Слайд 14





CUDA – Compute Unified Device Architecture

Host – CPU (Central Processing Unit)
Device – GPU (Graphics Processing Unit)
Описание слайда:
CUDA – Compute Unified Device Architecture Host – CPU (Central Processing Unit) Device – GPU (Graphics Processing Unit)

Слайд 15





Организация работы CUDA GPU
Описание слайда:
Организация работы CUDA GPU

Слайд 16





Warp и латентность
Warp
Порция потоков для выполнения на потоковом мультипроцессоре (SM)
Латентность
Общая задержка всех потоков warp’а при выполнении инструкции
Описание слайда:
Warp и латентность Warp Порция потоков для выполнения на потоковом мультипроцессоре (SM) Латентность Общая задержка всех потоков warp’а при выполнении инструкции

Слайд 17





Топология блоков (block)
Возможна 1, 2 и 3-мерная топология
Количество потоков в блоке ограничено (512)
Описание слайда:
Топология блоков (block) Возможна 1, 2 и 3-мерная топология Количество потоков в блоке ограничено (512)

Слайд 18





Топология сетки блоков (grid)
Возможна 1 и 2-мерная топология
Количество блоков в каждом измерении ограничено 65536=216
Описание слайда:
Топология сетки блоков (grid) Возможна 1 и 2-мерная топология Количество блоков в каждом измерении ограничено 65536=216

Слайд 19





Адресация элементов данных
CUDA предоставляет встроенные переменные, которые идентифицируют блоки и потоки
blockIdx
blockDim
threadIdx
Описание слайда:
Адресация элементов данных CUDA предоставляет встроенные переменные, которые идентифицируют блоки и потоки blockIdx blockDim threadIdx

Слайд 20





Барьерная синхронизация
Синхронизация потоков блока осуществляется встроенным оператором __synchronize
Описание слайда:
Барьерная синхронизация Синхронизация потоков блока осуществляется встроенным оператором __synchronize

Слайд 21





CUDA: Расширение C++
Особенности написания программ для GPU CUDA
Описание слайда:
CUDA: Расширение C++ Особенности написания программ для GPU CUDA

Слайд 22





Расширение языка С++
Новые типы данных
Спецификаторы для функций
Спецификаторы для переменных
Встроенные переменные (для ядра)
Директива для запуска ядра
Описание слайда:
Расширение языка С++ Новые типы данных Спецификаторы для функций Спецификаторы для переменных Встроенные переменные (для ядра) Директива для запуска ядра

Слайд 23





Процесс компиляции
Описание слайда:
Процесс компиляции

Слайд 24





Типы данных CUDA
1, 2, 3 и 4-мерные вектора базовых типов
Целые: (u)char, (u)int, (u)short, (u)long, longlong
Дробные: float, double
Пример: float(1), float2, float3, float4
dim3 ~ uint3
Пример: dim3(n) = uint(n,1,1)
Описание слайда:
Типы данных CUDA 1, 2, 3 и 4-мерные вектора базовых типов Целые: (u)char, (u)int, (u)short, (u)long, longlong Дробные: float, double Пример: float(1), float2, float3, float4 dim3 ~ uint3 Пример: dim3(n) = uint(n,1,1)

Слайд 25





Спецификаторы функций
Описание слайда:
Спецификаторы функций

Слайд 26





Спецификаторы функций
Ядро помечается __global__
Ядро не может возвращать значение
Возможно совместное использование __host__ и __device__
Спецификаторы __global__ и __host__ не могут использоваться совместно
Описание слайда:
Спецификаторы функций Ядро помечается __global__ Ядро не может возвращать значение Возможно совместное использование __host__ и __device__ Спецификаторы __global__ и __host__ не могут использоваться совместно

Слайд 27





Ограничения функций GPU
Не поддерживается рекурсия
Не поддерживаются static-переменные
Нельзя брать адрес функции __device__
Не поддерживается переменное число аргументов
Описание слайда:
Ограничения функций GPU Не поддерживается рекурсия Не поддерживаются static-переменные Нельзя брать адрес функции __device__ Не поддерживается переменное число аргументов

Слайд 28





Спецификаторы переменных
Описание слайда:
Спецификаторы переменных

Слайд 29





Ограничения переменных GPU
Переменные __shared__ не могут инициализироваться при объявлении
Запись в __constant__ может производить только host через CUDA API
Спецификаторы нельзя применять к полям структур и union
Описание слайда:
Ограничения переменных GPU Переменные __shared__ не могут инициализироваться при объявлении Запись в __constant__ может производить только host через CUDA API Спецификаторы нельзя применять к полям структур и union

Слайд 30





Переменные ядра
 dim3 gridDim
 unit3 blockIdx
 dim3 blockDim
 uint3 threadIdx
 int warpSize
Описание слайда:
Переменные ядра dim3 gridDim unit3 blockIdx dim3 blockDim uint3 threadIdx int warpSize

Слайд 31





Директива запуска ядра
Kernel<<<blocks, threads>>>(data)
blocks – число блоков в сетке
threads – число потоков в блоке
Описание слайда:
Директива запуска ядра Kernel<<<blocks, threads>>>(data) blocks – число блоков в сетке threads – число потоков в блоке

Слайд 32





Общая структура программы CUDA
__global__ void Kernel(float* data)
{
     . . .
}
void main()
{
     . . .
     Kernel<<<blocks, threads>>>(data);
     . . .
}
Описание слайда:
Общая структура программы CUDA __global__ void Kernel(float* data) { . . . } void main() { . . . Kernel<<<blocks, threads>>>(data); . . . }

Слайд 33





Предустановки
Видеокарта NVIDIA с поддержкой CUDA
Драйвера устройства с поддержкой CUDA
NVIDIA CUDA Toolkit
NVIDIA CUDA SDK
NVIDIA Nsight
Visual Studio 2008+
Компилятор Visual C++ 9.0+
Описание слайда:
Предустановки Видеокарта NVIDIA с поддержкой CUDA Драйвера устройства с поддержкой CUDA NVIDIA CUDA Toolkit NVIDIA CUDA SDK NVIDIA Nsight Visual Studio 2008+ Компилятор Visual C++ 9.0+

Слайд 34





Литература
NVIDIA Developer Zone
http://developer.nvidia.com/cuda
NVIDAI CUDA – Неграфические вычисления на графических процессорах
http://www.ixbt.com/video3/cuda-1.shtml
Создание простого приложения CUDA в Visual Studio 2010
http://mezhov.blogspot.com/2011/09/cuda-visual-studio-2010.html
Описание слайда:
Литература NVIDIA Developer Zone http://developer.nvidia.com/cuda NVIDAI CUDA – Неграфические вычисления на графических процессорах http://www.ixbt.com/video3/cuda-1.shtml Создание простого приложения CUDA в Visual Studio 2010 http://mezhov.blogspot.com/2011/09/cuda-visual-studio-2010.html

Слайд 35





Вопросы?
Описание слайда:
Вопросы?



Похожие презентации
Mypresentation.ru
Загрузить презентацию