- PVSM.RU - https://www.pvsm.ru -

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться

Привет! Мы вернулись в блог с историей про свежий релиз. Команда UNIGINE в апреле выпустила новый GPU-бенчмарк Superposition с VR фичами. Мы набили новых шишек, изобрели пару десятков внезапных спасительных решений и новую технологию в 3D-графике.

Внутри поста много красивого рендера, несколько драм с техническим уклоном, 4,5 художника, злые модераторы Valve, расстроенные AMD, NVIDIA и Intel и коммиты из операционной. Заходите!

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 1 [1]

В начале было демо

Свой первый бенчмарк мы выпустили 10 лет назад, в 2007 году. Тогда мы сделали очередное 3D-демо, оказавшееся настолько требовательным, что работало только на топовых на тот момент видеокартах, остальные не справлялись, тормозили и перегревались. Стали думать, что с ним делать? И решили: раз демка так нагружает железо, почему бы это не использовать? Для чего это может быть полезно? Так из побочного продукта появился первый бенчмарк Sanctuary, а у UNIGINE — еще одно направление.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 2 [2]
Графика 2007 года уже не впечатляет, зато вызывает ностальгию.

Кому и зачем вообще нужны бенчмарки?

У GPU-бенчмарков довольно специфическая, но постоянная аудитория. Базовые бесплатные версии расходятся тиражами в десятки миллионов. Оверклокерам они нужны, чтобы соревноваться в выжимании производительности из железа. Геймерам – оценить, потянет ли их видеокарта последнюю хитовую игрушку. Производителям железа бенчмарки нужны как «линейка», которой можно измерять результаты при разработке. Компьютерным магазинам и ремонтным мастерским бенчмарк полезен как инструмент выходного контроля стабильности компьютера в сборе.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 3 [3]
Третий бенчмарк (Heaven) мы выпустили в 2009 году, и им до сих пор пользуются миллионы людей во всем мире.

А зачем они нам? Так как у бенчмарка задача грузить железо по максимуму, в них мы, не стесняясь в средствах, показываем уровень графики, которую можно сделать на движке UNIGINE, и то, что станет стандартом в 3D-графике завтра и послезавтра. Так что бенчмарки – это еще и очень наглядная демонстрация технологии, и дополнительный маркетинг. Самая частая фраза клиентов, пришедших за движком: «А, знаю ваши бенчмарки, всю жизнь ими пользуюсь!» Правда, есть и минус: некоторые думают, что бенчмарк – это просто приложение на тормозном движке (а это далеко не так). Приходится объяснять, что экстремальная нагрузка – это так и задумано.

А еще благодаря бенчмаркам мы плотно работаем с производителями графических процессоров, так что в видеодрайверах внутри вашего компьютера всегда есть оптимизация под UNIGINE. Всем хорошо: у вендоров есть надежный тест производительности, а у наших разработчиков – доступ к завтрашнему железу. Естественно, есть ложка дегтя: вендоры часто нас ненавидят. Каждому кажется, что на наших бенчмарках у их видеокарт производительность слабовата, а у конкурентов наоборот слишком высокая. Так что NVIDIA периодически считает, что мы продались AMD, а AMD – что мы продались NVIDIA.

Задумали демку, и тут понеслось

Проект, который в итоге превратился в бенчмарк Superposition, начался в марте 2016 года. Мы хотели дополнить SDK движка UNIGINE 2 новым интерьерным 3D-демо. Почему именно интерьер?

У нас накопилось много демок с большими пространствами от горизонта до горизонта. Поэтому некоторые клиенты стали воспринимать UNIGINE 2 исключительно как движок для сцен планетарного масштаба. С ними он и правда отлично справляется, но и крупные детальные планы умеет не хуже. Вот такого проекта, который показывал бы все возможности движка при работе с ближними планами, нам в составе UNIGINE 2 SDK как раз и не хватало.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 4 [4]
На движке UNIGINE 2 можно в реал-тайме создавать сцены вплоть до размеров Солнечной системы.

Ламповый сеттинг

Мы сразу решили, что делать современный дизайнерский интерьер не хотим: слишком стерильно, слишком визуально скучно. Да, красиво. Но с очередной вылизанной картинки глаз просто соскальзывает: о, интерьерчик, листаем дальше.

Мы собирались сделать так, чтобы нашу демо-сцену хотелось разглядывать и изучать. Для этого мало просто заполнить пространство объектами и сделать крутой рендер. Чтобы в комнате было интересно «остаться» и внимательно ее рассмотреть, за ней должна стоять история.

