SSG EMEA Software Developer Relation Ли Дэвис Максим Перминов 8 Апреля 2005 leighx.dvies@intel.com leighx.dvies@intel.com Оптимизация игр под многопоточность.

Презентация:



Advertisements
Похожие презентации
*Other names and brands may be claimed as the property of others.. Copyright © 2003 Intel Corporation Технология Hyper-Threading в играх на реальных примерах.
Advertisements

Лекция 6 Понятие операционных систем Учебные вопросы: 1. Характеристики ОС 2. Свободные и проприетарные ОС.
Операционные системы Подготовила Подготовила студентка студентка 1 курса группы Э курса группы Э-108 Шпудейко Кристина Шпудейко Кристина.
Методы оценки времени отклика задач в двухъядерных системах реального времени СоискательГуцалов Н.В. Научный руководитель д.т.н., профессор Никифоров В.В.
Help: настройка Visual Studio.Net для создания консоль-приложения на основе Intel C++ с применением OpenMP. Инструменты «Практическое параллельное программирование.
Интернет Университет Суперкомпьютерных технологий Лекция 3 Методы построения параллельных программ (продолжение) Учебный курс Введение в параллельные алгоритмы.
Процессор - это устройство, управляющее ходом вычислительного процесса, выполняющее арифметическое и логическое действия. Процессор - это микросхема на.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Software & Services Group Тестирование Пользовательского Интерфейса как это делает Интел Анатолий Любомиров 1.
Интернет Университет Суперкомпьютерных технологий Лекция 3 Методы построения параллельных программ (продолжение) Учебный курс Введение в параллельные алгоритмы.
Тема работы Архитектура игровых движков. Компьютерные игры Популярный вид развлечения среди широкой категории людей Появились в середине 40-х годов 20-го.
Корпоративные облачные вычисления и безопасные клиенты на базе архитектуры Intel Александр Мельников Специалист по корпоративным технологиям Intel.
Библиотека для работы с конечными множествами, использующая графический процессор в качестве основного вычислительного устройства Новосибирский Государственный.
Распределенная обработка информации Разработано: Е.Г. Лаврушиной.
Распределенная система мониторинга и диспетчеризации процессов гетерогенной среды студент Костюков В.В., профессор к.ф-м.н Крючкова Е.Н., АлтГТУ / ПОВТ.
Пользователь (User) Приложение (Software) Операционная система (ОС, Operating System, OS) Оборудование (Hardware)
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Микропроцессор Центральный процессор (ЦПУ, CPU, от англ. Central Processing Unit) это основной рабочий компонент компьютера, который выполняет.
Интернет Университет Суперкомпьютерных технологий Лекция 4 Методы построения параллельных программ (продолжение) Учебный курс Введение в параллельные алгоритмы.
Msdevcon.ru#msdevcon. ПРОФИЛИРОВАНИЕ WINDOWS STORE ПРИЛОЖЕНИЙ Филипп Панфилов Mail.Ru Group.
Транксрипт:

SSG EMEA Software Developer Relation Ли Дэвис Максим Перминов 8 Апреля Оптимизация игр под многопоточность

2 Содержание Введение Что может дать многопоточность в игре Как подойти к распараллеливанию игры Парадигмы распараллеливания Подробные примеры

3 Black&White2 Улучшенной технологии – в графике, ИИ и физике Улучшенного геймплея и взаимодействия с игровой вселенной Чего ожидают покупатели игр? *Other names and brands may be claimed as the property of others Требуется все больше вычислительных ресурсов с каждым новым поколением игр

4 Как Интел помогает осуществить большее? Q1 Q2 Q3 Q4 Q1 Q2 Платформа Одно ядро Два ядра Четыре ядра Серии 8xx и 9xx Conroe* Kentsfield* Серии 5xx и 6xx *Codename All products and dates are preliminary and subject to change without notice. Двухядерные процессоры от Интел теперь присутствуют во всех сегментах рынка Smithfield* и Pressler* - для настольных компьютеров Yonah* - для ноутбуков В 3 квартале 2006 г. придут на смену Conroe* - для настольных компьютеров Merom* - для ноутбуков Многоядерные процессоры могут составить 70% поставок в 2006 году и 90% в 2007

