SlideShare a Scribd company logo
1 of 46
Высшая школа экономики, Москва, 2013
www.hse.ru
ЛЕКЦИЯ 8
ВИДЕОАДАПТЕРЫ, ВИДЕОКАРТЫ
И УСКОРИТЕЛИ
Соболевский Алексей
ИНЖЕНЕРНАЯ И КОМПЬЮТЕРНАЯ
ГРАФИКА
2 КУРС
Высшая школа экономики, Москва, 2013
Темы лекции
• Что такое видеоадаптер/видеокарта?
• История и эволюция видеокарт
• Устройство современных видеокарт
• API современных видеокарт
• Параллельные вычисления на видеокартах
• Вычислительные кластеры на видеокартах
Высшая школа экономики, Москва, 2013
Немного истории
What does the Wiki say?
Видеокарта (также видеоадаптер, графический адаптер,
графическая плата, графическая карта, графический
ускоритель) — электронное устройство, преобразующее
графический образ, хранящийся, как содержимое памяти
компьютера (или самого адаптера), в форму, пригодную
для дальнейшего вывода на экран монитора.
Высшая школа экономики, Москва, 2013
Немного истории
• MDA (Monochrome Display Adapter)
• CGA (Color Graphics Adapter)
• EGA (Enhanced Graphics Adapter)
• VGA (Video Graphics Array)
– Графический контроллер
– видеопамять
– последовательный преобразователь
– контроллер атрибутов
– Синхронизатор
– контроллер ЭЛТ
Высшая школа экономики, Москва, 2013
Немного истории
CGA Adapter
Высшая школа экономики, Москва, 2013
Немного истории
CGA graphics
Высшая школа экономики, Москва, 2013
Немного истории
Test Drive Ferrari. CGA vs Now (NFS)
Высшая школа экономики, Москва, 2013
Немного истории
Раньше было:
Видеокарта (2D) + ускоритель (3D)
Сейчас:
Видеокарта (3D) + сопроцессоры (Shaders,
Physics)
Высшая школа экономики, Москва, 2013
Was ist GPU?
GPU (graphics processing unit) – устройство,
выполняющее графический рендеринг
(обработку).
Отличия от CPU:
•архитектура, максимально нацеленная на увеличение скорости
расчёта текстур и сложных графических объектов, а так же
микропрограмм, связанных с их обработкой
•ограниченный набор команд
Высшая школа экономики, Москва, 2013
¿Qué hay en la tarjeta gráfica?
• Графический процессор
• Видеоконтроллер
• Видео-ПЗУ
• Видеопамять
• Цифрово-аналоговый преобразователь
• Коннектор/разъём
Высшая школа экономики, Москва, 2013
Графический процессор
Собственно, это и есть GPU.
Очень много ядер
Очень-очень много ядер >.<
Высшая школа экономики, Москва, 2013
Графический процессор
Итого: почти в 100 раз больше ядер для вычислений по сравнению с CPU
Высшая школа экономики, Москва, 2013
Графический процессор
Почему их не используют
в качестве CPU?
Высшая школа экономики, Москва, 2013
Графический процессор
Высшая школа экономики, Москва, 2013
Видеоконтроллер
• Формирование изображения в
видеопамяти
• Обрабатывает запросы от CPU
• Передаёт данные на i/o (ЦАП, RAMDAC)
• Контроллер внутренней шины данных и
контроллер видеопамяти
• Внутренняя шина – 128 или 256 разрядов
против 32 на внешнюю шину
Высшая школа экономики, Москва, 2013
Видеопамять
• Кадровый буфер (Frame Buffer)
• Невидимые и промежуточные элементы
изображения и прочие данные
Высшая школа экономики, Москва, 2013
Видеопамять
Небольшой пример:
1024х768 * 24 бита цвет = 2,25 Мб
2,25 Мб*75Гц = 170 Мб/с (номинал, только
вывод)
1600х1200 * 32 бита * 75 Гц = 550 Мб/с
Высшая школа экономики, Москва, 2013
Видеопамять
• FPM DRAM
• VRAM
• WRAM
• EDO DRAM
• SDRAM
• DDR SDRAM
• SGRAM
• MDRAM
• RDRAM
Высшая школа экономики, Москва, 2013
Видеопамять
SDRAM
•Передача данных только по
одному фронту сигнала
синхроимпульса
•168 pins
DDR SDRAM
•Передача данных сразу по
двум фронтам сигнала
синхроимпульса
•184 pins
•«удвоенное» значение
частоты
Высшая школа экономики, Москва, 2013
ЦАП (RAMDAC)
Random Access Memory Digital-to-Analog Converter
•3 ЦАП (по 1 ЦАП на канал цветности) и 1 ЦАП для
гамма-коррекции
•Используется, в основном, для вывода на CRT
Высшая школа экономики, Москва, 2013
Видеокарта
Высшая школа экономики, Москва, 2013
Видеокарта
Высшая школа экономики, Москва, 2013
Видеокарта
• Около 4 000 000 000 транзисторов на одной плате
• Около 1 000 ядер на обработку
• Отдельные блоки для буферизации, растеризации,
обработки команд CUDA, Direct 3D, Open CL, Open GL
• Сенсоры, датчики, обработчики ошибок, синхронизация,
доп. интерфейсы
• Техпроцесс 20-25 нм
Высшая школа экономики, Москва, 2013
API
API (Application programming interface, Интерфейс
программирования приложений)
Дополнительные специальные функции для обработки
определённых типов данных
Open GL Direct 3D/X
Высшая школа экономики, Москва, 2013
Open GL
Высшая школа экономики, Москва, 2013
Direct 3D/X
?
Высшая школа экономики, Москва, 2013
Direct 3D/X
Высшая школа экономики, Москва, 2013
Direct 3D/X
DirectX – мощнейший набор библиотек, API и расширений
•Direct3D
•Direct2D
•DirectPlay
•DirectInput
•DirectSound
•DirectShow
•…
Высшая школа экономики, Москва, 2013
Direct 3D
Обработка:
•Rendering Pipeline
•Anti-aliasing and mip-mapping
•Alpha Blending
•Z-buffer
•Shaders
•…
Высшая школа экономики, Москва, 2013
Direct 3D
• Не портируется
• Проще в работе с готовыми функциями
• Менее гибкий
• Нет возможности скорректировать часть драйвера
устройства (видеокарты)
Высшая школа экономики, Москва, 2013
Direct 3D/X
Высшая школа экономики, Москва, 2013
Direct 3D/X vs OpenGL
void init_graphics(void)
{
// create the vertices using the CUSTOMVERTEX struct
CUSTOMVERTEX vertices[] =
{
{ -3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), },
{ 3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 0), },
{ -3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(255, 0, 0), },
{ 3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 255), },
{ -3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 255), },
{ 3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(255, 0, 0), },
{ -3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 0), },
{ 3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 255), },
};
// create a vertex buffer interface called v_buffer
d3ddev->CreateVertexBuffer(8*sizeof(CUSTOMVERTEX),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&v_buffer,
NULL);
….
// select the vertex and index buffers to use
d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));
d3ddev->SetIndices(i_buffer);
// draw the cube
d3ddev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12);
void display(){
// Clear screen and Z-buffer glClear(GL_COLOR_BUFFER_BIT|
GL_DEPTH_BUFFER_BIT);
// Reset transformations
glLoadIdentity();
// Other Transformations
// glTranslatef( 0.1, 0.0, 0.0 );
// Not included
// glRotatef( 180, 0.0, 1.0, 0.0 ); // Not included
// Rotate when user changes rotate_x and rotate_y
glRotatef( rotate_x, 1.0, 0.0, 0.0 );
glRotatef( rotate_y, 0.0, 1.0, 0.0 );
// Other Transformations
// glScalef( 2.0, 2.0, 0.0 ); // Not included
glBegin(GL_POLYGON);
glColor3f( 1.0, 0.0, 0.0 ); glVertex3f( 0.5, -0.5, -0.5 ); // P1 is red
glColor3f( 0.0, 1.0, 0.0 ); glVertex3f( 0.5, 0.5, -0.5 ); // P2 is green
glColor3f( 0.0, 0.0, 1.0 ); glVertex3f( -0.5, 0.5, -0.5 ); // P3 is blue
glColor3f( 1.0, 0.0, 1.0 ); glVertex3f( -0.5, -0.5, -0.5 ); // P4 is purple
glEnd();
int main(int argc, char* argv[]){
// Initialize GLUT and process user parameters
glutInit(&argc,argv);
// Request double buffered true color window with Z-buffer
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
// Create window
glutCreateWindow("Awesome Cube");
// Enable Z-buffer depth test
glEnable(GL_DEPTH_TEST);
// Callback functions
glutDisplayFunc(display); glutSpecialFunc(specialKeys);
// Pass control to GLUT for events
glutMainLoop();
// Return to OS
return 0;
}
Высшая школа экономики, Москва, 2013
Shaders
?
Высшая школа экономики, Москва, 2013
Shaders
Высшая школа экономики, Москва, 2013
Параллельные вычисления
Примеры задач для параллельного вычисления:
•Обработка графики для вывода на экран
•Параллельные вычисления однотипных задач «перебором»
•Поиск оптимального решения многопараметрической задачи
•…
Высшая школа экономики, Москва, 2013
Параллельные вычисления
Закон Амдала:
В случае, когда задача разделяется на несколько частей,
суммарное время её выполнения на параллельной системе
не может быть меньше времени выполнения самого
длинного фрагмента
α – доля только
«последовательных»
вычислений
p – количество ядер
вычисления
Высшая школа экономики, Москва, 2013
Параллельные вычисления
Высшая школа экономики, Москва, 2013
Параллельные вычисления
CUDA
Высшая школа экономики, Москва, 2013
CUDA
Программно-аппаратная архитектура параллельных
вычислений для Nvidia
Программы могут использовать GPU посредством:
•„Обращения к стандартным функциям библиотек (BLAS, FFTW)
– cublas dll (cublasemu dll)
– cufft.dll (cufftemu.dll)
+ очень просто
- НЕ очень эффективно
•„ Использования CUDA runtime API
•„ Использования CUDA driver API
Высшая школа экономики, Москва, 2013
CUDA
Высшая школа экономики, Москва, 2013
CUDA
CUDA driver API (функции cu*)
•„ Низкий уровень
– „ Тяжелее программировать
– „ Больший контроль над процессом
CUDA runtime API (функции cuda )*
•„ Более абстрактно чем driver API (простота)
•„ Возможность использовать эмуляцию устройства
Высшая школа экономики, Москва, 2013
CUDA
• Процессы объединяются в блоки (blocks), внутри которых
они имеют общую память (shared memory) и синхронное
исполнение
• Блоки объединяются в сетки (grids)
– Нет возможности предсказать очерёдность запуска блоков в сетке
– Между блоками нет и не может быть (см. выше) общей памяти
Высшая школа экономики, Москва, 2013
Высшая школа экономики, Москва, 2013
Вычислительные кластеры на видеокартах
• С/К «Ломоносов»
– 78 000 + ядер
– Реальная производительность – более 900 Тфлопс (i5 – около 100
Гфлопс)
– Использование спец. шины InfiniBand для коммутации (до 300
Гбит/сек)
– Гетерогенная архитектура
Высшая школа экономики, Москва, 2013
Вычислительные кластеры на видеокартах
• Области
– Нантехнологии
– Статистика
– Big Data
– Медицина
– …
Высшая школа экономики, Москва, 2013
Вопросы
?