Итак, художникам нужно было придумать концепцию и сеттинг. Чтобы комната была одновременно и уникальной, и узнаваемой. Поскольку наш движок, а тем более бенчмарки, используют от Австралии до Скандинавии и от Сингапура до Калифорнии, нужны были образы общечеловеческие, понятные в любой стране и культуре. И такие, чтобы с первого взгляда фантазия разыгрывалась и просила добавки.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 5
Первые рефы для концепции будущего бенчмарка собирались из фильмов: фантастики и фильмов про выдающихся ученых 20 века.

Лучше всего для интернационального продукта подходили визуальные рефы из кинематографа: сделанное в Голливуде знают все и всюду. Мы уже решили, что «комната» будет учебным классом или лабораторией. Так что художники пересмотрели море фильмов, где учатся или проводят эксперименты: от «Эдвард Руки-ножницы» и «Мухи» до «Игры в имитацию».

Больше всего зацепила стилистика научных лабораторий 40-50-х годов: бум развития науки и связанная с этим романтика, появившийся в то же время типаж гениального ученого, дни и ночи проводящего за работой. Так определились с сеттингом: делаем учебную аудиторию-лабораторию из 1950-х годов. Команда художников собрала грубую первую сцену из примитивов и засела за создание контента.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 6 [5]
Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 7 [6]
Пре-продакшн: наброски композиции сцены.

Художникам дали полную свободу и 3 месяца времени. Главное, что требовалось: выдать максимальное качество и насыщенную контентом сцену. Хотя перспектива превращения демо в бенчмарк была сразу, пока задачу ограничили статичной сценой без логики, но с большим количеством разных объектов. На пре-продакшене посчитали, что уникальных предметов нам нужно сделать около 120. Для срока в 3 месяца силами 4 человек задача была сложной. Но не невыполнимой.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 8 [7]
Так лаборатория выглядела на второй месяц работы.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 9 [8]
Так она стала выглядеть через полгода, в октябре.

И вовсе не телескоп, а очень даже портал

Шла вторая половина второго месяца. Наша лаборатория обрастала деталями и все больше становилась похожа сама на себя. Но ей все еще не хватало самой малости – центрального объекта. За концепцию и производство «главного героя» отвечал ведущий 3D-художник и арт-директор всего проекта Давыд.

Для разработки дизайна было собрано много референсов: лабораторных установок, станков, роботов, научно-фантастических агрегатов. Количество файлов в папке classroomrefscenter_object все росло. Изначально была идея сделать телепорт из мелких объектов. Две подставки, с одной предмет исчезал, а на другую телепортировался. Но после пары дней упорного блокинга (так художники называют этап построения силуэта из примитивов) результат все равно не устраивал. Все придуманное никак не вписывалось в геометрию комнаты. Центральный объект либо нужно было ставить в самый центр комнаты, и тогда это смахивало на алтарь, либо куда-то в угол, но в этом случае объект переставал быть центральным.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 10
Идей центрального объекта было много, визуальных референсов — еще больше.

В итоге Давыд пришел к выводу: нужно пробовать симметричную геометрию. Покопавшись в референсах, нашел фотографию вот этого симметричного агрегата с цветными торчащими «рогами». Чем-то они напоминали шипы на голове Статуи Свободы, и в этот момент сразу перед глазами «щелкнул» образ: нужна большая, недетальная штуковина с шипами на «голове». Ага, двери спереди посадим, чтобы человек мог туда войти и как-то расположиться внутри. А чтобы ему было удобнее, сделаем небольшой наклон. А сзади надо «мясо» – баллоны, трубки, провода, и обязательно ассиметричное! Идея и образ сложились, оставалось только сесть и сделать.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 11
Эта фотография помогла окончательно придумать портал из Superposition.

Как мы узнали уже после релиза, на этом фото газодинамическая ловушка в Новосибирском институте ядерной физики. Говорят, в институт можно сходить на экскурсию. Так что если вы из Новосибирска, у вас есть все шансы увидеть прототип нашего портала живьем.

Кстати, мы написали, что у нас было 4 художника, но на самом деле их было 4,5.

Ближе к зиме, когда количество объектов в лаборатории подбиралось к 700 (и все были интерактивные!), у нас появился внештатный удаленный художник из шахтерского города Прокопьевска. Степан, одноклассник нашего лида над художниками Давыда, вместе с ним начинал «что-то моделить» еще в школе, но тогда забросил. А теперь решил наверстать.

«Может, вам нужно там помоделить что-нибудь? А то я тут умру», — написал Степан откуда-то из кузбасской зимы. Он готов был ради интереса и прокачки навыков заняться мелкими объектами. Линейки, ножницы, циркули, ручки, карандаши, ластики, целое море других важных для атмосферы рабочего беспорядка лаборатории мелочей — все сделано руками Степана. Так в релизной версии Superposition объектов стало больше 900.

