Practical Hyper-Threading Technology in Multimedia Apps

Download Report

Transcript Practical Hyper-Threading Technology in Multimedia Apps

Технология Hyper-Threading
в играх
на реальных примерах
Максим Перминов
[email protected]
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Программа




Обзор технологии Hyper-Threading
Многопоточность в играх: проблемы и решения
Примеры
Выводы
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Как работает Hyper-Threading
Без HyperThreading
Физические
процессоры
Логические
процессоры,
видимые ОС
Использование
ресурсов физического
процессора
Полезная
работа
Время
Ресурс 1
Поток 2
Поток 1
Ресурс 2
С HyperThreading
Ресурс 3
Ресурс 1
Ресурс 2
+
Ресурс 3
Чем лучше задействуются ресурсы процессора,
тем больше суммарная полезная работа
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Как работает Hyper-Threading
Многопроцессорная система
Hyper-Threading
Архитект.
состояние
Архитектурное
состояние
Архитектурное
состояние
Кэш-память
Кэш-память
Кэш-память
ПрепроБлок
цессор исполнения
ПрепроБлок
цессор исполнения
ПрепроБлок
цессор исполнения
Архитект.
состояние
Технология HT увеличивает производительность
за счёт лучшего использования ресурсов
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Программа




Обзор технологии Hyper-Threading
Многопоточность в играх: проблемы и решения
Примеры
Выводы
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Почему Вам следует внедрить
многопоточность в свою игру?
 Бизнес причины
– Выделитесь на фоне конкурентов!
– Все платформы PC будут поддерживать многопоточность
аппаратно
– Многопоточные программы лучше масштабируются,
увеличивая срок жизни продукта
– Навыки параллельного программирования окажутся
полезными на многих платформах
 Технические причины
– Параллелизм – будущее микропроцессорных архитектур
– Делайте полезную работу, а не ждите видеокарту
– Дизайн многопоточного движка - хороший дизайн, не
требующий постоянных переделок
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Основные вопросы
многопоточного программирования
 Что распараллеливать?
Методы многопоточности
 При помощи чего это делать?
Реализация многопоточности
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Стратегии многопоточности
 Использовать параллелизм задач
– Обрабатывайте слабосвязанные задачи одновременно
 Использовать параллелизм данных
– Обрабатывайте несвязанные области данных одновременно
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Обновить
мир
Нарисовать
мир
Copyright © 2003 Intel Corporation
Зависимости по данным
Модель конвейера в играх
Данные
мира в
игре
*Other names and brands may be claimed as the property of others..
Параллелизм данных в играх
 Можно использовать в таких
задачах, как
Обновить
мир
1
Обновить
мир
2
Нарисовать
мир
Copyright © 2003 Intel Corporation
Подмн
ожеств
о2
Подмн
ожеств
о1
– Системы частиц, другие
эффекты
– Физика, ИИ (в т.ч. в Java/ C#)
– Спекулятивная загрузка и
распаковка данных уровня
– Процедурное создание контента
– геометрии, текстур,
окружающей среды.
 Потенциал метода
– Хорош для игр, завязанных на
процессор
– Прост для внедрения
*Other names and brands may be claimed as the property of others..
Параллелизм задач в играх
Мир
t=n
Обновить
мир
Нарисовать
мир
Мир
t = n+1
...
Copyright © 2003 Intel Corporation
 Распараллельте весь
конвейер
– Поток 1 = Render
Frame (n)
– Поток 2 = Update
Frame (n+1)
 Потенциал метода
– Хорош для игр, завязанных
на графическую карту
– Непросто реализуется из-за
зависимостей данных, но не
невозможно
*Other names and brands may be claimed as the property of others..
Реализация многопоточности
 API / Библиотеки
– Системные вызовы
Win32
– P-threads
 Языки
программирования
– Ява*
– C#
 Расширения к языкам
программирования
– OpenMP™
Copyright © 2003 Intel Corporation
My_thrd_func(void* params)
{
begin, end <- params
for(i=begin;i<end; i++) {
a[i] = b[i] * sqrt(c[i]);
}
}
// Win32
handle =
CreateThread(NULL,0,my_thrd_func,
param,0,NULL);
// C#
myThread = new Thread(
new ThreadStart(my_thrd_method));
// OpenMP
#pragma parallel for
for(i=0; i<max;i++){
a[i] = b[i] * sqrt(c[i]);
}
*Other names and brands may be claimed as the property of others..
Программа
 Обзор технологии Hyper-Threading
 Многопоточность в играх: проблемы и решения
 Примеры
 Выводы
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
K-D LAB Периметр – Дизайн приложения
Поток 1
Логика & AI
• Фиксированное количество
“кадров” – 10 или 20
раз в секунду
• Расчет состояний юнитов
для момента времени
(t) и (t+1)
Поток 2
Отрисовка 3D
• Максимально возможное
количество кадров
• Интерполяция между
состояниями (t) and (t+1)
Интерфейс
• Действия пользователя через
мышь и клавиатуру
• Отображение игровой
информации
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
K-D LAB Периметр - параллелизм задач в
действии
HT = 1
HT = 0
Поток 1
Поток 1
Графические
данные
Отрисовать
мир
Отрисовать
мир
Время
Абстрактные
данные
Обновить
мир
Абстрактные
данные
Поток 2
Отрисовать
мир
Обновить
мир
Лог обновлений
Отрисовать
мир
Графические
данные
...
...
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..
Выводы
 Распараллельте свою игру – это реально сделать!
 Навыки и испытанные методы помогают, но будьте
изобретательными и экспериментируйте
 Внедряйте многопоточность как можно раньше, в
идеале на стадии дизайна
 Используйте Intel® Software Tools для получения
максимального выигрыша от многопоточности
Copyright © 2003 Intel Corporation
*Other names and brands may be claimed as the property of others..