More Related Content

Similar to 08 Видеокарты

Параллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахПараллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахAlex Tutubalin
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)Smolensk Computer Science Club
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Alex Tutubalin
 
презентация Adem
презентация Ademпрезентация Adem
презентация AdemAyubChirkaev
 
Gpudigitallab experimental studio
Gpudigitallab experimental studioGpudigitallab experimental studio
Gpudigitallab experimental studioOleg Gubanov
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012Alex Tutubalin
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Ontico
 
Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016mixARConference
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data MATLAB
 
Геометрическое ядро C3D
Геометрическое ядро C3DГеометрическое ядро C3D
Геометрическое ядро C3DArkadiy Kamnev
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Современные методы конструирования в ПТКИ Укркранэнерго
Современные методы конструирования в ПТКИ УкркранэнергоСовременные методы конструирования в ПТКИ Укркранэнерго
Современные методы конструирования в ПТКИ УкркранэнергоTanya Gadzevych
 
Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Anton Moiseev
 
Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...CEE-SEC(R)
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSUlarhat
 

Similar to 08 Видеокарты (20)

Параллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартахПараллельное программирование на современных видеокартах
Параллельное программирование на современных видеокартах
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
презентация Adem
презентация Ademпрезентация Adem
презентация Adem
 
Gpudigitallab experimental studio
Gpudigitallab experimental studioGpudigitallab experimental studio
Gpudigitallab experimental studio
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
 