Мы сделаем новый бенчмарк, с VR и интерактивом

Три месяца, отведенные на производство контента, вылились в четыре. Задуманная сцена была готова. Оставалось по минимуму добавить логику и интерактивность — и все, можно отправлять в SDK!

Но на окончательную трансформацию демо в бенчмарк повлияло две вещи. К сентябрю в сцене было уже 600 объектов, и она успешно делала то, что требуется от бенчмарка: как следует нагружала GPU. Второе: в команду пришел Саша, программист игровой логики. Все остальные программисты были расписаны по проектам, но теперь у нас был еще один человек с нужными навыками для создания интерактивной части.

А интерактива давно хотелось, потому как до этого момента все бенчмарки UNIGINE были несколько статичные. По Heaven и Valley можно погулять, но не более. Из-за этого мы часто сталкивались с мнением, что и в движке UNIGINE все статично. Вы хотели интерактива? Будет вам интерактив!

Параллельно случался бум массового VR. Вышел HTC Vive, к Рождеству должен был появиться Oculus Touch. Для клиентов движка UNIGINE 2 мы добавили поддержку VR уже давно — с тем же Oculus Rift движок совместим с 2013 года. Но публично доступного VR-продукта у UNIGINE пока не было. А в нашу комнату-лабораторию с кучей предметов и легендой про профессора VR так и напрашивался.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 12

Итак, к осени задача усложнилась: это будет бенчмарк с интерактивным режимом, поддержкой VR и самой передовой графикой, чтобы видеокартам хватило его до 2020 года. Ура, снова работать!

Из-за внезапного VR появилась проблема: то, что нормально смотрелось на мониторе, в виртуальной реальности выглядело искаженным или непропорциональным. Например, преподавательский стол оказался слишком большим: «Да на нем коня можно разделывать!» — сказали художники, когда посмотрели на сцену через шлем. И снова засели за контент, адаптировать все под VR.

Много пришлось потратить времени на взаимодействие с объектами в VR: у контроллеров нет обратной связи, но нужно давать пользователю реалистичное ощущение от разных предметов в «руках». Бросок предметов — это тоже нетривиальный момент, делали в несколько итераций (сложность в определении реалистичного вектора броска). Про это уже есть хорошие статьи, например, вот эта — оригинал [9] и перевод на Хабре [10].

Перемещение в VR тоже особенное. Например, экспериментальным путем мы выяснили, что лучше дискретно поворачивать камеру при поворотах кнопками, а не плавно ее ускорять — так пользователя меньше укачивает. К счастью, с телепортом в VR приложениях уже все более-менее стандартно, прицелился — прыгнул.

Первые «полевые испытания» бенчмарк Superposition прошел на томской IT-конференции в ноябре. Там же, не отходя от стенда, запрограммировали две новых фичи: шляпа и сигарета стали интерактивными.

Steam Drama

Когда все ТТХ бенчмарка окончательно сформулировались, мы решили попробовать отправить релиз на Steam через систему Greenlight. По прошлому опыту с Heaven, которому дали «зеленый свет», когда было уже не надо, мы знали, что раздел софта в Steam — это такой черный ящик с иллюзией демократии. Вроде бы пользователи голосуют, но решают все равно модераторы Valve. Причем сроки и критерии отбора никому неизвестны. Даже если вы полгода на первом месте, прохождение Greenlight вам не гарантировано.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 13 [11]
Superposition взлетел сразу: за первые две недели голосования бенчмарк получил 95% голосов «за» (обычный рейтинг проектов на Greenlight около 40%). Но оказалось, это не важно.

Перед самым Новым годом мы радостно заказывали пиццу в честь первого места в Greenlight-забеге: из 2000 участников Superposition на Steam ждали больше всего.

А почти сразу после новогодних каникул нам пришло письмо от модераторов, что с голосования нас сняли. Оказалось, что буквально перед подачей заявки на Steam ввели новые правила. Теперь бенчмарк не подпадал ни под одну категорию софта, допущенного до участия в Greenlight.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 14 [12]
Решив, что праздничного настроения много не бывает, мы нарядили портал. Но — рано радовались.

Steam взорвался злыми комментами в адрес Valve, об этом писали в газетах [13], писали на форумах. Но Valve не сдался. Что оказалось не так уж плохо: позже мы выяснили, что запуск через приложение Steam тормозит работу системы и портит производительность. Не слишком сильно, но для профессиональных оверклокеров любая погрешность в перфомансе критична.

Я угадаю эту видеокарту по четырем числам!

