Факультет прикладной математики и физики Кафедра вычислительной математики и программирования МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ (национальный исследовательский университет) (национальный исследовательский университет) Выполнил: Семенов С.А. Руководитель: Ревизников Д.Л. Лекция 2 « Основная терминология курса: шейдер, SM, ROP, TPC, SP. Типы параллельных архитектур: SISD, MISD, SIMD, MIMD, DSP »
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 2 Московский авиационный институт (национальный исследовательский университет ) Введение Схематическое изображение графического адаптера Классификация вычислительных систем по Флинну Схематическое устройство SMP Multithreading Bottleneck
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 3 Московский авиационный институт (национальный исследовательский университет ) Графическая плата NVIDIA
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 4 Московский авиационный институт (национальный исследовательский университет ) Средства обмена данными в компьютере Обмен данными – важнейшая составляющая компьютера Примеры: многопроцессорные системы, FPGA etc. По традиции отдельные устройства имеют разные возможности (уровни и способы) обмена данными Традиционная архитектура ориентирована на одно, центральное счётное устройство
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 5 Московский авиационный институт (национальный исследовательский университет ) Программная часть технологии CUDA Введем основные термины и отношения между ними [CUDA C Best Practices, 2010]. Хост (Host) центральный процессор, управляющий выполнением программы. Устройство (Device) видеоадаптер, выступающий в роли сопроцессора центрального процессора. Грид (Grid) объединение блоков, которые выполняются на одном устройстве. Блок (Block) объединение тредов, которое выполняется целиком на одном SM. Имеет свой уникальный идентификатор внутри гряда. Тред (Thread, поток) единица выполнения программы. Имеет свой уникальный идентификатор внутри блока. Варп (Warp) 32 последовательно идущих треда, выполняется физически одновременно. Ядро (Kernel) параллельная часть алгоритма, выполняется на гриде.
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 6 Московский авиационный институт (национальный исследовательский университет ) Схематическое изображение графического адаптера
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 7 Московский авиационный институт (национальный исследовательский университет ) DSP Цифровой сигнальный процессор (англ. Digital signal processor, DSP; сигнальный микропроцессор, СМП; процессор цифровых сигналов, ПЦС) специализированный микропроцессор, предназначенный для цифровой обработки сигналов (обычно в реальном масштабе времени). ЦСП строятся на основе Гарвардской архитектуры Стандартные ЦСП
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 8 Московский авиационный институт (национальный исследовательский университет )
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 9 Московский авиационный институт (национальный исследовательский университет ) Схематическое изображение устройства графического адаптера
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 10 Московский авиационный институт (национальный исследовательский университет ) Схематические особенности видеочипа
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 11 Московский авиационный институт (национальный исследовательский университет ) Схематическое расположение блоков GPU
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 12 Московский авиационный институт (национальный исследовательский университет ) Графический адаптер на «аппаратном» уровне TPC (Texture process cluster) ROP Raster Operations Pipeline SP (Streaming Processor) SM (Streaming Multiprocessor) SFU (Super Function Unit) WS Warp Scheduler
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 13 Московский авиационный институт (национальный исследовательский университет ) Классификация вычислительных систем по Флинну
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 14 Московский авиационный институт (национальный исследовательский университет ) Классы систем CPU (одноядерный) SISD (одновременно выполняется только одна инструкция над одним набором операндов); CPU (многоядерный) MIMD (Одновременно несколько ядер могут работать совершенно независимо, каждое как SISD); GPU (NVIDIA ComputeCapability версии < 2.0) SIMD (одновременно на графическом адаптере может выполняться только один поток вычислений, который работает с большим набором данных); GPU (NVIDIA ComputeCapability версии 2.0) MIMD (одновременно на графическом адаптере может выполняться несколько потоков вычислений, каждый из которых работает с большим набором данных). Таким образом видно, что графические процессоры изначально предназначены для параллельного решения одной массивно- параллельной задачи.
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 15 Московский авиационный институт (национальный исследовательский университет ) Классификация систем CPU – SISD –Multithreading: позволяет запускать множество потоков – параллелизм на уровне задач (MIMD) или данных (SIMD) –SSE: набор 128 битных регистров ЦПУ можно запаковать 4 32 битных скаляра и проводить над ними операции одновременно (SIMD) GPU – SIMD* Звездочка стоит для того, чтобы вы обратили внимание. На следующих лекциях вы увидите, что GPU не совсем SIMD архитектура а скорее SIMT (simultaneous multithreading): * разные блоки могут выполнять разный код (без потери производительности) * внутри одного блока можно выполнять разный код (с потерей производительности)
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 16 Московский авиационный институт (национальный исследовательский университет ) SIMT (Single instruction, multiple threads) Параллельно на каждом SM выполняется большое число отдельных нитей (threads) Нити подряд разбиваются на warp (по 32 нити) и SM управляет выполнением warp Нити в пределах одного warp выполняются физически параллельно Большое число warp покрывает латентность
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 17 Московский авиационный институт (национальный исследовательский университет ) Схематическое изображение устройства TPC и SM
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 18 Московский авиационный институт (национальный исследовательский университет ) Symmetric Multiprocessor Architecture (SMP) Каждый процессор имеет свои L1 и L2 кэши подсоединен к общей шине отслеживает доступ других процессоров к памяти для обеспечения единого образа памяти (например, один процессор хочет изменить данные, кэшированные другим процессором)
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 19 Московский авиационный институт (национальный исследовательский университет ) Symmetric Multiprocessor Architecture (SMP)
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 20 Московский авиационный институт (национальный исследовательский университет ) Программная модель CUDA Параллельная часть кода выполняется как большое количество нитей (threads) Нити группируются в блоки (blocks) фиксированного размера Блоки объединяются в сеть блоков (grid) Ядро выполняется на сетке из блоков Каждая нить и блок имеют свой уникальный идентификатор
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 21 Московский авиационный институт (национальный исследовательский университет ) Что такое ВОРП (WARP)? Device делает 1 grid в любой момент SM обрабатывает 1 или более blocks Каждый Block разделён на SIMD группы, внутри которых одни и те же инструкции выполняются реально одновременно над различными данными (warps) warp size=16/32 Связывание в ворпы детерминировано в порядке нарастания threadID threadID=TIDX.x+TIDX.y*Dx+TI DX.z*Dx*Dy Полуворп – первая или вторая половина ворпа
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 22 Московский авиационный институт (национальный исследовательский университет ) Итоги лекции В результате лекции Вы должны : Понимать возможности использования GPU для расчётов с точки зрения пропускной способности системы обмена данными компьютера Иметь понятие об организации разработки приложений Достаточные знания для начала самостоятельной работы
Факультет прикладной математики и физики Кафедра Вычислительной математики и программирования 23 Московский авиационный институт (национальный исследовательский университет )