1 / 35

What is a GPU?

What is a GPU?.

paniz
Download Presentation

What is a GPU?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What is a GPU? “A Graphics Processing Unit or GPU (also occasionally called Visual Processing Unit or VPU) is a dedicated graphics rendering device for a personal computer or game console. Modern GPUs are very efficient at manipulating and displaying computer graphics, and their highly-parallel structure makes them more effective than typical CPUs for a range of complex algorithms.” - Definition from wikipedia.org • Radeon 9800 Pro

  2. History of GPUs • The pre-GPU era • VGAs in the 80s • 4 (or even 5) generations of GPUs in the last decade • Fixed functions vs. programmability • API support • OpenGL, Direct3D (v6.0 to v9.0) • Shader models (v1.0 – v3.0)

  3. Предыстория к GPGPU GPU Шейдеры Видео- ускоритель Сопроцессор 1990 1995 2000 2005 2010

  4. Why shifting from CPU to GPU? • Why not just keep increasing the CPU speed and leave the GPU to handle what is its best? • CPU speed is reaching a bottle neck (how many transistors can be integrated on a chip) • Solution, in the future, nano technology, short term, dual core machines (double CPUs), clustered CPUs, …, even grid computing and supercomputing • GPU facing the same problem, but still have space to press on due to its task specific designs and parallelism paradigm

  5. Существующие многоядерные системы Посмотрим на частоты CPU: • 2004 г. - Pentium 4, 3.46 GHz • 2005 г. - Pentium 4, 3.8 GHz • 2006 г. - Core Duo T2700, 2333 MHz • 2007 г. - Core 2 Duo E6700, 2.66 GHz • 2007 г. - Core 2 Duo E6800, 3 GHz • 2008 г. - Core 2 Duo E8600, 3.33 Ghz • 2009 г. - Core i7 950, 3.06 GHz

  6. Мотивация: Вычислительная Мощность Courtesy Ian Buck, John Owens

  7. An Aside: Вычислительная мощность • Почему GPU становятся мощнее так быстро? • Арифметика : особенности архитектуры GPUs позволяют относительно просто использовать дополнительныетранзисторы для вычислений, а не для кэша • Экономика : Многомиллиардная индустрия компьютерных игр вкладывает деньги в разработку все более совершенных GPU

  8. Мотивация: ГибкостьиТочность • Современные GPUs хорошопрограммируемы • Программируемыепиксельные, вершинные, видеопроцессоры • Установившаясяподдержка высокоуровневых языков программирования • Современные GPUs обеспечиваютвысокую точность вычислений • Аппаратная поддержка чисел с плавающей точкой одинарной точности (32 бита). Что достаточно много для многих(не всех) приложений

  9. Мотивация: Потенциал GPGPU • Кратко: • Гибкость и мощность GPUs делает их привлекательными длявычислений общего назначения • Сфера применения GPGPU очень широка – от алгоритмов компьютерной графики, таких как задача глобального освещения, до задач численных методов и ММС. • Цель: сделать доступными разработчикам недорогую вычислительную мощность GPU как вычислительного сопроцессора

  10. Проблемы: Сложность использования • GPUs разработаны для & направляемыкомпьютерными играми • Необычная модель программирования • Идиомы программированиясвязаны скомпьютерной графикой • Среда программирования сильно ограничена • Архитектура: • Высоко параллельная • Быстрое развитие • Нельзя просто “перенести”CPU код на GPU!

  11. Основы GPU :КлассическийГрафический Конвейер CPU GPU Graphics State • Упрощенный графический конвейер • Отметим что конвейер варьируем • Кэши, Списки и многое другое не показано Экранные треугольники (2D) Итоговые пиксели (Цвет, Глубина) Фрагменты (pre-pixels) Освещенные вершины (2D) Приложение Трансформация& Свет Сборка примитивов Растериза- ция Тени вершины (3D) Память ВК (Текстуры) Рендеринг в текстуру

  12. Программируемый вершинный процессор! Основы GPU : Современный Графический Конвейер CPU GPU Graphics State ВершинныеПроцессоры Освещенный вершины (2D) Фрагменты (pre-pixels) Итоговые пиксели (цвет, глубина) Экранные треугольники(2D) Приложение Transform Сборка Примитивов Растериза- ция Shade Вершины (3D) Память ВК (Текстуры) Рендеринг в текстуру • Программируемый фрагментный процессор!

  13. GPU Конвейер: Преобразования • Вершинный процессор (несколько параллельных) • Преобразования из глобальной системы координат в систему координат изображения • Повершенное вычисление света

  14. Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Геометрический процессор Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!

  15. GPU Конвейер: Растеризация • Растеризатор • Перевод геометрического пр. (вершины) в плоское пр. (фрагменты) • Фрагмент = фрагмент изображения • Пиксель + связанные с ним данные: цвет, глубина, трафарет, etc. • Интерполирование повершенных данных через пиксели

  16. Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Фрагментный процессор Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!

  17. GPU Конвейер: Тени • Фрагментный процессор (несколько параллельных) • Вычисление цвета для каждого пикселя • Возможность чтения из текстур (изображений)

  18. Программируемая сборка примитивов! Графический Конвейер последнего поколения CPU GPU Graphics State Xformed, Lit Vertices (2D) Screenspace triangles (2D) Фрагменты(pre-pixels) Итоговые пиксели (Цвет, глубина) Пиксельный процессор Приложение Вершинный процессор AssemblePrimitives Растериза- ция Фрагментный Процессор Вершины (3D) Текстуры Рендеринг в текстуру • Более гибкая адресация памяти!

  19. Deep Pipelines • think assembly line conveyer belt Vertex Shader Triangle Setup Fragment Shader Fragment Blender Frame- Buffer(s) Deep Pipelines

  20. Wide Pipelines (many conveyor belts) Vertex Shader Triangle Setup Fragment Shader Fragment Blender Frame- Buffer(s) Wide Pipelines Deep Pipelines

  21. Parallelism, Parallelism, Parallelism • Deep/Wide pipelines allow memory latency to be hidden. • If one fragment(or vertex) is waiting on a memory fetch, go work on another element for a while. • Don’t need expensive huge caches (unlike CPU’s) • Fill precious chip space with arithmetic logic units (ALU).

  22. The Big Bandwidth Bugaboo • Moving Data is expensive http://graphics.tomshardware.com/graphic/20040310/index.html CPU L1 L2 GPU 6.4 GB/sec DMA AGP Mem Main Memory Video Memory

  23. General Purpose Computing (GPGPU) • What’s the GPU good for? • Everything you can get it to do efficiently for you!!! • Physics • Collision Detection • AI • And yes, graphics too… Cullide: Naga Govindaraju et. al Skyworks, Mark Harris

  24. 0,1 1,1 0,0 1,0 General Purpose Computing • Texture Maps are arrays of data elements • Fragment Program is an “instruction” • Frame buffer holds the result of the SIMD operation m Fragment Program n m n m n Framebuffer Texture Maps (Multiple Data) ScreenFilling Quadrilateral Fragment Program (Single Instruction) Single Instruction Multiple Data/ Stream Processor

  25. SIMT (Single Instruction, Multiple Threads) • Параллельно на каждом SM выполняется большое число отдельных нитей (threads) • Нити подряд разбиваются на warp’ы (по 32 нити) и SM управляет выполнением warp’ов • Нити в пределах одного warp’а выполняются физически параллельно • Большое число warp’ов покрывает латентность

  26. Программная модель CUDA • GPU (device) это вычислительное устройство, которое: • Является сопроцессором к CPU (host) • Имеет собственную память (DRAM) • Выполняет одновременно очень много нитей

  27. Типы памяти в CUDA Самая быстрая – shared (on-chip) Самая медленная – глобальная (DRAM) Для ряда случаев можно использовать кэшируемую константную и текстурную память Доступ к памяти в CUDA идет отдельно для каждой половины warp’а (half-warp)

  28. Работа с памятью в CUDA Основа оптимизации – оптимизация работы с памятью Максимальное использование shared-памяти Использование специальных паттернов доступа к памяти, гарантирующих эффективный доступ Паттерны работают независимо в пределах каждого half-warp’а

  29. Программная модель памяти

  30. Программная модель CUDA • Последовательные части кода выполняются на CPU • Массивно-параллельные части кода выполняются на GPU как ядра • Отличия нитей между CPU и GPU • Нити на GPU очень «легкие» • HW планировщик задач • Для полноценной загрузки GPU нужны тысячи нитей • Для покрытия латентностей операций чтения / записи • Для покрытия латентностей sfu инструкций

  31. Программная модель CUDA Параллельная часть кода выполняется как большое количество нитей Нити группируются в блоки фиксированного размера Блоки объединяются в сеть блоков Ядро выполняется на сетке из блоков Каждая нить и блок имеют свой идентификатор

  32. Программная модель CUDA • Потоки в CUDA объединяются в блоки: • Возможна 1D, 2D, 3D топология блока • Общее кол-во потоков в блоке ограничено • В текущем HW это 512 потоков

  33. Программная модель CUDA • Блоки потоков объединяются в сетку (grid) потоков • Возможна 1D, 2D топология сетки блоков потоков

  34. Программная модель потоков Grid Block B (0:0) B (1:0) B (2:0) B (3:0) B (4:0) T (0:0:0) T (1:0:0) T (2:0:0) B (0:1) B (1:1) B (2:1) B (3:1) B (4:1) T (0:1:0) T (1:1:0) T (2:1:0) B (0:2) B (1:2) B (2:2) B (3:2) B (4:2) T (0:2:0) T (1:2:0) T (2:2:0) B (0:3) B (1:3) B (2:3) B (3:3) B (4:3) Приведен пример сетки из 20 блоков (5x4), в каждом блоке 18 (3x3x2) потоков. Всего в сетке 360 потоков.

More Related