C выпуска Valley прошло четыре года, и алгоритм, распознающий тип GPU и прочие характеристики системы, нужно было серьезно обновлять. За разработку обновленного детектора засел программист Толя. Он пришел в UNIGINE со второй попытки и вообще-то был веб-программистом. Но ко второму заходу подтянул C++ до уровня «могу, практикую» и добровольно взялся за апгрейд детектора, чтобы еще больше прокачаться.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 15

Откуда вообще взять данные про GPU? В каждой видеокарте последовательно зашиты четыре числовых ID: vendor, chip vendor, sub vendor и sub device. Самый простой вариант — вытащить их из API к драйверу. Берем ID, сравниваем с базой железа, получаем точное и полное название видеокарты. Но это вариант «Вам повезло».

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 16
Даже одну видеокарту распознать непросто, а что делать, если их три разных в системе? Ответ будет ниже.

Просто так взять ID из API драйверов можно только на Windows. Там драйверы проприетарные, из них наш детектор добывал нужные данные безболезненно. На Linux зоопарк драйверов в разы больше. Там тоже есть проприетарные драйверы, но пользователи Linux любят все открытое, поэтому много вариантов. Еще сильней усложнило Толину жизнь то, что в большинстве линуксовых «дров» нужных API нет вовсе и конфигурацию видеокарты в несколько строк кода уже не вытащить. Приходится доставать витиевато.

На Linux детектору нужно забираться в файлы, получающиеся при работе видеодрайверов. В зависимости от модели карты и «дров», эти файлы хранятся в разных местах и называются по-разному. Пачка кода детектора стучится в системные команды, к термосенсорам и другие места, находит файлы и, как хороший полицейский, добывает из них информацию. Особенно сложно это делать без root уровня доступа.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 17 [14]
Фрагмент того самого кода детектора, который доставал для нас данные под Linux.

А что, если видеокарт в системе несколько от разных вендоров? Чтобы понять в принципе, какая видеокарта активная, Толя написал кусок кода на 300 строк, который параллельно с работой бенчмарка делал снэпшоты.

В первую очередь код проверял утилизацию видеокарты (идею с утилизацией подсказал Миша, ведущий программист графики). Опытным путем выяснили, что даже на выключенной видеокарте утилизация может быть от 1 до 10%. Поэтому пришлось задавать значение от 15%, если утилизация выходила больше, видеокарта распознавалась как активная.

Но замер утилизации получался не на всех видеокартах. Поэтому приходилось искать дальше. Код заглядывал к драйверам Windows и в закоулки Linux и каждые 200 миллисекунд спрашивал: «Эй, как у вас тут с температурой и частотой?» В конце прогона по минимуму и максимуму этих параметров становилось ясно, какая видеокарта была активной. Хотя тут тоже появлялись «нюансы». Например, приходилось учитывать, что если видеокарты находятся рядом, одна может просто нагревать другую. Так что перепады до 2°С алгоритм не считал за изменения.

Еще из кучи «частных» примеров. У некоторых карт AMD ID вендора 1002 возвращался не в шестнадцатеричной системе, как должен был, а в десятичной. В таком случае видеокарта не определялась вовсе, и детектор выдавал результат «0 видеокарт».

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 18 [15]
Для каждой такой частности алгоритм приходилось подпиливать. Учитывая, что в собранной нами базе ныне здравствующих видеокарт оказалось больше 9000 вариантов, частностей выходило чуть больше, чем много.

В общем, определение железа — нетривиальная задача, и делать это кросс-платформенно почти никто толком не умеет. Можно, конечно, лицензировать библиотеки CPU ID SDK (как это сделали в 3dmark), и GPU-Z SDK, но они работают только под Windows.

Когда через три недели нечеловеческими усилиями Толи детектор был готов и мы проверили с его помощью все, до чего смогли дотянуться, стало ясно, что это капля в море всего разнообразия GPU. Внимание, вопрос: где взять побольше разного железа, чтобы протестировать на сколько-нибудь приличной выборке?

Полный интернет конфигураций

И мы решили объявить открытое тестирование. Две сборки детектора для Windows и для Linux соответственно раскидали по форумам и коммьюнити с просьбой помочь с тестами. Желающим поучаствовать в разработке нужно было запустить у себя детектор и прислать нам получившиеся логи и скриншоты CPU-Z и GPU-Z, как единственный внятный эталон.

Вы когда-нибудь просили незнакомых людей на форуме скачать и запустить у себя неопознанный *.exe? Попробуйте! «Не запускайте, там вирус!», «Да оно биткоины майнит!», «Доктор, оно определило серийник моей материнки!», «Да это вообще какие-то русские. Что, хотите сказать, в UNIGINE работают русские? Ясно, что фишинг, не ведитесь!»

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 19
Открытое тестирование — это круто. Но когда у вас больше 400 таких скриншотов, приходится попотеть.