5 Одна масштабируемая микроархитектура Ноутбуки Настольные системы L2 Next Generation Micro-architecture** **Micro-Architecture Name TBD All products and dates are preliminary and subject to change without notice. *Codename…Graphics not representative of actual die photo or relative size 2 ядра L2 4 ядра 2 ядра L2 2 ядра L2 2 ядра L2 Серверные системы Микро-архитектурановогопоколения Шина, 64 бит, *Ts,.. Оптимизированное энергопотребление,... NetBurst uArch Banias uArch + инновации Более производительное OOO исполнение Шире и глубже (запуск 4 инструкций за такт, больше буфера) Эффективный конвейер из 14 ступеней Улучшенный кэш Общий L2 кэш Прямой обмен между L1 кэшами Новое вычислительное ядро Merom*

SSG EMEA Software Developer Relation Что может дать многопоточность в игре

7 Увеличение частоты кадров Два способа Вынос подзадачи с критического пути Сокращение длительности подзадачи на критическом пути Примеры подзадач –Физика –Искусственный интеллект –Поиск пути –Звук –Загрузка или генерация контента –Пересылка на видеокарту Опция многопоточности в Quake 4* Beta 1.1 дает Около 27% прироста скорости на системах с Hyper Threading Около 87% прироста скорости на двухядерном Intel® Pentium® Processor Extreme Edition *Other names and brands may be claimed as the property of others

8 Уменьшение рывков графики Распараллеливание помогло повысить плавность в The Movies* *Other names and brands may be claimed as the property of others Многие игры содержат изредка запускающиеся подзадачи, требующие много ресурсов процессора Рывки раздражают больше, чем не очень высокий, но стабильный FPS Обработка таких задач в отдельном потоке поднимет минимальный FPS

9 Улучшение визуального ряда Процессор с одним ядром Двухядерный процессор PT Boats: Knights of the Sea* *Other names and brands may be claimed as the property of others При наличии второго процессора/ядра программа может адаптивно использовать Более высокое качество эффектов – воды, дыма Больше динамического контента Больше возможностей взаимодействия со средой

SSG EMEA Software Developer Relation Как подойти к распараллеливанию игры

11 Осознайте сложность задачи Игры высоко динамичны Компоненты могут работать на разных и изменяющихся частотах Действия игрока меняют ход событий Длительность обсчета одного кадра занимает лишь секунды Компоненты тесно связаны Физика может разделять данные с графикой и ИИ Кадры вычисляются цепочкой связанных функций Сторонние библиотеки могут содержать свои собственные потоки Нет универсального решения в силу уникальности каждой из игр Frame 4 Frame 3 Frame 2 Кадр 1 Рендер Частицы Анимация Физика ИИ

12 Карта компонентов (упрощенная) HW Driver API Application CPU Scene Mgmt Audio scene mgmt Resource Mgmt Texture Mgmt T&L, Vtx Shaders Pixel ops, shaders Sync, pred,etc Transport, msg comp, encrypt Queing, Buffering Mixing, f/x, 3D Mixing etc Midi, 3Dfx, etc Event tracking, feedback Device Abstract, input mapping Event Mgmt Enum, Abstract Rept caps AI Physics Game mgmt Math utils Misc Utils Memory / Resource Mgmt collision etc Game functionality MiddlewareGraphics Audio Net Input I/O streaming Comp / Decomp UI Игры – сложные приложения реального времени. Для распараллеливания требуется хорошо понимать зависимости между компонентами Игры – сложные приложения реального времени. Для распараллеливания требуется хорошо понимать зависимости между компонентами Physics Audio Graphics

13 Ядро OS Сама игра Простаивание ЦПУ Драйвер видеокарты Аудио-миксер Direct3D Ядро OS Используйте инструменты Инструменты, такие как Intel® VTune Performance Analyzer и Intel® Thread Profiler, облегчают анализ производительности В частности, они помогут определить Вычислительную сложность компонентов Баланс между потоками Накладные расходы на синхронизацию Критические пути