введение в Gpu
введение в Gpuвведение в Gpu
введение в Gpu
 
Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016Денис Захаркин, VR Concept - MIXAR2016
Денис Захаркин, VR Concept - MIXAR2016
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
Геометрическое ядро C3D
Геометрическое ядро C3DГеометрическое ядро C3D
Геометрическое ядро C3D
 
9270
92709270
9270
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Листовка Model studio CS
Листовка Model studio CSЛистовка Model studio CS
Листовка Model studio CS
 
Современные методы конструирования в ПТКИ Укркранэнерго
Современные методы конструирования в ПТКИ УкркранэнергоСовременные методы конструирования в ПТКИ Укркранэнерго
Современные методы конструирования в ПТКИ Укркранэнерго
 
Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017Цифровая микроэлектроника для математиков и программистов 2017
Цифровая микроэлектроника для математиков и программистов 2017
 
Architect
ArchitectArchitect
Architect
 
Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...Технология предметно ориентированного программирования гетерогенных многоядер...
Технология предметно ориентированного программирования гетерогенных многоядер...
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 

08 Видеокарты

  • 1. Высшая школа экономики, Москва, 2013 www.hse.ru ЛЕКЦИЯ 8 ВИДЕОАДАПТЕРЫ, ВИДЕОКАРТЫ И УСКОРИТЕЛИ Соболевский Алексей ИНЖЕНЕРНАЯ И КОМПЬЮТЕРНАЯ ГРАФИКА 2 КУРС
  • 2. Высшая школа экономики, Москва, 2013 Темы лекции • Что такое видеоадаптер/видеокарта? • История и эволюция видеокарт • Устройство современных видеокарт • API современных видеокарт • Параллельные вычисления на видеокартах • Вычислительные кластеры на видеокартах
  • 3. Высшая школа экономики, Москва, 2013 Немного истории What does the Wiki say? Видеокарта (также видеоадаптер, графический адаптер, графическая плата, графическая карта, графический ускоритель) — электронное устройство, преобразующее графический образ, хранящийся, как содержимое памяти компьютера (или самого адаптера), в форму, пригодную для дальнейшего вывода на экран монитора.
  • 4. Высшая школа экономики, Москва, 2013 Немного истории • MDA (Monochrome Display Adapter) • CGA (Color Graphics Adapter) • EGA (Enhanced Graphics Adapter) • VGA (Video Graphics Array) – Графический контроллер – видеопамять – последовательный преобразователь – контроллер атрибутов – Синхронизатор – контроллер ЭЛТ
  • 5. Высшая школа экономики, Москва, 2013 Немного истории CGA Adapter
  • 6. Высшая школа экономики, Москва, 2013 Немного истории CGA graphics
  • 7. Высшая школа экономики, Москва, 2013 Немного истории Test Drive Ferrari. CGA vs Now (NFS)
  • 8. Высшая школа экономики, Москва, 2013 Немного истории Раньше было: Видеокарта (2D) + ускоритель (3D) Сейчас: Видеокарта (3D) + сопроцессоры (Shaders, Physics)
  • 9. Высшая школа экономики, Москва, 2013 Was ist GPU? GPU (graphics processing unit) – устройство, выполняющее графический рендеринг (обработку). Отличия от CPU: •архитектура, максимально нацеленная на увеличение скорости расчёта текстур и сложных графических объектов, а так же микропрограмм, связанных с их обработкой •ограниченный набор команд
  • 10. Высшая школа экономики, Москва, 2013 ¿Qué hay en la tarjeta gráfica? • Графический процессор • Видеоконтроллер • Видео-ПЗУ • Видеопамять • Цифрово-аналоговый преобразователь • Коннектор/разъём
  • 11. Высшая школа экономики, Москва, 2013 Графический процессор Собственно, это и есть GPU. Очень много ядер Очень-очень много ядер >.<
  • 12. Высшая школа экономики, Москва, 2013 Графический процессор Итого: почти в 100 раз больше ядер для вычислений по сравнению с CPU
  • 13. Высшая школа экономики, Москва, 2013 Графический процессор Почему их не используют в качестве CPU?
  • 14. Высшая школа экономики, Москва, 2013 Графический процессор
  • 15. Высшая школа экономики, Москва, 2013 Видеоконтроллер • Формирование изображения в видеопамяти • Обрабатывает запросы от CPU • Передаёт данные на i/o (ЦАП, RAMDAC) • Контроллер внутренней шины данных и контроллер видеопамяти • Внутренняя шина – 128 или 256 разрядов против 32 на внешнюю шину
  • 16. Высшая школа экономики, Москва, 2013 Видеопамять • Кадровый буфер (Frame Buffer) • Невидимые и промежуточные элементы изображения и прочие данные
  • 17. Высшая школа экономики, Москва, 2013 Видеопамять Небольшой пример: 1024х768 * 24 бита цвет = 2,25 Мб 2,25 Мб*75Гц = 170 Мб/с (номинал, только вывод) 1600х1200 * 32 бита * 75 Гц = 550 Мб/с
  • 18. Высшая школа экономики, Москва, 2013 Видеопамять • FPM DRAM • VRAM • WRAM • EDO DRAM • SDRAM • DDR SDRAM • SGRAM • MDRAM • RDRAM
  • 19. Высшая школа экономики, Москва, 2013 Видеопамять SDRAM •Передача данных только по одному фронту сигнала синхроимпульса •168 pins DDR SDRAM •Передача данных сразу по двум фронтам сигнала синхроимпульса •184 pins •«удвоенное» значение частоты
  • 20. Высшая школа экономики, Москва, 2013 ЦАП (RAMDAC) Random Access Memory Digital-to-Analog Converter •3 ЦАП (по 1 ЦАП на канал цветности) и 1 ЦАП для гамма-коррекции •Используется, в основном, для вывода на CRT
  • 21. Высшая школа экономики, Москва, 2013 Видеокарта
  • 22. Высшая школа экономики, Москва, 2013 Видеокарта
  • 23. Высшая школа экономики, Москва, 2013 Видеокарта • Около 4 000 000 000 транзисторов на одной плате • Около 1 000 ядер на обработку • Отдельные блоки для буферизации, растеризации, обработки команд CUDA, Direct 3D, Open CL, Open GL • Сенсоры, датчики, обработчики ошибок, синхронизация, доп. интерфейсы • Техпроцесс 20-25 нм
  • 24. Высшая школа экономики, Москва, 2013 API API (Application programming interface, Интерфейс программирования приложений) Дополнительные специальные функции для обработки определённых типов данных Open GL Direct 3D/X
  • 25. Высшая школа экономики, Москва, 2013 Open GL
  • 26. Высшая школа экономики, Москва, 2013 Direct 3D/X ?
  • 27. Высшая школа экономики, Москва, 2013 Direct 3D/X
  • 28. Высшая школа экономики, Москва, 2013 Direct 3D/X DirectX – мощнейший набор библиотек, API и расширений •Direct3D •Direct2D •DirectPlay •DirectInput •DirectSound •DirectShow •…
  • 29. Высшая школа экономики, Москва, 2013 Direct 3D Обработка: •Rendering Pipeline •Anti-aliasing and mip-mapping •Alpha Blending •Z-buffer •Shaders •…
  • 30. Высшая школа экономики, Москва, 2013 Direct 3D • Не портируется • Проще в работе с готовыми функциями • Менее гибкий • Нет возможности скорректировать часть драйвера устройства (видеокарты)
  • 31. Высшая школа экономики, Москва, 2013 Direct 3D/X
  • 32. Высшая школа экономики, Москва, 2013 Direct 3D/X vs OpenGL void init_graphics(void) { // create the vertices using the CUSTOMVERTEX struct CUSTOMVERTEX vertices[] = { { -3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 255), }, { 3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 0), }, { -3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(255, 0, 0), }, { 3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 255, 255), }, { -3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 255), }, { 3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(255, 0, 0), }, { -3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 0), }, { 3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 255, 255), }, }; // create a vertex buffer interface called v_buffer d3ddev->CreateVertexBuffer(8*sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &v_buffer, NULL); …. // select the vertex and index buffers to use d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX)); d3ddev->SetIndices(i_buffer); // draw the cube d3ddev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12); void display(){ // Clear screen and Z-buffer glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); // Reset transformations glLoadIdentity(); // Other Transformations // glTranslatef( 0.1, 0.0, 0.0 ); // Not included // glRotatef( 180, 0.0, 1.0, 0.0 ); // Not included // Rotate when user changes rotate_x and rotate_y glRotatef( rotate_x, 1.0, 0.0, 0.0 ); glRotatef( rotate_y, 0.0, 1.0, 0.0 ); // Other Transformations // glScalef( 2.0, 2.0, 0.0 ); // Not included glBegin(GL_POLYGON); glColor3f( 1.0, 0.0, 0.0 ); glVertex3f( 0.5, -0.5, -0.5 ); // P1 is red glColor3f( 0.0, 1.0, 0.0 ); glVertex3f( 0.5, 0.5, -0.5 ); // P2 is green glColor3f( 0.0, 0.0, 1.0 ); glVertex3f( -0.5, 0.5, -0.5 ); // P3 is blue glColor3f( 1.0, 0.0, 1.0 ); glVertex3f( -0.5, -0.5, -0.5 ); // P4 is purple glEnd(); int main(int argc, char* argv[]){ // Initialize GLUT and process user parameters glutInit(&argc,argv); // Request double buffered true color window with Z-buffer glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // Create window glutCreateWindow("Awesome Cube"); // Enable Z-buffer depth test glEnable(GL_DEPTH_TEST); // Callback functions glutDisplayFunc(display); glutSpecialFunc(specialKeys); // Pass control to GLUT for events glutMainLoop(); // Return to OS return 0; }
  • 33. Высшая школа экономики, Москва, 2013 Shaders ?
  • 34. Высшая школа экономики, Москва, 2013 Shaders
  • 35. Высшая школа экономики, Москва, 2013 Параллельные вычисления Примеры задач для параллельного вычисления: •Обработка графики для вывода на экран •Параллельные вычисления однотипных задач «перебором» •Поиск оптимального решения многопараметрической задачи •…
  • 36. Высшая школа экономики, Москва, 2013 Параллельные вычисления Закон Амдала: В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента α – доля только «последовательных» вычислений p – количество ядер вычисления
  • 37. Высшая школа экономики, Москва, 2013 Параллельные вычисления
  • 38. Высшая школа экономики, Москва, 2013 Параллельные вычисления CUDA
  • 39. Высшая школа экономики, Москва, 2013 CUDA Программно-аппаратная архитектура параллельных вычислений для Nvidia Программы могут использовать GPU посредством: •„Обращения к стандартным функциям библиотек (BLAS, FFTW) – cublas dll (cublasemu dll) – cufft.dll (cufftemu.dll) + очень просто - НЕ очень эффективно •„ Использования CUDA runtime API •„ Использования CUDA driver API
  • 41. Высшая школа экономики, Москва, 2013 CUDA CUDA driver API (функции cu*) •„ Низкий уровень – „ Тяжелее программировать – „ Больший контроль над процессом CUDA runtime API (функции cuda )* •„ Более абстрактно чем driver API (простота) •„ Возможность использовать эмуляцию устройства
  • 42. Высшая школа экономики, Москва, 2013 CUDA • Процессы объединяются в блоки (blocks), внутри которых они имеют общую память (shared memory) и синхронное исполнение • Блоки объединяются в сетки (grids) – Нет возможности предсказать очерёдность запуска блоков в сетке – Между блоками нет и не может быть (см. выше) общей памяти
  • 44. Высшая школа экономики, Москва, 2013 Вычислительные кластеры на видеокартах • С/К «Ломоносов» – 78 000 + ядер – Реальная производительность – более 900 Тфлопс (i5 – около 100 Гфлопс) – Использование спец. шины InfiniBand для коммутации (до 300 Гбит/сек) – Гетерогенная архитектура
  • 45. Высшая школа экономики, Москва, 2013 Вычислительные кластеры на видеокартах • Области – Нантехнологии – Статистика – Big Data – Медицина – …
  • 46. Высшая школа экономики, Москва, 2013 Вопросы ?