Нас банили, нас разбанивали, пиарщик переписывался с модераторами, доказывая, что это не верблюд, а действительно UNIGINE. Потом мы написали в официальных соцсетях: спокойно, товарищи, идет тестирование. Настороженная общественность поняла, что это действительно мы. И что можно поучаствовать в разработке нового бенчмарка UNIGINE.

И начался настоящий Log Rush. Андрей, главный по проекту Superposition, сутками разгребал почту, отвечал на письма и скачивал разбросанные по форумам и соцсетям пользовательские логи. В итоге насобирали 450 результатов, с помощью которых получилось откалибровать детектор. А свои логи добровольцы до сих пор продолжают иногда присылать.

Хочешь немного новой трассировки?

Бенчмарк изначально хотели выпускать в конце 2016 года, но релиз переехал в первый квартал 2017 года. Во-первых, рождественская лихорадка не лучшее время для релиза массового продукта. Во-вторых, приоритет для нас — все-таки движок и несдвигаемый релиз UNIGINE 2.4 SDK [16]. Зато теперь появилось время, чтобы добавить в Superposition новую технологию трассировки — SSRTGI (Screen Space Ray Tracing Global Illumination), над которой работали вместе Миша, один из программистов движка, и Давыд, ведущий художник.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 20 [17]
Освещение без применения SSRTGI // Освещение с включенным SSRTGI

Привычные скринспейсовые эффекты SSAO и SSGI не используют трассировку. Да, они делают 3D-картинку больше похожей на реальность, но «читерски»: пытаются воспроизвести похожую на настоящую картинку, но совсем не так, как работает реальное освещение. Это помогает до определенной степени, но разницу все равно видно с первого взгляда.

Мы сделали технологию, построенную на принципе трассировки лучей в реальном мире. SSRTGI учитывает движение лучей, отражение от объектов, преграды, затенения и выравнивает нормали в переходах между предметами. В итоге получили картинку, по качеству сравнимую с оффлайн-рендером, но в реал-тайме. Объекты при этом остаются интерактивными. Каждый можно перемещать как угодно, и он не будет резко выбиваться из остальной картинки, как часто бывает в играх.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 21 [18]
Освещение без применения SSRTGI // Освещение с включенным SSRTGI

Как работает технология SSRTGI, в подробностях расскажем в следующем посте, вместе с релизом UNIGINE 2.5. А пока что устройство эффектов и их работу на разных настройках можно посмотреть в игровом режиме Superposition, включив debug.

Музыка, идеальная для репита

Музыку ко всем нашим проектам (предыдущим бенчмаркам и игре Oil Rush) написал Миша Paralyzah, он же занялся саундтреком для Superposition. Сложность в том, что бенчмарк обычно прогоняется многократно, и музыка не должна утомлять пользователя, но при этом она — важная компонента, формирующая общее впечатление. Плюс музыка должна идеально ложиться на пролеты камер, чтобы поддержать темп происходящего.

У нас не было возможности записывать симфонический оркестр живьем, поэтому Миха собрал саундтрек у себя в домашней студии, с помощью всего лишь хорошей базы виртуальных инструментов, midi-клавиатуры и многолетнего опыта. Результат вы можете послушать сами — размеренные звуки фортепиано подхватывает тягучая виолончель, и постепенно к ним вплетаются электронные нотки, когда на экране сила науки побеждает гравитацию и время.

Вся боль производителей

Ранее мы уже упоминали, что один из плюсов бенчмаркопроизводства — тесная работа с разработчиками графических процессоров. С одной стороны, это классный перк: прямой контакт с инженерами и доступ к железу «завтрашнего дня». С другой, добавляет проекту большой пласт работы.

Первые пре-пре-альфы вендорам выдали раньше всех, еще в ноябре. Но попали в неудачный период: тогда их лаборатории были под завязку заняты тестами предрождественских игр. «Отпустило» производителей ближе к марту, зато всех сразу. В нас попеременно и одновременно стреляли с трех сторон результатами тестов лаборатории и NVIDIA, и AMD, и Intel. И тем, и другим казалось, что именно их видеокарты Superposition как-то недооценивает. Нас-то интересовала только оптимизация критичных для пользователей вещей. Из-за затяжного молчания вендоров большой кусок этой работы пришелся на последние недели.

Производители GPU страдали. «За выходные у вас настройки поменялись три раза!» — негодовали одни. «Наши видеокарты гораздо лучше, это у вас какой-то неправильный бенчмарк!» — возмущались другие.

