Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
40 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
161.36 kB
Просмотров:
76
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Разработка параллельных](/documents_6/576ce4c95520a3126d31d75e64f4467d/img0.jpg)
Содержание слайда: Разработка параллельных программ для GPU
Обзор CUDA API
№2 слайд![ОСОБЕННОСТИ CUDA APIs Виды](/documents_6/576ce4c95520a3126d31d75e64f4467d/img1.jpg)
Содержание слайда: ОСОБЕННОСТИ CUDA APIs
Виды CUDA APIs и возможности CUDA-устройств
№3 слайд![Виды CUDA APIs CUDA Driver](/documents_6/576ce4c95520a3126d31d75e64f4467d/img2.jpg)
Содержание слайда: Виды CUDA APIs
CUDA Driver API
Ручная инициализация контекста GPU
Отсутствуют CUDA-расширения для C++
Код CPU может компилироваться без nvcc
CUDA Runtime API
Автоматическая инициализация контекста GPU
Наличие CUDA-расширений для C++
№4 слайд![Выбор CUDA API CUDA Driver](/documents_6/576ce4c95520a3126d31d75e64f4467d/img3.jpg)
Содержание слайда: Выбор CUDA API
CUDA Driver API
Больше гибкости ( + )
Сложность кода ( – )
CUDA Runtime API
Меньше гибкости ( – )
Простота кода ( + )
№5 слайд![Совместимость CUDA API](/documents_6/576ce4c95520a3126d31d75e64f4467d/img4.jpg)
Содержание слайда: Совместимость CUDA API
Имеется обратная совместимость версий
№6 слайд![Вычислительные возможности](/documents_6/576ce4c95520a3126d31d75e64f4467d/img5.jpg)
Содержание слайда: Вычислительные возможности GPU
Capability – это версия архитектуры CUDA GPU, которая указывает на его вычислительные возможности и особенности
№7 слайд![Оценка производительности](/documents_6/576ce4c95520a3126d31d75e64f4467d/img6.jpg)
Содержание слайда: Оценка производительности
Способы оценки эффективности приложений CUDA
№8 слайд![Время выполнения Общее время](/documents_6/576ce4c95520a3126d31d75e64f4467d/img7.jpg)
Содержание слайда: Время выполнения
Общее время вычислений на GPU
Время выполнения участка кода GPU
№9 слайд![Таймеры CPU Таймеры CPU](/documents_6/576ce4c95520a3126d31d75e64f4467d/img8.jpg)
Содержание слайда: Таймеры CPU
Таймеры CPU позволяют замерять общее время выполнения вычислений на GPU
№10 слайд![Таймеры CUDA Таймеры CUDA](/documents_6/576ce4c95520a3126d31d75e64f4467d/img9.jpg)
Содержание слайда: Таймеры CUDA
Таймеры CUDA позволяют замерять время выполнения участка кода GPU
№11 слайд![Скорость передачи данных](/documents_6/576ce4c95520a3126d31d75e64f4467d/img10.jpg)
Содержание слайда: Скорость передачи данных
Теоретическая пропускная способность
FDDRAM * (RDDRAM/8) * sizeof(float),
где FDDRAM – частота, RDDRAM – разрядность шины
Эффективная пропускная способность
(BR+ BW) / time,
где BR и BW – объем прочитанной/записанной информации
Реальная пропускная способность
№12 слайд![Оптимизация работы с памятью](/documents_6/576ce4c95520a3126d31d75e64f4467d/img11.jpg)
Содержание слайда: Оптимизация работы с памятью
Способы оптимизации работы с памятью CUDA GPU
№13 слайд![Архитектура CUDA GPU](/documents_6/576ce4c95520a3126d31d75e64f4467d/img12.jpg)
Содержание слайда: Архитектура CUDA GPU
№14 слайд![Типы памяти устройства](/documents_6/576ce4c95520a3126d31d75e64f4467d/img13.jpg)
Содержание слайда: Типы памяти устройства
Streaming Multiprocessor
Регистровая память
Разделяемая память
Память констант
Texture Processing Cluster
Память текстур
DDRAM
Локальная память
Глобальная память
№15 слайд![Передача данных Host Device](/documents_6/576ce4c95520a3126d31d75e64f4467d/img14.jpg)
Содержание слайда: Передача данных Host/Device
Является дорогостоящей операцией
Возможна асинхронная передача
№16 слайд![Асинхронная передача данных](/documents_6/576ce4c95520a3126d31d75e64f4467d/img15.jpg)
Содержание слайда: Асинхронная передача данных
Копирование данных и выполнение ядра можно осуществлять параллельно
№17 слайд![Возможная оптимизация](/documents_6/576ce4c95520a3126d31d75e64f4467d/img16.jpg)
Содержание слайда: Возможная оптимизация
Синхронная передача данных в GPU
№18 слайд![Нулевое копирование Zero Copy](/documents_6/576ce4c95520a3126d31d75e64f4467d/img17.jpg)
Содержание слайда: Нулевое копирование (Zero Copy)
Прямое обращение к памяти Host’а
Встроенные видеокарты
Использование кэша CPU
№19 слайд![Объединенное чтение DDRAM](/documents_6/576ce4c95520a3126d31d75e64f4467d/img18.jpg)
Содержание слайда: Объединенное чтение DDRAM
Выравнивание исходных данных по границе слова
Потоки warp’а должны осуществлять одновременное чтение DDRAM
№20 слайд![Разделяемая память и](/documents_6/576ce4c95520a3126d31d75e64f4467d/img19.jpg)
Содержание слайда: Разделяемая память и конфликты
Общая для всех потоков блока
Распределяется между блоками
Разбивается на банки (32-битные слова)
№21 слайд![Регистровое давление Регистры](/documents_6/576ce4c95520a3126d31d75e64f4467d/img20.jpg)
Содержание слайда: Регистровое давление
Регистры жестко распределяются между потоками мультипроцессора
При большом количестве потоков возникает конфликт доступа к регистрам
№22 слайд![Выбор оптимальной топологии](/documents_6/576ce4c95520a3126d31d75e64f4467d/img21.jpg)
Содержание слайда: Выбор оптимальной топологии
Методы оценки топологии вычислений CUDA
№23 слайд![Степень покрытия Степень](/documents_6/576ce4c95520a3126d31d75e64f4467d/img22.jpg)
Содержание слайда: Степень покрытия
Степень покрытия мультипроцессора – это отношение числа активных warp'ов к максимально возможному числу активных warp'ов
По количеству используемых регистров
С учетом топологии вычислений
Без учета топологии вычислений
По размеру используемой разделяемой памяти
№24 слайд![Определение степени покрытия](/documents_6/576ce4c95520a3126d31d75e64f4467d/img23.jpg)
Содержание слайда: Определение степени покрытия
CUDA GPU:
8192 регистра
768 потоков на мультипроцессор
Топология:
12 регистров на ядро
128 потоков в блоке
Tmax = 8192 регистров / 12 регистров = 682 потока
Treal = int(682 / 128) * 128 = 640 потоков
С = Тreal / Tmax = 83%
№25 слайд![Оптимизация кода Оптимизация](/documents_6/576ce4c95520a3126d31d75e64f4467d/img24.jpg)
Содержание слайда: Оптимизация кода
Оптимизация инструкций CUDA
№26 слайд![Регистровая зависимость](/documents_6/576ce4c95520a3126d31d75e64f4467d/img25.jpg)
Содержание слайда: Регистровая зависимость
Инструкция использует регистр, значение которого было получено при выполнении предыдущей инструкции
№27 слайд![Float vs Double](/documents_6/576ce4c95520a3126d31d75e64f4467d/img26.jpg)
Содержание слайда: Float vs Double
Арифметические операции с float-числами осуществляются быстрей, чем с double-числами
Рекомендуется использовать суффикс «f» при объявлении числовых констант, например, 3.14f
№28 слайд![Деление чисел При делении](/documents_6/576ce4c95520a3126d31d75e64f4467d/img27.jpg)
Содержание слайда: Деление чисел
При делении чисел на степень двойки рекомендуется использовать оператор сдвига
№29 слайд![Степень числа Для известных](/documents_6/576ce4c95520a3126d31d75e64f4467d/img28.jpg)
Содержание слайда: Степень числа
Для известных целых значений степеней рекомендуется использовать явное умножение вместо вызова pow()
№30 слайд![Часто используемые функции](/documents_6/576ce4c95520a3126d31d75e64f4467d/img29.jpg)
Содержание слайда: Часто используемые функции
Обратный квадратный корень
rsqrtf() / rsqrt()
Прочие арифметические операции
expf2() / exp2() – экспонента во 2-й степени
expf10() / exp10() – экспонента в 10-й степени
cbrtf() / cart() – экспонента в степени 1/3
rcbrtf() / rebut() – экспонента в степени -1/3
№31 слайд![Точность vs Скорость](/documents_6/576ce4c95520a3126d31d75e64f4467d/img30.jpg)
Содержание слайда: Точность vs Скорость
Аппаратные аналоги функций
__sinf() / sinf()
__cosf() / cosf()
__expf() / expf()
Совмещенные функции
sincosf() / sincos()
№32 слайд![Управление потоком команд](/documents_6/576ce4c95520a3126d31d75e64f4467d/img31.jpg)
Содержание слайда: Управление потоком команд
Общие рекомендации по написанию кода
№33 слайд![Операторы ветвления](/documents_6/576ce4c95520a3126d31d75e64f4467d/img32.jpg)
Содержание слайда: Операторы ветвления
Инструкции управления потоком команд (if, switch, for, while, do-while) отрицательно сказываются на производительности
В идеале все потоки warp'а должны идти по одному пути, иначе увеличивается количество выполняемых инструкций и возможно последовательное выполнение
№34 слайд![Предикативная запись](/documents_6/576ce4c95520a3126d31d75e64f4467d/img33.jpg)
Содержание слайда: Предикативная запись
№35 слайд![Отладка и профилирование](/documents_6/576ce4c95520a3126d31d75e64f4467d/img34.jpg)
Содержание слайда: Отладка и профилирование
Отладка и профилирование приложений CUDA
№36 слайд![Существующие утилиты Linux](/documents_6/576ce4c95520a3126d31d75e64f4467d/img35.jpg)
Содержание слайда: Существующие утилиты
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](/documents_6/576ce4c95520a3126d31d75e64f4467d/img36.jpg)
Содержание слайда: АППАРАТНЫЕ Особенности GPU
Краткий обзор архитектурных особенностей GPU
№38 слайд![Причины рассогласования](/documents_6/576ce4c95520a3126d31d75e64f4467d/img37.jpg)
Содержание слайда: Причины рассогласования
Основные причины рассогласования результатов вычислений на GPU и CPU
Усечение double чисел до float при отсутствии аппаратной поддержки double
Неассоциативность арифметических операций с дробными числами
Небольшие отклонения от стандарта IEEE 754
Особенности архитектуры процессоров x86
№39 слайд![Литература NVIDIA Developer](/documents_6/576ce4c95520a3126d31d75e64f4467d/img38.jpg)
Содержание слайда: Литература
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 слайд![Вопросы?](/documents_6/576ce4c95520a3126d31d75e64f4467d/img39.jpg)
Содержание слайда: Вопросы?