14 Определите критический путь Это самая длинная цепочка исполнения связанных подзадач Критический путь определяет время исполнения всей задачи Определяется архитектурой программы Поток 1 Поток 2 Поток 3 T0T0 T1T1 T2T2 T3T3 T4T4 T5T5 T6T6 T7T7 T8T8 T9T9 T 10 T 11 T 12 T 13 T 14 T 15 Acquire lock L Wait for Threads 2 & 3 Wait for L Release LWait for L Release L Сокращение критического пути ведет к увеличению производительности!

15 Будьте бдительны Следите за количеством потоков и их распределением Количество потоков == количеству логических процессоров Создание потока – длительная операция, делайте это один раз при инициализации Минимизируйте необходимость в синхронизации Избегайте ложного разделения данных Когда один процессор пишет, а другой читает данные из одной кэш-линии Приводит к падению производительности и лишней нагрузке на шину

SSG EMEA Software Developer Relation Парадигмы распараллеливания

17 Очередь задач Задачи Поток 1 Поток 2 Поток 3 В игре Juiced!* очередь задач используется для расчёта ряда эффектов Потоки создаются один раз и спят, когда не используются При появлении новой задачи она отдается на выполнение свободному потоку Ставится в очередь, если все заняты Количество активных потоков не должно превосходить число аппаратно поддерживаемых *Other names and brands may be claimed as the property of others

18 Разветвление–слияние Объект 0 Поток 0 Разветвление Слияние Используется для обработки множества однородных объектов Главный поток разветвляется на N потоков, работающих на разных процессорах Множество может быть разбито статически или динамически По окончанию управление возвращается в главный поток *Other names and brands may be claimed as the property of others Используется в The Movies* для расчета теней Часто применяется для физики Объект 1 Поток 1 Объект 2 Поток 2

19 Конвейеризация Логика кадра T Логика кадра T+1 Рендер кадра T-1 Рендер кадра T Точка сихронизации Время Точка синхронизации Кадр T Кадр T+1 Задача разбивается на отдельные этапы Каждому этапу присваивается собственный поток По окончанию этапа задачи T, поток может начинать выполнение того же этапа задачи T+1 Конвейеризация требует четкого определения движения данных Earthsim* конвейеризует обсчёт атмосферной текстуры *Other names and brands may be claimed as the property of others

20 Рабочая команда Физика Рендер ИИ/Логика Звук IO Система Частиц Анимация Похожа на конвейер, но с нечеткой временной упорядоченностью Зависимости обрабатываются частным образом Независимые активности работают асинхронно Falcon 4.0* и Perimeter* используют эту парадигму для отделения логики от рендера *Other names and brands may be claimed as the property of others

SSG EMEA Software Developer Relation Подробные примеры

22 Lionhead*/Black&White 2* Проблемы 1.Сложная физика, управляемая пользователем 2.Нагрузка на компоненты физики, навигации и эффектов сильно варьируется от кадра к кадру 3.Объемы контента значительно превышают типичные объемы памяти Решения 1.Рассчитывать физику асинхронно с рендерингом 2.Поднять скорость критического кода (как поиск путей) при помощи распараллеливания по данными 3.Подгружать требуемые данные в теневом потоке Разработчик: Lionhead Издатель: EA Games Дата релиза: Октябрь 2005 *Other names and brands may be claimed as the property of others

23 Рендер Время Ход исполнения программы 0 мс 100 мс Физика Логика Физика Логика Модифицированный Физика вызывается перед логикой Физика вызывается перед логикой Физика считается для использования в следующем логическом интервале Физика считается для использования в следующем логическом интервале Начальный : Логика обрабатывается каждые 100 мс Логика обрабатывается каждые 100 мс Время исполнения подзадач логики ограничивается Время исполнения подзадач логики ограничивается Рендер нескольких кадров, пока не кончится интервал в 100 мс Рендер нескольких кадров, пока не кончится интервал в 100 мс Во время рендера координаты объектов интерполируются Во время рендера координаты объектов интерполируются Физика реализована библиотекой Renderware и использует собственные структуры данных Физика реализована библиотекой Renderware и использует собственные структуры данных Рендер Модифици- рованный Логика для T Физика для T+1 Логика для T+1 Физика для T+2