После доработки и оптимизации, путем долгой переписки мы достигли баланса: бенчмарк все еще одинаково не устраивал всех производителей, но уже по минимуму. Зато у бенчмарка было все, что нужно пользователю: точное измерение производительности самых разных видеокарт.

Лидерборды? Лидерборды!

Под каждой новостью про бенчмарки UNIGINE обязательно появляются скрины с результатами. На каждом уважающем себя форуме оверклокеров и компьютерного железа вырастают треды с результатами, например, у Valley есть эпичный тред [19] на 1300 страниц.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 22 [20]

И мы решили: раз мы делаем уже пятый бенчмарк, хватит сидеть по чужим форумам. Пора заводить собственные лидерборды [21]! О них мы совершенно внезапно и споткнулись. Весь процесс продакшена и релиза бенчмарка от и до был давно известен, и спланировать его было легко. А вот разработка лидербордов была до времени скрыта туманом войны.

Ура, релиз! Oh, wait…

Релиз мы переносили на конец первого квартала, и чтобы уложиться в срок, не хватило буквально нескольких дней. Бенчмарк надо делать сразу качественно, выпускать патчи и версии 1.1.1., 1.1.2. нет возможности: «поплывут» результаты. Продукт должен быть сразу готовый и стабильный. Чтобы и наши инженеры, и лаборатории вендоров, и бета-тестеры смогли протестировать бенчмарк по максимуму, мы сдвинули релиз на 6 апреля.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 23

Утром 6 апреля оказалось, что мир застыл в ожидании. «Я специально взял выходной, потому что выходит Superposition! Когда уже качать?» — писал Джеймс из UK. «Уже 6 апреля! Где же бенчмарк?» — писал Брюс с восточного побережья США. «Я завел этот тред заранее, потому что сегодня выйдет Superposition. А пока что я тему красиво оформлю!» — писали на оверклокерских форумах. «Как у вас дела? Скоро уже? А вы же мне напишете?» — снова писал Джеймс. Потом Брюс. И Стив. И Марко. И еще несколько десятков пользователей через все возможные каналы коммуникации.

Еще за пару недель до даты релиза мы поняли, что объем работы по части запуска нового сайта с лидербордами и всего связанного с ним бэк-энда мы недооценили. Выбрали самое критичное: запустить новый сайт с бенчмарками, закачку с него, авторизацию пользователей, платежную систему и главное — сбор результатов в базу, из которой потом будет формироваться турнирная таблица. Плюс состыковать фронт-энд с бэк-эндом.

Про вечер первой попытки релиза мы сняли небольшое, но полное драматизма видео:

В ночь с 6 на 7 апреля сам бенчмарк Superposition был готов и от него убрали руки. Но вот критичная для релиза часть бек-энда и фронт-энда все еще отказывалась работать как нужно. Волевым решением релиз сдвинули на 11 апреля.

За эти 4 дня частота коммитов по вебу утроилась. Дважды герой детектора и бэк-энда Толя планово (не из-за релиза!) лег в больницу, откуда не переставал коммитить, и только наркоз его остановил. На час. Веб-программист Леня тоже перестал уходить с работы. Перестали уходить QA.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 24

Тут надо вернуться чуть назад к драме со Steam. Объем раздаваемых дистрибутивов на этом релизе был ощутимо больше: билд Superposition весил в 3 раза больше последнего Valley. И желающих поскорей скачать новый бенчмарк UNIGINE с тех пор тоже прибавилось. Мы рассчитывали на Greenlight и сервера Valve, которые без проблем раздали бы файлы. И совершенно не готовились раздавать у себя пару десятков терабайт трафика за сутки. Да, мы в курсе про torrent, но значительная часть пользователей по идеологическим соображениям ими не пользуется

Нужно было быстрое решение, чтобы все желающие могли скачать долгожданный бенчмарк, чтобы наши сервера не упали и чтобы это не стоило компании астрономических денег. Сергей, наш IT-директор, поседел на 10%, пока его отдел искал, как это сделать.

В итоге придумали схему: купить кучу мелких хостингов по $5-10 и раскидать по ним наши файлы. Людей, приходящих за бенчмарками, редиректить на эти самые хостинги и зеркала в произвольном порядке, и так разгрузить наши серверы. В итоге мы сделали 11 зеркал за бюджет в 3000 рублей.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 25 [22]
Так выглядит трафик только одного сервера в ночь релиза.

Часть мы раздали со своих серверов с ограничениями, чтоб не лечь. Часть — с зеркал, которые периодически падали и отключались. Второй Сергей из IT-отдела написал отдельную утилиту в 150 строк кода, которая раз в минуту мониторила состояние зеркал, выключала «мертвые», а когда они оживали, включала их назад в раздачу.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 26
Чтобы успеть к релизу пришлось выбирать приоритеты: запустить новый сайт [23], подготовить все для раздачи билдов, настроить сбор результатов пользователей в базу будущих лидербордов.

