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

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

Содержание

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

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


Слайд 1





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

Слайд 2





ОСОБЕННОСТИ CUDA APIs
Виды CUDA APIs и возможности CUDA-устройств
Описание слайда:
ОСОБЕННОСТИ CUDA APIs Виды CUDA APIs и возможности CUDA-устройств

Слайд 3





Виды CUDA APIs
CUDA Driver API
Ручная инициализация контекста GPU
Отсутствуют CUDA-расширения для C++
Код CPU может компилироваться без nvcc
CUDA Runtime API
Автоматическая инициализация контекста GPU
Наличие CUDA-расширений для C++
Описание слайда:
Виды CUDA APIs CUDA Driver API Ручная инициализация контекста GPU Отсутствуют CUDA-расширения для C++ Код CPU может компилироваться без nvcc CUDA Runtime API Автоматическая инициализация контекста GPU Наличие CUDA-расширений для C++

Слайд 4





Выбор CUDA API
CUDA Driver API
Больше гибкости ( + )
Сложность кода ( – )
CUDA Runtime API
Меньше гибкости ( – )
Простота кода ( + )
Описание слайда:
Выбор CUDA API CUDA Driver API Больше гибкости ( + ) Сложность кода ( – ) CUDA Runtime API Меньше гибкости ( – ) Простота кода ( + )

Слайд 5





Совместимость CUDA API
Имеется обратная совместимость версий
Описание слайда:
Совместимость CUDA API Имеется обратная совместимость версий

Слайд 6





Вычислительные возможности GPU
Capability – это версия архитектуры CUDA GPU, которая указывает на его вычислительные возможности и особенности
Описание слайда:
Вычислительные возможности GPU Capability – это версия архитектуры CUDA GPU, которая указывает на его вычислительные возможности и особенности

Слайд 7





Оценка производительности
Способы оценки эффективности приложений CUDA
Описание слайда:
Оценка производительности Способы оценки эффективности приложений CUDA

Слайд 8





Время выполнения
Общее время вычислений на GPU
Время выполнения участка кода GPU
Описание слайда:
Время выполнения Общее время вычислений на GPU Время выполнения участка кода GPU

Слайд 9





Таймеры CPU
Таймеры CPU позволяют замерять общее время выполнения вычислений на GPU
Описание слайда:
Таймеры CPU Таймеры CPU позволяют замерять общее время выполнения вычислений на GPU

Слайд 10





Таймеры CUDA
Таймеры CUDA позволяют замерять время выполнения участка кода GPU
Описание слайда:
Таймеры CUDA Таймеры CUDA позволяют замерять время выполнения участка кода GPU

Слайд 11





Скорость передачи данных
Теоретическая пропускная способность
FDDRAM * (RDDRAM/8) * sizeof(float),
где FDDRAM – частота, RDDRAM – разрядность шины
Эффективная пропускная способность
(BR+ BW) / time,
где BR и BW – объем прочитанной/записанной информации
Реальная пропускная способность
Описание слайда:
Скорость передачи данных Теоретическая пропускная способность FDDRAM * (RDDRAM/8) * sizeof(float), где FDDRAM – частота, RDDRAM – разрядность шины Эффективная пропускная способность (BR+ BW) / time, где BR и BW – объем прочитанной/записанной информации Реальная пропускная способность

Слайд 12





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

Слайд 13





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

Слайд 14





Типы памяти устройства
Streaming Multiprocessor
Регистровая память
Разделяемая память
Память констант
Texture Processing Cluster
Память текстур
DDRAM
Локальная память
Глобальная память
Описание слайда:
Типы памяти устройства Streaming Multiprocessor Регистровая память Разделяемая память Память констант Texture Processing Cluster Память текстур DDRAM Локальная память Глобальная память

Слайд 15





Передача данных Host/Device
Является дорогостоящей операцией
Возможна асинхронная передача
Описание слайда:
Передача данных Host/Device Является дорогостоящей операцией Возможна асинхронная передача

Слайд 16