Время Логика Рендер Логика Физика Улучшенный FPS и более сложная физика на двухядерных процессорах Многопоточная реализация – 1/2 Физика запускается в параллель с рендерингом Физика запускается в параллель с рендерингом Образует конвейер с логикой Образует конвейер с логикой Декомпрессия потока данных в отдельном потоке Декомпрессия потока данных в отдельном потокеРезультаты Физика убрана с критического пути Физика убрана с критического пути Больше времени на рендеринг Больше времени на рендеринг Больше времени на обработку физики Больше времени на обработку физики Декомпрессия 0мс 100 мс

25 Многопоточная реализация – 2/2 *For illustration purposes only Эффект ы ИИ Поиск путей Обра- ботка ввода Внутри обработки логики поиск путей был также распараллелен Парадигма разветвление-слияние Локальное изменение, интерфейс внешним функциям не изменился

26 Результаты тестирования FPS через секунду после падения FPS через 8 секунд после падения Одно ядро Два ядра При- рост Камень падал на 3 здания, результаты усреднялись по 5 запускам **Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance of Intel products as measured by those tests. Any difference in system hardware or software design or configuration may affect actual performance Data taken on Intel® Extreme Pentium 4® Processor at 3.2 GHz, ATI X850 GPU, 2Gig memory.

27 Lionhead*/The Movies* Проблемы 1.При изменении/появлении объектов нужно обновить тени 2.Появление новых объектов требуют перерасчета путей 3.Синхронные вычисления приводят к рывкам Решения 1.Асинхронно рассчитывать статические тени в течении нескольких кадров 2.Обрабатывать пути в отдельном потоке 3.Использовать параллелизм для построения динамических теней Разработчик: Lionhead Издатель: Activision Дата релиза: Октябрь 2005 *Other names and brands may be claimed as the property of others

28 Время Рендер Построе ние статичес ких теней Многопоточная реализация – 1/2 Построение статических теней Тени строятся при помощи собственного программного рендерера Тени строятся при помощи собственного программного рендерера Обрабатывается один запрос в каждый момент времени Обрабатывается один запрос в каждый момент времени Запрос может быть отменен (в случае изменения окружающей среды) Запрос может быть отменен (в случае изменения окружающей среды) Поиск путей Запросы по поиску путей кладутся в очередь Запросы по поиску путей кладутся в очередь Персонаж ничего не делает до тех пор, пока его запрос не будет обработан Персонаж ничего не делает до тех пор, пока его запрос не будет обработан Логика Поиск путей Рендер Логика Рендер Логика Вынос с критического пути редких, но значительных вычислений увеличивает плавность графики

29 Рендер персонажа Рендер тени Построение N/2 теней Многопоточная реализация – 2/2 Тени для персонажей строятся на каждый кадр Тени для персонажей строятся на каждый кадр Тени зависят от анимированной вершинной модели Тени зависят от анимированной вершинной модели Для использования параллелизма Для использования параллелизма Анимация отделена от рендера Анимация отделена от рендера Построение теней делается на нескольких процессорах с использованием парадигмыразветвление-слияние Построение теней делается на нескольких процессорах с использованием парадигмыразветвление-слияние Построение N/2 теней Анимация N персонажей Повторение N раз

30 Результаты тестирования FPS, обычный режим FPS при появлен ии объекта Дегра- дация FPS Одно ядро Два ядра Сложная сцена с 10 персонажами, двигающимися по экрану. Для демонстрации расчёта статических теней было добавлено 12 деревьев вокруг ресторана **Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance of Intel products as measured by those tests. Any difference in system hardware or software design or configuration may affect actual performance Data taken on Intel® Extreme Pentium 4® Processor at 3.2 GHz, ATI X850 GPU, 2Gig memory.

31 Несмотря на сложность дизайна игр, они содержат много возможностей для параллелизма по задачам и данным Многопоточность дает увеличение частоты кадров, уменьшение рывков и улучшенный визуальный ряд Для эффективного распараллеливания желательно изначальное планирование этого в приложении Тестируйте масштабируемость на двуядерном процессоре Рассчитывайте на 4 логических процессора у экстремальных геймеров Выводы и рекомендации

32 ?