Внезапно упали требования от веб-разработчиков — нам бы 32 Гб оперативной памяти на сервере. Все прочие web-проекты UNIGINE не были заточены под хайлоад: под каждый сайт требовалось всего гиг-два оперативки. Поэтому запрос в 32 Гб оперативной памяти под один сайт оказался крайне неожиданным. IT-директор поседел еще на 10%, но все же сервер успели купить и настроить всего за полдня.

К 11 апреля у нас была готова критичная для запуска часть бек-энда и фронт-энда. Не успело еще солнце взойти над Калифорнией, а всю невидимую часть «под капотом» мы уже железно закончили. И после завершающих тестов и трех «финальных» версий финального билда, 11 апреля в 23:00, мы выложили Superposition в закачку. И наконец-то выдохнули: релиз случился.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 27Сдвинуть релиз оказалось проще, чем отменить торт, заказанный в честь него. Так что торт приехал к нам 7 апреля. Команда художников уставшая, но довольная: их работа над проектом уже точно закончилась.

Что не допобедили?

Больше всего вопросов с самого первого поста про бенчмарк задавали про поддержку Vulkan и DX12. У Vulkan многообещающее будущее, но пока API еще не работает стабильно на всех платформах. DX12 работает только на Windows 10, а далеко не все пользователи наших бенчмарков (что мы точно знаем благодаря детектору) перешли на «десятку». Поэтому интеграцию Vulkan и DX12 мы отложили до следующих версий.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 28
Оверклокеры со всего мира запасались жидким азотом в ожидании Superposition.

К релизу мы так и не осилили поддержку SLI и CrossFire. Физически и то, и другое работает. Но CrossFire дает графические артефакты, а SLI не влияет на производительность и тоже иногда выдает артефакты, в зависимости от конфигурации. Это связано с особенностями работы эффектов TAA (Temporal Anti Aliasing) и SSRTGI и конструктивных особенностей мульти-GPU интерфейсов. Текстуры для рендера каждого кадра в SLI и CrossFire должны синхронизироваться между двумя и более видеокартами, но скорость передачи же сильно ограничена пропускной способностью PCI Express шины. Если рендер идет на экстремальных настройках 4K и 8К, размер текстур становится еще больше, как и объем передаваемых через PCI Express данных. Поэтому часто реал-таймовая графика, где есть темпоральные эффекты, плохо масштабируется в SLI и CrossFire.

На отдельных конфигурациях прирост производительности будет — в том случае, если SLI и Crossfire поддерживают AFR Friendly. Тогда текстуры не синхронизируются, каждая видеокарта считает свой кадр, шина не нагружена передачей лишней информации и производительность растет (правда, в SLI опять-таки не на всех конфигурациях). Но зато из-за отсутствия синхронизации появляются графические артефакты.

Как это стабилизировать для всех конфигураций, к релизу мы не изобрели. Варианты, как это победить есть: уменьшить количество синхронизируемых текстур, сжимать данные, попробовать поменять способ синхронизации, вообще отказаться от темпоральных эффектов. Но задача эта не быстрая, поэтому оптимизация для мульти-GPU переехала в будущие версии Superposition.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 29
Superposition завоевывает мир — фото с Gamers Assembley во Франции, крупнейшего европейского гейм-фестиваля

Лидерборды со всем фронт-эндом и бэк-эндом полностью одолели и запустили через 3 недели после релиза. В них на верхних строчках уже прописались оверклокеры с жидким азотом — догнать их обычному пользователю достаточно сложно, но вы можете попробовать!

Сухое итого

На самом деле, в посте далеко не все драмы рассказаны и не все герои упомянуты. Вся сага целиком заняла бы еще пару постов. И, хотя не обошлось без фейлов, нельзя просто так взять и не погордиться итогами года работы, прошедшего с начала продакшена демо до релиза бенчмарка Superposition.

  • Мы сделали самый красивый бенчмарк в мире.
  • Художники прокачались так, что удивились сами себе.
  • Доработали технологию SSRTGI в движке.
  • Запустили наконец-то онлайн-сервис.
  • Научились определять железо всех сортов значительно точнее.

Стресс-тест команды: как сделать GPU бенчмарк и не перегреться - 30

За первые же сутки мы собрали 13 000 результатов в базу. На момент публикации поста Superposition установили больше 100 000 раз и темпы установки стабильно держатся. Всего работа уложилась в 6100 коммитов, 1437 из них за последние 90 дней до выхода.