Асинхронная передача данных
Копирование данных и выполнение ядра можно осуществлять параллельно
Описание слайда:
Асинхронная передача данных Копирование данных и выполнение ядра можно осуществлять параллельно

Слайд 17





Возможная оптимизация
Синхронная передача данных в GPU
Описание слайда:
Возможная оптимизация Синхронная передача данных в GPU

Слайд 18





Нулевое копирование (Zero Copy)
Прямое обращение к памяти Host’а
Встроенные видеокарты
Использование кэша CPU
Описание слайда:
Нулевое копирование (Zero Copy) Прямое обращение к памяти Host’а Встроенные видеокарты Использование кэша CPU

Слайд 19





Объединенное чтение DDRAM
Выравнивание исходных данных по границе слова
Потоки warp’а должны осуществлять одновременное чтение DDRAM
Описание слайда:
Объединенное чтение DDRAM Выравнивание исходных данных по границе слова Потоки warp’а должны осуществлять одновременное чтение DDRAM

Слайд 20





Разделяемая память и конфликты
Общая для всех потоков блока
Распределяется между блоками
Разбивается на банки (32-битные слова)
Описание слайда:
Разделяемая память и конфликты Общая для всех потоков блока Распределяется между блоками Разбивается на банки (32-битные слова)

Слайд 21





Регистровое давление
Регистры жестко распределяются между потоками мультипроцессора
При большом количестве потоков возникает конфликт доступа к регистрам
Описание слайда:
Регистровое давление Регистры жестко распределяются между потоками мультипроцессора При большом количестве потоков возникает конфликт доступа к регистрам

Слайд 22





Выбор оптимальной топологии
Методы оценки топологии вычислений CUDA
Описание слайда:
Выбор оптимальной топологии Методы оценки топологии вычислений CUDA

Слайд 23





Степень покрытия
Степень покрытия мультипроцессора – это отношение числа активных warp'ов к максимально возможному числу активных warp'ов
По количеству используемых регистров
С учетом топологии вычислений
Без учета топологии вычислений
По размеру используемой разделяемой памяти
Описание слайда:
Степень покрытия Степень покрытия мультипроцессора – это отношение числа активных warp'ов к максимально возможному числу активных warp'ов По количеству используемых регистров С учетом топологии вычислений Без учета топологии вычислений По размеру используемой разделяемой памяти

Слайд 24





Определение степени покрытия
CUDA GPU:
8192 регистра
768 потоков на мультипроцессор
Топология:
12 регистров на ядро
128 потоков в блоке
Tmax = 8192 регистров / 12 регистров = 682 потока
Treal = int(682 / 128) * 128 = 640 потоков
С = Тreal / Tmax = 83%
Описание слайда:
Определение степени покрытия CUDA GPU: 8192 регистра 768 потоков на мультипроцессор Топология: 12 регистров на ядро 128 потоков в блоке Tmax = 8192 регистров / 12 регистров = 682 потока Treal = int(682 / 128) * 128 = 640 потоков С = Тreal / Tmax = 83%

Слайд 25





Оптимизация кода
Оптимизация инструкций CUDA
Описание слайда:
Оптимизация кода Оптимизация инструкций CUDA

Слайд 26





Регистровая зависимость
Инструкция использует регистр, значение которого было получено при выполнении предыдущей инструкции
Описание слайда:
Регистровая зависимость Инструкция использует регистр, значение которого было получено при выполнении предыдущей инструкции

Слайд 27





Float vs Double
Арифметические операции с float-числами осуществляются быстрей, чем с double-числами
Рекомендуется использовать суффикс «f» при объявлении числовых констант, например, 3.14f
Описание слайда:
Float vs Double Арифметические операции с float-числами осуществляются быстрей, чем с double-числами Рекомендуется использовать суффикс «f» при объявлении числовых констант, например, 3.14f

Слайд 28





Деление чисел
При делении чисел на степень двойки рекомендуется использовать оператор сдвига
Описание слайда:
Деление чисел При делении чисел на степень двойки рекомендуется использовать оператор сдвига

Слайд 29





Степень числа
Для известных целых значений степеней рекомендуется использовать явное умножение вместо вызова pow()
Описание слайда:
Степень числа Для известных целых значений степеней рекомендуется использовать явное умножение вместо вызова pow()

Слайд 30





Часто используемые функции
Обратный квадратный корень
rsqrtf() / rsqrt()
Прочие арифметические операции
expf2() / exp2()	– экспонента во 2-й степени
expf10() / exp10()	– экспонента в 10-й степени
cbrtf() / cart()		– экспонента в степени 1/3
rcbrtf() / rebut()	– экспонента в степени -1/3
Описание слайда:
Часто используемые функции Обратный квадратный корень rsqrtf() / rsqrt() Прочие арифметические операции expf2() / exp2() – экспонента во 2-й степени expf10() / exp10() – экспонента в 10-й степени cbrtf() / cart() – экспонента в степени 1/3 rcbrtf() / rebut() – экспонента в степени -1/3

Слайд 31





Точность vs Скорость
Аппаратные аналоги функций
__sinf() / sinf()
__cosf() / cosf()
__expf() / expf()
Совмещенные функции
sincosf() / sincos()
Описание слайда:
Точность vs Скорость Аппаратные аналоги функций __sinf() / sinf() __cosf() / cosf() __expf() / expf() Совмещенные функции sincosf() / sincos()

Слайд 32





Управление потоком команд
Общие рекомендации по написанию кода
Описание слайда:
Управление потоком команд Общие рекомендации по написанию кода

Слайд 33





Операторы ветвления
Инструкции управления потоком команд (if, switch, for, while, do-while) отрицательно сказываются на производительности
В идеале все потоки warp'а должны идти по одному пути, иначе увеличивается количество выполняемых инструкций и возможно последовательное выполнение
Описание слайда:
Операторы ветвления Инструкции управления потоком команд (if, switch, for, while, do-while) отрицательно сказываются на производительности В идеале все потоки warp'а должны идти по одному пути, иначе увеличивается количество выполняемых инструкций и возможно последовательное выполнение

Слайд 34





Предикативная запись
Описание слайда:
Предикативная запись

Слайд 35





Отладка и профилирование
Отладка и профилирование приложений CUDA
Описание слайда:
Отладка и профилирование Отладка и профилирование приложений CUDA

Слайд 36





Существующие утилиты
Linux
CUDA-GDB 
http://developer.nvidia.com/cuda-gdb
Windows Vista & Windows 7
NVIDIA Parallel Nsight
http://developer.nvidia.com/nvidia-parallel-nsight
Описание слайда:
Существующие утилиты Linux CUDA-GDB http://developer.nvidia.com/cuda-gdb Windows Vista & Windows 7 NVIDIA Parallel Nsight http://developer.nvidia.com/nvidia-parallel-nsight

Слайд 37





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

Слайд 38





Причины рассогласования
Основные причины рассогласования результатов вычислений на GPU и CPU
Усечение double чисел до float при отсутствии аппаратной поддержки double
Неассоциативность арифметических операций с дробными числами
Небольшие отклонения от стандарта IEEE 754
Особенности архитектуры процессоров x86
Описание слайда:
Причины рассогласования Основные причины рассогласования результатов вычислений на GPU и CPU Усечение double чисел до float при отсутствии аппаратной поддержки double Неассоциативность арифметических операций с дробными числами Небольшие отклонения от стандарта IEEE 754 Особенности архитектуры процессоров x86

Слайд 39





Литература
NVIDIA Developer Zone
http://developer.nvidia.com/cuda
NVIDIA Parallel Nsight
http://developer.nvidia.com/cuda-gdb
CUDA C Best Practices Guide
http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Best_Practices_Guide.pdf
Описание слайда:
Литература NVIDIA Developer Zone http://developer.nvidia.com/cuda NVIDIA Parallel Nsight http://developer.nvidia.com/cuda-gdb CUDA C Best Practices Guide http://developer.download.nvidia.com/compute/cuda/4_0/toolkit/docs/CUDA_C_Best_Practices_Guide.pdf

Слайд 40





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



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