Кода написано (не считая модификаций движка), в строчках:

  • С++: 41952
  • UnigineScript: 10000
  • PHP: 69000
  • JavaScript: 4000

В финальной сборке 900+ объектов и 400+ текстур.
Собрано RC-версий — 7.
Сожженных во имя релиза видеокарт — 1.

И, наконец, в день релиза множество обзоров и статей про Superposition. Про релиз бенчмарка написали все топовые популярных мировые порталы про железо, например, Tom's Hardware [24], TechPowerUp [25], VideoCardz.com [26]. Стали выходить видеообзоры [27] от пользователей и видеоблогеров.

Результат можете оценить сами, скачав Superposition [28]. Несмотря на то, что на самых максимальных настройках бенчмарк способен прогнуть любую современную систему, благодаря разным пресетам качества вы можете запустить его и на компьютере 4-5 летней давности.

Или загляните в будущее реал-тайм 3D-графики, посмотрев видео в максимальном качестве и в разрешении 8К. Этот режим есть и в бенчмарке, но выдержать его могут не все топовые видеокарты:

Всем красивой графики и мощного железа. Увидимся скоро в нашем блоге!

Автор: Beatrix

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/benchmark/254956

Ссылки в тексте:

[1] Image: https://habrastorage.org/web/360/b00/aa5/360b00aa57714ad3a3413398c4235daa.jpg

[2] Image: https://habrastorage.org/web/fd7/f8e/f47/fd7f8ef47b1b4167b2a9c0a7f07ae99d.png

[3] Image: https://habrastorage.org/web/09b/757/1e2/09b7571e2f944a13a39ab52648519b2d.jpg

[4] Image: https://habrastorage.org/web/4af/06a/744/4af06a744dea43f6ac97b6a48466e5ff.jpg

[5] Image: https://habrastorage.org/web/030/947/289/030947289ca24e2a9451cffab39373fa.jpg

[6] Image: https://habrastorage.org/web/d00/377/e01/d00377e017bd454da88ce6ed66c4c87e.jpg

[7] Image: https://habrastorage.org/web/6a3/98b/124/6a398b1241a042dba664545b5707f56c.png

[8] Image: https://habrastorage.org/web/fd1/cfe/bb8/fd1cfebb81fc46c7a57e1c2d25147ba0.jpg

[9] оригинал: http://www.gamasutra.com/blogs/CharlieDeck/20161118/285808/Why_Throwing_in_VR_Sucksand_How_to_Make_it_Better.php

[10] перевод на Хабре: https://habrahabr.ru/post/319250/

[11] Image: https://habrastorage.org/web/ab3/775/671/ab37756713cd4c03b9c53a307d91d779.jpg

[12] Image: https://habrastorage.org/web/748/01e/b4f/74801eb4f218460b82a6f7d4b46da766.jpg

[13] об этом писали в газетах: https://www.techpowerup.com/229719/unigine-superposition-benchmark-not-good-enough-for-steam

[14] Image: https://habrastorage.org/web/1e1/d0c/85e/1e1d0c85e44c43fd8e91d98fe4402112.png

[15] Image: https://habrastorage.org/web/fc4/339/19e/fc433919e4184c9d95a85cc68d248dfe.png

[16] UNIGINE 2.4 SDK: https://developer.unigine.com/en/devlog/20170206-unigine-2.4

[17] Image: https://habrastorage.org/web/67e/b51/a06/67eb51a063384bdc81f42acae072c4bc.gif

[18] Image: https://habrastorage.org/web/4b7/d58/db8/4b7d58db890a4d10a290e110e023aa40.gif

[19] эпичный тред: http://www.overclock.net/t/1360884/official-top-30-unigine-valley-benchmark-1-0/13280

[20] Image: https://habrastorage.org/web/f91/d51/c23/f91d51c23fb949d687f6a8caf269ac90.jpg

[21] собственные лидерборды: https://benchmark.unigine.com/leaderboards

[22] Image: https://habrastorage.org/web/1dc/394/ea3/1dc394ea3f564e9489b92a7679d41075.png

[23] сайт: https://benchmark.unigine.com

[24] Tom's Hardware: http://www.tomshardware.com/news/unigine-superposition-graphics-benchmark-test,34121.html

[25] TechPowerUp: https://www.techpowerup.com/232288/unigine-superposition-1-0-benchmark-released

[26] VideoCardz.com: https://videocardz.com/68354/unigine-launches-superposition-gpu-benchmark

[27] видеообзоры: https://www.youtube.com/watch?v=9dpLnNSoR9E

[28] Superposition: https://benchmark.unigine.com/superposition

[29] Источник: https://habrahabr.ru/post/328082/