Теоретическая часть: особенности архитектуры
После анонса предыдущей архитектуры Turing и видеокарт на ее основе из семейства GeForce RTX 20, практически сразу стало понятно, в какую именно сторону Nvidia будет развиваться в дальнейшем. Графические процессоры Turing стали первыми GPU с аппаратной поддержкой трассировки лучей и ускорением задач искусственного интеллекта, но это был лишь пробный камень, зародивший основу для применения новых технологий в играх. А вот к производительности и цене прошлого семейства компании были вопросы. Чтобы продвинуть аппаратную поддержку трассировки лучей и ИИ как можно раньше, пришлось поступиться всем остальным, и видеокарты Turing показывали порой не настолько впечатляющие результаты в других применениях. Тем более что смена техпроцесса на значительно более продвинутый тогда просто не была возможна.
Со временем это изменилось, стали доступны технологии производства полупроводников по нормам 7/8 нм. Появилась возможность добавить транзисторов при сохранении сравнительно небольшой площади кристалла. Именно поэтому в следующей архитектуре, которая была официально анонсирована в начале сентября, открылась возможность для усиления вообще всего в GPU. Видеокарты серии GeForce RTX 30, созданные на основе архитектуры Ampere, были представлены директором компании Дженсеном Хуангом во время виртуального мероприятия Nvidia, также он сделал еще несколько интересных объявлений, связанных с играми, инструментами для геймеров и разработчиков.
Вообще, с точки зрения возможностей, революционным является Turing, а Ampere было достаточно стать эволюционным развитием возможностей предыдущей архитектуры. Это вовсе не значит, что в новых GPU вообще нет ничего нового, но это означает значительное увеличение производительности. А чего еще нужно пользователям? Вменяемых цен, конечно же! Но сегодня мы больше нацелены на теорию и синтетические тесты, а о ценах и соотношении цены и производительности поговорим позже.
Первым графическим процессором на основе архитектуры Ampere стал большой «вычислительный» чип GA100, он вышел еще в мае и показал очень мощный прирост производительности в различных вычислительных задачах: нейросети, высокопроизводительные вычисления, анализ данных и т. д. Мы уже писали об архитектурных изменениях Ampere подробно, но это все-таки чисто вычислительный чип, предназначенный для узкоспециализированных применений (хотя странно говорить такое про чипы, которые все чаще вычисляют для нас различные вещи, пусть и на удаленных серверах), а игровые GPU — это совсем другое дело. И сегодня мы как раз рассмотрим новые решения семейства Ampere: чипы GA102 и GA104, на базе которых пока что анонсированы три модели видеокарт: GeForce RTX 3090, RTX 3080 и RTX 3070. Отметим, что Nvidia сразу же оговорилась, что остальные решения на чипах семейства GA10x, предназначенные для иных ценовых диапазонов, будут выпущены позднее.
Всего пока что было представлено три модели:
- GeForce RTX 3080 — топовая видеокарта игровой линейки за $699 (63 490 руб.). Имеет 10 ГБ памяти нового стандарта GDDR6X, работающей на эффективной частоте в 19 ГГц, в среднем до двух раз быстрее RTX 2080 и нацелен на обеспечение 60 FPS в 4K-разрешении. Доступна с 17 сентября.
- GeForce RTX 3070 — более доступная модель за $499 (45 490 руб.), оснащенная 8 ГБ привычной памяти GDDR6. Отличный выбор для игр в разрешении 1440p и иногда 4K, по производительности превосходит RTX 2070 в среднем на 60% и примерно соответствует GeForce RTX 2080 Ti при вдвое меньшей начальной стоимости. Появится в продаже в октябре.
- GeForce RTX 3090 — исключительная модель класса Titan за $1499 (136 990 руб.), имеющая обычное цифровое наименование. Эта трехслотовая модель с большим кулером имеет 24 ГБ GDDR6X-памяти на борту и способна справиться с любыми задачами, игровыми и не только. Видеокарта до 50% быстрее, чем Titan RTX, и предназначена для игры в 4K, и может даже обеспечить 60 FPS в 8K-разрешении во многих играх. Будет доступна в магазинах с 24 сентября.
На основе чипа GA102 сделаны модели GeForce RTX 3090 и GeForce RTX 3080, имеющие разное количество активных вычислительных блоков, а видеокарта GeForce RTX 3070 базируется на более простом GPU под кодовым именем GA104. Тем не менее, из-за всех улучшений, даже младшая модель из представленных, должна обходить флагмана предыдущей линейки в виде GeForce RTX 2080 Ti. А уж про старшие модели и не говорим, они точно намного мощнее. Заявлено, что GeForce RTX 3080 до двух раз быстрее модели предыдущего поколения — RTX 2080, а это — один из самых больших скачков в производительности GPU за долгие годы! Самая производительная GeForce RTX 3090 в новой линейке имеет 10496 вычислительных CUDA-ядер, 24 ГБ локальной видеопамяти нового стандарта GDDR6X и отлично подходит для игр в самом высоком 8K-разрешении.
Графические процессоры GA10x добавляют несколько (не очень много, по сравнению с тем же Turing, но тем не менее) новых возможностей, а главное — они значительно быстрее Turing в различных применениях, включая трассировку лучей. Ampere, благодаря специальным решениям и производству по более тонкому техпроцессу, обеспечивает значительно лучшую энергоэффективность и производительность в пересчете на единицу площади кристалла, что поможет в самых требовательных задачах, вроде трассировки лучей в играх, которая сильно просаживает производительность. Нам обещают, что игровые решения архитектуры Ampere примерно в 1,7 раза быстрее в традиционных задачах растеризации, по сравнению с Turing, и до двух раз быстрее при трассировке лучей:
Прежде чем мы приступим к подробному рассказу о первой ласточке из нового семейства игровых Ampere, сразу же хотим раскрыть две новости: хорошую и плохую, как обычно. Начнем с плохой: из-за всяких коронавирусно-логистическо-таможенных сложностей, сэмплы видеокарт в этот раз приехали очень поздно, и мы просто не успели сделать тесты. Не помогло даже откладывание анонса GeForce RTX 3080 на пару дней. Но есть и хорошая новость: уже сегодня мы покажем вам интереснейшие результаты синтетических тестов! Да, результатов новинки в играх придется подождать еще немного, но мы сделали все, что смогли, работая ночами без выходных.
Основой рассматриваемой сегодня модели видеокарты стал абсолютно новый графический процессор архитектуры Ampere, но так как она имеет достаточно много общего с предыдущими архитектурами Turing, Volta и местами даже Pascal, то перед прочтением материала мы советуем ознакомиться с некоторыми нашими предыдущими статьями:
- [08.10.18] Обзор новинки 3D-графики 2018 года — Nvidia GeForce RTX 2080
- [19.09.18] Nvidia GeForce RTX 2080 Ti — обзор флагмана 3D-графики 2018 года
- [14.09.18] Игровые видеокарты Nvidia GeForce RTX — первые мысли и впечатления
- [06.06.17] Nvidia Volta — новая вычислительная архитектура
- [09.03.17] GeForce GTX 1080 Ti — новый король игровой 3D-графики
Графический ускоритель GeForce RTX 3080 | |
---|---|
Кодовое имя чипа | GA102 |
Технология производства | 8 нм (Samsung «8N Nvidia Custom Process») |
Количество транзисторов | 28,3 млрд |
Площадь ядра | 628,4 мм² |
Архитектура | унифицированная, с массивом процессоров для потоковой обработки любых видов данных: вершин, пикселей и др. |
Аппаратная поддержка DirectX | DirectX 12 Ultimate, с поддержкой уровня возможностей Feature Level 12_2 |
Шина памяти | 320-битная (из 384-битной в полном чипе): 10 (из 12 имеющихся) независимых 32-битных контроллеров памяти с поддержкой памяти типа GDDR6X |
Частота графического процессора | до 1710 МГц (турбо-частота) |
Вычислительные блоки | 68 потоковых мультипроцессоров (из 84 в полном чипе), включающих 8704 CUDA-ядра (из 10752 ядер) для целочисленных расчетов INT32 и вычислений с плавающей запятой FP16/FP32/FP64 |
Тензорные блоки | 272 тензорных ядра (из 336) для матричных вычислений INT4/INT8/FP16/FP32/BF16/TF32 |
Блоки трассировки лучей | 68 RT-ядер (из 84) для расчета пересечения лучей с треугольниками и ограничивающими объемами BVH |
Блоки текстурирования | 272 блока (из 336) текстурной адресации и фильтрации с поддержкой FP16/FP32-компонент и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов |
Блоки растровых операций (ROP) | 8 широких блоков ROP на 96 пикселей (из 112) с поддержкой различных режимов сглаживания, в том числе программируемых и при FP16/FP32-форматах буфера кадра |
Поддержка мониторов | поддержка HDMI 2.1 и DisplayPort 1.4a (со сжатием DSC 1.2a) |
Спецификации референсной видеокарты GeForce RTX 3080 | |
---|---|
Частота ядра | до 1710 МГц |
Количество универсальных процессоров | 8704 |
Количество текстурных блоков | 272 |
Количество блоков блендинга | 96 |
Эффективная частота памяти | 19 ГГц |
Тип памяти | GDDR6X |
Шина памяти | 320-бит |
Объем памяти | 10 ГБ |
Пропускная способность памяти | 760 ГБ/с |
Вычислительная производительность (FP32) | до 29,8 терафлопс |
Теоретическая максимальная скорость закраски | 164 гигапикселей/с |
Теоретическая скорость выборки текстур | 465 гигатекселей/с |
Шина | PCI Express 4.0 |
Разъемы | один HDMI 2.1 и три DisplayPort 1.4a |
Энергопотребление | до 320 Вт |
Дополнительное питание | два 8-контактных разъема |
Число слотов, занимаемых в системном корпусе | 2 |
Рекомендуемая цена | $699 (63 490 рублей) |
Это первая модель нового поколения GeForce RTX 30, и мы очень рады, что линейка видеокарт Nvidia продолжает принцип наименования решений компании, заменяя на рынке RTX 2080 и улучшенную модель Super. Выше нее будет очень дорогая RTX 3090, а ниже — RTX 3070. То есть, все ровно так же, как и в предыдущем поколении, разве что тогда RTX 2090 не было. Остальные новинки появятся в продаже чуть позже, и мы обязательно их рассмотрим.
Рекомендованная цена для GeForce RTX 3080 также осталась равной той, что была выставлена для аналогичной модели предыдущего поколения — $699. Для нашего рынка ценовые рекомендации несколько менее приятны, но это никак не связано с жадностью калифорнийцев, пенять нужно на слабость нашей национальной валюты. В любом случае, ожидаемая от RTX 3080 производительность точно стоит этих денег. Как минимум пока у нее нет сильных конкурентов на рынке.
Да, у компании AMD для новой модели GeForce RTX 3080 нет соперников, и мы очень надеемся, что лишь пока. Относительный аналог по ценовому диапазону в виде Radeon VII давно устарел и снят с производства, а Radeon RX 5700 XT является решением более низкого уровня. Вместе с вами мы очень ждем решений на базе второй версии архитектуры RDNA, и особенно любопытен будет большой чип (так называемый «Big Navi»), видеокарты на базе которого должны дать бой верхним моделям Nvidia. Ну а пока что сравниваем RTX 3080 только с предыдущим поколением GeForce.
Как обычно, Nvidia выпустила видеокарты новой серии и в собственном дизайне под наименованием Founders Edition. Эти модели предлагают очень любопытные системы охлаждения и строгий дизайн, которого не найти у большинства производителей видеокарт, гонящихся за количеством и размером вентиляторов, а также разноцветной подсветкой. Самое интересное в собственных GeForce RTX 30, продаваемых под брендом Nvidia — совершенно новый дизайн системы охлаждения с двумя вентиляторами, расположенными необычным образом: первый более-менее привычно выдувает воздух через решетку с торца платы, а вот второй установлен с обратной стороны и протягивает воздух прямо сквозь видеокарту (в случае GeForce RTX 3070 кулер отличается, оба вентилятора установлены с одной стороны карты).
Таким образом тепло отводится от компонентов на карте в гибридную испарительную камеру, где оно распределяется по всей длине радиатора. Левый вентилятор выводит нагретый воздух через большие вентиляционные отверстия в креплении, а правый вентилятор направляет воздух к выдувному вентилятору корпуса, где он обычно установлен в большинстве современных систем. Эти два вентилятора работают на разной скорости, которая настраивается для них индивидуально.
Подобное решение заставило инженеров менять всю конструкцию. Если обычные печатные платы проходят во всю длину видеокарт, то в случае продувного вентилятора пришлось разработать короткую печатную плату, с уменьшенным слотом NVLink, новыми разъемами питания (переходник на два обычных 8-контактных PCI-E прилагается). При этом, карта имеет 18 фаз для питания и на ней размещено необходимое количество микросхем памяти, что было сделать непросто. Эти изменения дали возможность большого выреза для вентилятора на печатной плате, чтобы потоку воздуха ничего не мешало.
Nvidia утверждает, что дизайн кулеров Founders Edition привел к заметно более тихой работе, чем стандартные кулеры с двумя осевыми вентиляторами с одной стороны, при этом эффективность охлаждения у них выше. Поэтому новые решения устройств охлаждения позволили повысить производительность без роста температуры и шума по сравнению с видеокартами предыдущего поколения Turing. При уровне потребления 320 Вт новая видеокарта или на 20 градусов холоднее модели GeForce RTX 2080 или на 10 дБА тише. Но все это еще нужно проверить на практике.
Сходу кажется, что у новой системы охлаждения есть и плюсы и минусы. Например, есть вопросы по нагреву остальных компонентов — например, модулей памяти, на которые приходится выдув горячего воздуха. Но специалисты Nvidia говорят, что исследовали этот вопрос и новый кулер не сильно влияет на нагрев других элементов системы. Есть и плюсы — SLI-системе может быть прохладнее, по сравнению с парой Turing, так как при новом кулере проще выводить горячий воздух из пространства между картами. С другой стороны, на верхнюю карту будет идти горячий воздух от нижней.
Видеокарты GeForce RTX 30 Founders Edition будут продаваться на сайте компании. Все графические процессоры новой серии в версии Founders Edition будут доступны на русскоязычном сайте Nvidia, начиная с 6 октября. Естественно, что партнеры компании выпускают карты собственного дизайна: Asus, Colorful, EVGA, Gainward, Galaxy, Gigabyte, Innovision 3D, MSI, Palit, PNY и Zotac. Некоторые из них будут продаваться участвующими в акции продавцами с 17 сентября по 20 октября в комплекте с игрой Watch Dogs: Legion и годовой подпиской на сервис GeForce Now.
Также графическими процессорами серии GeForce RTX 30 будут оснащены игровые системы компаний Acer, Alienware, Asus, Dell, HP, Lenovo и MSI и системы ведущих российских сборщиков, включая Boiling Machine, Delta Game, Hyper PC, InvasionLabs, OGO! и Edelweiss.
Архитектурные особенности
При производстве GA102 и GA104 используется техпроцесс 8 нм компании Samsung, он каким-то образом дополнительно оптимизирован именно для Nvidia и поэтому называется 8N Nvidia Custom Process. Старший игровой чип Ampere содержит 28,3 миллиарда транзисторов и имеет площадь 628,4 mm2. Это хороший шаг вперед по сравнению с 12 нм у Turing, но тот же техпроцесс TSMC 7 нм, который применяется при производстве вычислительного чипа GA100, по плотности заметно превосходит 8 нм у Samsung. Прямо сопоставлять сложно, конечно, но мы то судим по чипам одной архитектуры Ampere, сравнивая игровой GA102 и большой чип GA100.
Если разделить заявленные миллиарды транзисторов на площадь GA102, то получается плотность около 45 миллионов транзисторов на мм2. Несомненно, это заметно лучше 25 миллионов транзисторов на мм2 у TU102, выполненном по техпроцессу TSMC 12 нм, но при этом явно хуже, чем 65 миллионов транзисторов на мм2 у большого Ampere (GA100), который делают на 7-нанометровой фабрике TSMC. Конечно, не совсем правильно сравнивать разные GPU так прямо, есть еще масса оговорок, но тем не менее — меньшая плотность техпроцесса Samsung в случае игрового Ampere налицо.
Поэтому, весьма вероятно, что этот техпроцесс выбирали, принимая во внимание какие-то другие причины. Выход годных на заводе Samsung может быть лучше, условия для такого жирного клиента особые, да и себестоимость в целом может быть заметно ниже — тем более, что у TSMC все производственные мощности техпроцесса 7 нм заняты кучей других компаний. Так что игровые Ampere производят на фабриках Samsung скорее из-за несогласия Nvidia с предложенными тайваньцами ценами и/или условиями.
Переходим к тому, чем отличается новый GPU от старых. Как и предыдущие чипы Nvidia, GA102 состоит из укрупненных кластеров Graphics Processing Cluster (GPC), которые включают несколько кластеров текстурной обработки Texture Processing Cluster (TPC), которые содержат потоковые процессоры Streaming Multiprocessor (SM), блоки растеризации Raster Operator (ROP) и контроллеры памяти. И полный чип GA102 содержит семь кластеров GPC, 42 кластера TPC и 84 мультипроцессора SM. Каждый GPC содержит шесть TPC, каждый из пары SM, а также один движок PolyMorph Engine для работы с геометрией.
GPC — это высокоуровневый кластер, включающий все ключевые блоки для обработки данных внутри него, каждый из них имеет выделенный движок растеризации Raster Engine и теперь включает два раздела ROP по восемь блоков каждый — в новой архитектуре Ampere эти блоки не привязаны к контроллерам памяти, а находятся прямо в GPC. В итоге, полный GA102 содержит 10752 потоковых CUDA-ядра, 84 RT-ядер второго поколения и 336 тензорных ядер третьего поколения. Подсистема памяти полного GA102 содержит двенадцать 32-битных контроллеров памяти, что дает 384-бит в общем. Каждый 32-битный контроллер связан с разделом кэш-памяти второго уровня объемом в 512 КБ, что дает общий объем L2-кэша в 6 МБ для полноценной версии GA102.
Но до этого момента мы с вами рассматривали полный чип, а сегодня у нас все внимание направлено на конкретную модель видеокарты GeForce RTX 3080, использующей довольно серьезно урезанный по количеству различных блоков вариант GA102. Эта модификация получила сильно сниженные характеристики, активных кластеров GPC стало шесть, но количество блоков SM в них отличается, как видите на диаграмме. Соответственно, меньше и всех остальных блоков: 8704 CUDA-ядер, 272 тензорных ядра и 68 RT-ядер. Текстурных блоков 272 штуки, а блоков ROP — 96. Все показатели заметно ниже, чем у RTX 3090 — то ли пока много бракованных GPU, то ли Nvidia искусственно развела модели по производительности.
GeForce RTX 3080 имеет 10 ГБ быстрой GDDR6X-памяти, которая подключена по 320-битной шине, что дает до 760 ГБ/с пропускной способности. По поводу видеопамяти есть такое соображение — возможно, 8 и 10 гигабайт видеопамяти могут оказаться недостаточным объемом, особенно на перспективу. Nvidia уверяет, что по их исследованиям ни одна игра даже в 4K-разрешении не требует большего объема памяти (многие игры хоть и занимают весь имеющийся объем, но это не значит, что им будет недоставать меньшего), но есть один довод усомниться в таком решении — перспектива. Уже вот-вот выйдут консоли нового поколения с большим объемом памяти и быстрыми SSD, и вполне вероятно, что некоторые мультиплатформенные игры могут начать хотеть большего, чем 8-10 ГБ локальной видеопамяти. То есть, на данный момент этого достаточно, но будет ли хватать через год или два?
Да и пропускная способность тоже не вдвое увеличилась, хоть и применен новый тип памяти GDDR6X — не маловато ли? Конечно же, кэширование постоянно улучшается, как и методы внутричипового сжатия данных без потерь, но хватит ли всего этого при удвоении производительности и утроении темпа математических вычислений? Хотя Micron указывает эффективную рабочую частоту памяти как 21 ГГц, Nvidia в своих продуктах использует довольно консервативные 19,5 для RTX 3090 и 19 ГГц для RTX 3080. Может ли это говорить о сырости нового типа памяти и/или о ее слишком высоком энергопотреблении?
Как и все чипы GeForce RTX, новый GA102 содержит три основных типа вычислительных блоков: вычислительные CUDA-ядра, RT-ядра для аппаратного ускорения алгоритма Bounding Volume Hierarchy (BVH), использующегося при трассировке лучей для поиска их пересечения с геометрией сцены (подробнее об этом написано в обзоре архитектуры Turing), а также тензорные ядра, значительно ускоряющие работу с нейросетями.
Основным нововведением Ampere является удвоение FP32-производительности для каждого мультипроцессора SM, по сравнению с семейством Turing, о чем мы подробно поговорим далее. Это приводит к повышению пиковой производительности до 30 терафлопсов для модели GeForce RTX 3080, что значительно превышает показатель 11 терафлопсов для аналогичного по позиционированию решения архитектуры Turing. Почти то же самое касается и RT-ядер — хотя их число не изменилось, внутренние улучшения привели к удвоению темпа поиска пересечений лучей и треугольников, хотя пиковый показатель изменился не вдвое — с 34 RT-терафлопсов у Turing до 58 RT-терафлопсов в случае Ampere.
Ну а улучшенные тензорные ядра хоть и не удвоили производительность при обычных условиях, так как их стало вдвое меньше, но темп вычислений то удвоился. Получается, по ускорению нейросетей никаких улучшений нет? Они есть, но заключаются исключительно в случае обработки так называемых разреженных матриц — об этом мы очень подробно писали в статье о вычислительном чипе Ampere. С учетом этой возможности, пиковая скорость тензорных блоков поднялась с 89 тензорных терафлопсов у RTX 2080 до 238 в случае RTX 3080.
Оптимизация блоков ROP
Блоки ROP в чипах Nvidia ранее были «привязаны» к контроллерам памяти и соответствующим разделам L2-кэша, и изменять ширину шины и количество ROP приходилось совместно. Но в чипах GA10x блоки ROP теперь являются частью кластеров GPC, что имеет сразу несколько последствий. Это повышает производительность растровых операций за счет увеличения общего количества имеющихся блоков ROP, а также устранения несоответствия между пропускными способностями различных блоков. Заодно можно более гибко регулировать количество блоков ROP и контроллеров памяти в разных моделях видеокарт, оставляя их не столько, сколько получается, а столько, сколько нужно.
Так как полный чип GA102 состоит из семи кластеров GPC и 16 блоков ROP на каждый, то всего в нем насчитывается 112 блоков ROP, что несколько больше по сравнению с 96 блоками ROP у предыдущих аналогичных решений прошлых поколений с 384-битной шиной памяти, вроде графического процессора TU102. Большее количество блоков ROP улучшит производительность чипа при операциях блендинга, сглаживании методом мультисэмплинга, да и в целом частота заполнения подрастет, что всегда хорошо, особенно в высоких разрешениях рендеринга.
Плюсы от помещения ROP в GPC заключаются и в том, что соотношение растеризаторов к количеству блоков ROP всегда остается неизменным, и эти подсистемы не будут ограничивать другую, как в TU106, например, где 64 блоков ROP бесполезны по причине того, что растеризаторы выдавали лишь 48 пикселей за такт, а ROP в принципе не могут смешивать больше, чем выдают растеризаторы. В решениях архитектуры Ampere подобный перекос невозможен.
Изменения в мультипроцессорах
Мультипроцессоры SM в Turing стали первыми для графических архитектур Nvidia мультипроцессорами с выделенными RT-ядрами для аппаратного ускорения трассировки лучей, тензорные ядра впервые появились в Volta, а Turing получил улучшенные тензорные ядра второго поколения. Но основным улучшением в мультипроцессорах Turing и Volta, не связанным с трассировкой и нейросетями, стала возможность параллельного исполнения FP32 и INT32-операций одновременно, а мультипроцессор в чипах GA10x выводит эту возможность на новый уровень.
Каждый мультипроцессор GA10x содержит 128 CUDA-ядер, четыре тензорных ядра третьего поколения, одно RT-ядро второго поколения, четыре текстурных блока TMU, 256 КБ регистровый файл и 128 КБ L1-кэша/конфигурируемой разделяемой памяти. Также в каждом SM есть по два FP64-блока (168 штук на весь GA102), которые не отображены на схеме, так как они размещены скорее для совместимости, ибо вычислительный темп в 1/64 от темпа FP32-операций не дает широко развернуться. Столь слабые возможности по FP64-вычислениям традиционны для игровых решений компании, они включены просто для того, чтобы соответствующий код (включая тензорные FP64-операции) хоть как-то исполнялся на всех GPU компании.
Как и в предыдущих чипах, мультипроцессор Ampere разделен на четыре вычислительных подраздела, каждый из которых имеет собственный регистровый файл объемом 64 КБ, L0-кэш инструкций, блоки диспетчера и запуска варпов, а также наборы математических блоков. Четыре подраздела SM имеют доступ к конфигурируемому пулу разделяемой памяти и L1-кэша объемом в 128 КБ.
А теперь пара слов об изменениях в SM — если в TU102 каждый мультипроцессор имел по два тензорных ядра второго поколения на каждый подраздел (всего восемь тензорных ядер на SM), то в GA10x каждый подраздел имеет лишь по одному тензорному ядру и четыре на весь SM, но эти ядра — уже третьего поколения, что означает вдвое большую производительность, по сравнению с ядрами предыдущего поколения. Но изменения и в CUDA-ядрах значительно интереснее.
Удвоение темпа FP32-вычислений
Переходим к наиболее важному архитектурному изменению Ampere, которое и выливается в значительный рост и пиковой и реальной производительности. Как известно, большинство графических вычислений используют операции с плавающей запятой и 32-битной точностью (FP32), и все GPU лучше всего подходят именно для такого типа вычислений. Казалось бы — ну что сложного в том, чтобы увеличить производительность? Увеличивай количество FP32-блоков, да и все! На деле есть масса ограничений, как физических, так и логических, и увеличить количество блоков не так уж просто.
Но процесс идет, и уже в предыдущем поколении Turing каждый из четырех подразделов SM имел два основных набора функциональных блоков ALU, выполняющих обработку данных (datapath), лишь один из которых мог обрабатывать FP32-вычисления, а второй был добавлен именно в Turing, чтобы параллельно исполнять исключительно целочисленные операции, необходимость в которых возникает не так уж редко, и эти дополнительные INT32-блоки повышали эффективность во многих задачах.
Главное же изменение в мультипроцессорах семейства Ampere заключается в том, что они добавили возможность обработки FP32-операций на обоих имеющихся наборах функциональных блоков, и пиковая производительность FP32 выросла вдвое. То есть, один набор функциональных блоков в каждом разделе SM содержит 16 CUDA-ядер, способных на исполнение такого же количества FP32-операций за такт, а второй состоит из 16 блоков FP32 и 16 блоков INT32, и способен выполнять или те или другие — 16 за такт. В результате, каждый SM может выполнять или 128 FP32-операций за такт или по 64 операций FP32 и INT32, и максимальная производительность GeForce RTX 3090 выросла до более чем 35 терафлопс, если говорить именно о FP32-вычислениях, а это более чем вдвое превышает возможности Turing.
Сразу же возникает немало вопросов об эффективности такого разделения и о том, какие задачи получат преимущество от подобного подхода. Современные игры и 3D-приложения используют смесь FP32-операций с достаточно большим количеством простых целочисленных инструкций для адресации и выборки данных и т. д. Внедрение выделенных INT32-блоков в Turing обеспечило приличный прирост производительности в таких случаях, но если задача в основном использует вычисления с плавающей запятой, то половина вычислительных блоков Turing простаивает. А добавление возможности вычисления или FP32 или INT32 в Ampere дает большую гибкость и поможет повысить производительность в большем количестве случаев.
А вот удвоенный темп исполнения FP16-операций для CUDA-ядер (не путать с тензорными) архитектурой Ampere больше не поддерживается, как это было в архитектуре Turing. Вряд ли отказ от удвоенного темпа со снижением точности расчетов будет большой проблемой для игрового GPU, так как приросты от снижения точности в игровых нагрузках составляют не более нескольких процентов, но особенность любопытная. В тензорных же вычислениях, где применение FP16 бывает полезным, все осталось по-прежнему.
Конечно, приросты от добавления второго FP32 datapath будут сильно зависеть от исполняемого шейдера и смеси применяемых в нем инструкций, но мы не видим особого смысла в подробном разборе того, в каких условиях и сколько каких инструкций сможет выполнить новый мультипроцессор, на этот вопрос полноценно ответит только практика. Единственное, что можно добавить в качестве намека — одним из применений, которое точно получит хороший прирост от удвоения темпа FP32-операций, являются шейдеры для шумоподавления изображения, полученного при помощи трассировки лучей. Также должны хорошо ускориться и другие техники постобработки, но далеко не только они.
Добавление второго массива FP32-блоков увеличивает производительность в задачах, производительность которых ограничена математическими вычислениями. Например, физические расчеты и трассировка получают прирост в 30%-60%. И чем сложнее задачи для трассировки лучей в играх, тем больший прирост производительности для Ampere будет наблюдаться по сравнению с Turing. Ведь при использовании трассировки лучей производится много вычислений адресов в памяти, и за счет возможности параллельной обработки FP32- и INT32-вычислений в графических процессорах Turing и Ampere, это работает значительно быстрее, чем на других GPU.
Улучшения системы кэширования и текстурирования
Удвоение темпа FP32-операций требует и вдвое большего количества данных, а значит — нужно увеличить пропускную способность разделяемой памяти и L1-кэша в мультипроцессоре. По сравнению с Turing, новый мультипроцессор GA10x предлагает на треть больший объединенный объем L1-кэша данных и разделяемой памяти — от 96 КБ до 128 КБ на SM. Объем разделяемой памяти может быть сконфигурирован для различных задач, в зависимости от нужд разработчика. Архитектура L1-кэша и разделяемой памяти в Ampere схожа с той, что предлагал Turing, и чипы GA10x имеют унифицированную архитектуру для разделяемой памяти, L1-кэша данных и текстурного кэша. Унифицированный дизайн позволяет изменять объем, доступный для L1-кэша и разделяемой памяти.
В вычислительном режиме, мультипроцессоры GA10x могут быть сконфигурированы в одном из вариантов:
- 128 КБ L1-кэш и 0 КБ разделяемой памяти
- 120 КБ L1-кэш и 8 КБ разделяемой памяти
- 112 КБ L1-кэш и 16 КБ разделяемой памяти
- 96 КБ L1-кэш и 32 КБ разделяемой памяти
- 64 КБ L1-кэш и 64 КБ разделяемой памяти
- 28 КБ L1-кэш и 100 КБ разделяемой памяти
Для графических и смешанных задач с применением асинхронных вычислений, GA10x выделит 64 КБ на L1-кэш данных и текстурный кэш, 48 КБ разделяемой памяти и 16 КБ будет зарезервировано для различных операций графического конвейера. В этом кроется еще одно важное отличие от Turing при графических нагрузках — объем кэша увеличится вдвое, с 32 КБ до 64 КБ, и это обязательно скажется положительно в задачах, требовательных к эффективному кэшированию, вроде трассировки лучей.
Но это еще не все. Полный чип GA102 содержит 10752 КБ кэша первого уровня, что значительно превышает объем L1-кэша в 6912 КБ у TU102. В дополнение к увеличению его объема, в GA10x вдвое выросла пропускная способность кэш-памяти, по сравнению с Turing — 128 байт за такт на мультипроцессор против 64 байт за такт у Turing. Так что общая ПСП у L1-кэша GeForce RTX 3080 стала равна 219 ГБ/с против 116 ГБ/с у GeForce RTX 2080 Super.
В Ampere произошли и некоторые изменения в TMU, о чем скромно написали в слайде вместе с улучшениями кэширования: «New L1/texture system». По некоторым данным, в Ampere удвоили темп текстурных выборок (можно считывать вдвое больше текселей за такт) для некоторых популярных форматов текстур при point sampling выборках без фильтрации — такие выборки в последнее время очень часто используют вычислительные задачи, включая фильтры шумоподавления и другие постфильтры, использующие экранное пространство и другие техники. Вместе с удвоенной пропускной способностью L1-кэша это поможет «прокормить» данными увеличенное вдвое количество FP32-блоков.
RT-ядра второго поколения
RT-ядра у Turing и Ampere весьма схожи и реализуют концепцию MIMD (Multiple Instruction Multiple Data — Множественные Команды, Множественные Данные), которая позволяет обрабатывать много лучей одновременно, что отлично подходит под задачу, в отличие от SIMD/SIMT, которые используются при исполнении трассировки лучей на универсальных потоковых процессорах, когда выделенных RT-ядер нет. Специализация блоков под конкретную задачу позволяет получить более высокую эффективность исполнения и минимальные задержки.
Некоторые специалисты считают, что все вычисления нужно делать на универсальных блоках, а не внедрять специализированные, рассчитанные на какую-то отдельную задачу. Но это в идеале, а реальность такова, что если что-то можно эффективно выполнить на универсальных блоках, то так и делают, а вот если эффективность универсальных вычислителей слишком низка, то внедряют специализированные блоки, максимально эффективные в конкретных задачах.
Трассировка лучей в принципе плохо подходит для моделей исполнения SIMD и SIMT, типичной для графических процессоров, и без выделенных блоков с ней трудно справиться с приемлемой производительностью. Именно поэтому Nvidia и внедрила в Turing специализированные RT-ядра, использующие модель MIMD, они не страдают от проблем с расхождениями и обеспечивают минимальные задержки при трассировке. А программная обработка BVH-структур в вычислительных шейдерах будет слишком медленной, на широком SIMD не получится эффективно просчитывать пересечения лучей.
Проблема производительности при трассировке лучей заключается в том, что лучи зачастую некогерентны и их пересечения оптимизировать сложно. Например, лучи отражаются от шероховатых поверхностей в разные стороны, так как она не является идеальным зеркалом. Именно поэтому в демках программной трассировки на шейдерах без аппаратного DXR-ускорения показывают в основном отражения от идеально ровных поверхностей. Такие отражения сделать проще всего, так как большая их часть является зеркальными, когда угол падения равен углу отражения, и для соседних пикселей угол одинаковый, все лучи летят в одном или схожем направлении, и при обходе дерева на SIMD будет выше эффективность обработки, чем при разных углах.
А вот иные алгоритмы при трассировке (диффузные отражения, GI, AO, мягкие тени и т. д.) делать без аппаратных блоков гораздо сложнее. Лучи при этом летят в произвольном направлении, и при их обработке на SIMD, треды внутри варпа разойдутся по разным веткам BVH, и эффективность будет очень низкой. Поэтому для расчета АО, GI, полутеней от площадных источников света и других «шумящих» при трассировке алгоритмов, использование RT-ядер будет в разы эффективнее. Это было маленькое отступление, а теперь переходим к улучшениям трассировки в Ampere.
Новые RT-ядра архитектуры Ampere получили несколько нововведений, и вместе с улучшениями системы кэширования это привело к приросту скорости в задачах с трассировкой лучей до двух раз, по сравнению с решениями на базе чипов Turing. Конечно, прирост в играх с трассировкой не всегда будет двукратным, так как, кроме ускорения BVH-структур, есть еще затенение, постфильтрация и многое другое. К слову, новые GA10x умеют одновременно исполнять графический код и RT-вычисления, а также трассировку лучей и вычисления, что ускоряет выполнение многих задач.
Решения семейства Turing стали важнейшей вехой в графике реального времени, они первыми аппаратно ускорили важнейший метод рендеринга — трассировку лучей. До появления предыдущего поколения карт Nvidia, этот метод применялся или в очень простеньких демонстрационных программах или в кино и анимации, но там далеко не в реальном времени все исполняется. Впрочем, и претензий к Turing у пользователей было немало, в частности — недостаточная производительность для того, чтобы трассировка лучей в играх получила как достаточное распространение, так и требуемое качество и количество. Да, Nvidia добилась неплохих результатов в деле оптимизации, но производительности семейства Turing явно не хватает даже для не совсем полноценной трассировки лучей (шепотом — не хватит и Ampere и еще пары-тройки-пятерки будущих поколений GPU, т. к. трассировка лучей — это бездонная бочка, поглощающая все имеющиеся вычислительные ресурсы).
Неудивительно, что в Ampere обязательным делом было серьезное повышение производительности трассировки. И в чипах GA10x появилось второе поколение технологии, которое очень похоже на то, что было в Turing, но быстрее примерно вдвое, так как RT-ядра в Ampere имеют удвоенный темп по поиску пересечений лучей и треугольников. Точно как и в предыдущих GPU, новые выделенные RT-блоки ускоряют процесс поиска пересечений лучей и треугольников при помощи структур и алгоритма BVH. От мультипроцессора SM требуется лишь пустить луч, а RT-ядро выполнит все необходимые вычисления, связанные с поиском пересечения, и SM получит результат, есть попадание или нет. Просто теперь это происходит вдвое быстрее. Уточнение важно, так как полный чип TU102 содержит 72 RT-ядра, а полный чип GA102 — 84 RT-ядра нового поколения, что лишь немногим больше. Но именно из-за способности исполнять вдвое больше операций определения пересечений лучей с треугольниками, новинка в итоге имеет заметно большую производительность.
Но это еще не все улучшения, связанные с трассировкой лучей, есть кое-что новое и в асинхронных вычислениях, позволяющих GPU выполнять графические и вычислительные расчеты одновременно. Современные игры частенько используют эту возможность смешивания различных расчетов для того, чтобы повысить эффективность использования ресурсов GPU и улучшить качество картинки. При помощи постфильтров, например. Но с внедрением трассировки лучей использование подобных асинхронных загрузок может применяться еще более широко.
Суть улучшений асинхронного исполнения в Ampere в том, что новые GPU позволяют исполнять RT-вычисления и графические одновременно, равно как и RT и вычислительные — они исполняются одновременно на каждом мультипроцессоре GA10x. Новые SM могут исполнять две разных задачи одновременно, не ограничиваясь лишь графическим и вычислительным потоками, как было в Turing. Это позволяет использовать возможность в таких задачах, как шумоподавление на вычислительных шейдерах, работающее совместно с ускоренной на RT-ядрах трассировкой лучей.
Это особенно полезно потому, что интенсивное использование RT-ядер при трассировке не вызывает значительной загрузки CUDA-ядер, и большая часть из них простаивает. То есть, большая часть вычислительной мощности SM доступна для других рабочих нагрузок, что является преимуществом перед архитектурами, не имеющими выделенных RT-ядер, которые используют обычные ALU для выполнения как графических задач, так и трассировки лучей. Кроме одновременного исполнения операций трассировки, новые графические процессоры могут выполнять и другие типы вычислительных нагрузок одновременно, а программное управление позволяет назначать им разные приоритеты.
Запуск всех задач на шейдерах слишком требователен, а перекладывание части работы на RT-ядра и тензорные ядра способно значительно ее облегчить. Nvidia показывает это на примере игры Wolfenstein: Youngblood с применением трассировки лучей. При исполнении рендеринга на RTX 2080 Super использование только CUDA-ядер приведет к частоте кадров порядка 20 FPS, а перенос поиска пересечений на RT-блоки и одновременное исполнение с другими графическими задачами даст уже 50 FPS, а если включить еще и DLSS, исполняемый на тензорных ядрах, то за секунду отрисуется уже 83 кадра — более чем вчетверо больше!
Решения Nvidia Ampere умеют ускорять процесс даже еще лучше. Покажем наглядно, чем отличается тупой подход к трассировке, когда всеми задачами занимаются исключительно универсальные вычислительные ядра (примерно так трассировка лучей работает в ремастере Crysis, к примеру), от решений Nvidia, использующих выделенные аппаратные блоки специально для трассировки.
Отрисовка одного кадра на GeForce RTX 3080 при использовании только CUDA-ядер занимает 37 мс (меньше 30 FPS), а если подключить RT-ядра, то время сократится сразу до 11 мс (90 FPS). Теперь добавим использование тензорных ядер при помощи DLSS и получим 7,5 мс (133 FPS).
Но и это еще не все оптимизации — если использовать новый метод асинхронных вычислений, когда графика, трассировка лучей и тензорные операции исполняются параллельно, то GeForce RTX 3080 способна отрисовать кадр за 6,7 мс, а это уже 150 FPS — более чем в пять раз быстрее, если не использовать специализированные ядра Ampere! И заметно быстрее, чем Turing, до 1,7-1,9 раз, вот наглядная табличка:
Ну хорошо, с Ampere разобрались. А как поддержка трассировки лучей будет сделана в конкурирующей архитектуре RDNA2 компании AMD? Ответ на этот вопрос мы пока что не знаем, но можем предположить, основываясь на общедоступной информации. Andrew Goossen, системный архитектор Microsoft Xbox Series X, в одном интервью сказал, что без аппаратного ускорения работу выделенных блоков по расчету пересечений лучей с треугольниками можно сделать и в шейдерах, но только для этого потребовалось бы потратить более 13 терафлопсов производительности. Он уточнил, что в Xbox Series X этой работой занимаются выделенные блоки (находящиеся в текстурных модулях RDNA2, судя по патентам AMD), а шейдерные работают совместно с ними на полной производительности. Получается, что консоль Xbox следующего поколения способна достичь при трассировке лучей производительности, эквивалентной 25 терафлопсам.
На презентации Ampere глава Nvidia уточнил, что они использовали аналогичную Microsoft методологию подсчета терафлопсов при трассировке, посчитав таким же образом эквивалент шейдерной мощи, необходимой для расчета пересечений лучей и треугольников, которые делают RT-ядра. В итоге у GeForce RTX 3080 получается порядка 88 терафлопс (RT-TFLOPS — эквивалент количества операций с плавающей точкой для CUDA-ядер, который потребовался бы для расчета операций пересечений лучей с ограничивающими объемами и треугольниками, который исполняют RT-ядра), что более чем вдвое превышает значение для Xbox.
Конечно, сравнивать один из топовых дискретных GPU с консольной системой-на-чипе, в которую входит и CPU, не совсем корректно, но вряд ли топовые GPU AMD будут более чем вдвое-втрое быстрее графического ядра Xbox. Впрочем, это мы еще узнаем. Преимущество архитектуры Nvidia Ampere есть еще и в том, что их RT-ядра являются полностью отдельными блоками, не делящими ресурсы с текстурными и другими блоками мультипроцессора. И исполнять асинхронные вычисления с ними также должно быть проще, так как будет использоваться меньше общих ресурсов. Но это все лишь теория, ждем октября.
Ускорение трассировки при использовании motion blur
Использование смазывания в движении (motion blur) весьма популярно как в графике реального времени, так и в кино и анимации. Этот эффект позволяет сделать картинку более реалистичной, когда движущиеся объекты слегка смазаны, а без этого эффекта движение получается слишком дерганым и неплавным. Также motion blur можно использовать для усиления артистического эффекта. Ну и имитация фото-, кино- и видеосъемки также требует этого эффекта, так как кадр не захватывается единомоментно, у него есть выдержка, за время которой объекты могут переместиться, что и порождает этот оптический эффект. Особенно важно использовать motion blur при низкой частоте кадров.
Для создания реалистичного смазывания в движении используется множество техник, но качественная картинка всегда дается непросто. Процесс вычислительно интенсивный, так как зачастую требуется отрисовать несколько промежуточных положений объектов и смешать значения последующей постобработкой. В играх используется множество упрощений, но они приводят к артефактам, не так уж важным для рендеринга в реальном времени, в отличие от motion blur в кино и анимационных фильмах.
Один из популярных методов смазывания в движении использует несколько лучей, когда BVH возвращает информацию о пересечении луча с геометрией, перемещающейся во времени, а затем несколько сэмплов смешиваются для создания эффекта размытия.
Такой метод появился в Nvidia OptiX API 5.0 три года назад, и смазывание при движении камеры и статических объектах неплохо исполняется и на Turing, а вот с динамическими объектами все сложнее, так как информация в BVH изменяется при их движении. RT-ядра в GA10x включают новую возможность значительного ускорения процесса трассировки лучей в таком случае, при внесении небольших модификаций в BVH, при движении геометрии и ее деформации.
Новая возможность Nvidia OptiX 7 позволяет разработчикам назначить пути движения для геометрии, чтобы получить требуемый эффект. RT-ядро Turing умеет аппаратно обходить иерархию BVH, находить пересечения лучей и геометрии или ограничивающих объемов, а в RT-ядра GA10x добавили новый блок Interpolate Triangle Position, который ускоряет размытие движения с трассировкой лучей.
Сложность с реализацией motion blur в том, что треугольники в сцене не имеют фиксированного положения, а перемещаются со временем, но можно узнать его положение при указании времени. Лучам присваиваются временные метки, указывающие время отслеживания, и оно используется в BVH для определения положения треугольника и пересечения с лучом. Если это не ускорять аппаратно на GPU, то ресурсоемкость процесса может вырасти нелинейно, особенно в случаях вроде вращающегося пропеллера.
Если взять статичную сцену, то много лучей может попадать в один треугольник одновременно, а с размытием в движении каждый луч существует в свой момент времени, и нужно отслеживать их. В результате работы алгоритма, получается математически правильный размытый результат из смеси сэмплов, сгенерированных лучами, падающими на треугольники в разных положениях и в разные моменты времени.
Новый блок Interpolate Triangle Position интерполирует положение треугольников в BVH между их положениями на основе движения объекта, и такой подход позволяет выполнять рендеринг с размытием в движении с трассировкой лучей до восьми раз быстрее, по сравнению с Turing.
Поддержка аппаратного ускорения motion blur на Ampere доступна в популярном ПО: Blender 2.90, Chaos V-Ray 5.0, Autodesk Arnold и Redshift Renderer 3.0.X при использовании Nvidia OptiX 7.0 API. В этом ПО пусть и не будет восьмикратного ускорения, но пятикратное вполне себе намеряли в сравнении RTX 3080 с RTX 2080 Super в Blender Cycles 2.90, использующем OptiX 7.0.
Эту возможность в будущем могут развивать и дальше, чтобы не только при motion blur получать преимущество по скорости создания качественной картинки. В теории видится возможным применение подобного ускорения при сглаживании, когда просчитываемая геометрия немного сдвигается, получая большое количество сэмплов, из которых затем получают усредненную сглаженную картинку. Возможно, можно это как-то и с DLSS совместить, ведь там используются векторы движения. Но это лишь теоретические рассуждения, Nvidia пока что ни о чем таком не говорила.
Тензорные ядра третьего поколения
В архитектуре Ampere были произведены некоторые улучшения, связанные с тензорными ядрами. Все чипы GA10x используют новую их модификацию, известную нам по большому вычислительному чипу Ampere. Тензорные ядра предназначены исключительно для выполнения тензорных/матричных операций, используемых в задачах глубокого обучения (deep learning). Они позволяют значительно повысить производительность этих операций за счет своей узкой специализации. Тензорные ядра впервые появились в архитектуре Volta и были улучшены в Turing, а затем и в большом Ampere.
Новые тензорные ядра отличаются поддержкой новых типов данных, повышенной эффективностью и гибкостью. А новая возможность для ускорения вычислений над структурно-разреженными матрицами позволяет вдвое повысить производительность по сравнению с ядрами Turing в некоторых случаях. Для игроков тензорные ядра полезны в основном из-за их использования в технологии Nvidia DLSS, служащей для ускорения рендеринга в высоких разрешениях, фильтрах шумоподавления, но также они будут полезны и в приложении Nvidia Broadcast для шумоподавления и трансформации фона. Именно внедрение тензорных ядер в массовые видеокарты GeForce позволило начать использование технологий искусственного интеллекта в обычных ПК.
Тензорные ядра в GA10x оптимизированы для снижения площади занимаемой ими на кристалле по сравнению с большим чипом GA100 — они вдвое медленнее и не имеют поддержки FP64-вычислений. Но по сравнению с Turing, тензорные ядра Ampere были улучшены для увеличения эффективности и снижения энергопотребления. И хотя игровые чипы Ampere имеют вдвое меньшее количество тензорных ядер, чем Turing, они умеют производить вычисления вдвое быстрее. Так что по производительности в таком режиме не произошло никаких изменений.
Но тензоры в Ampere получили возможность удвоенной производительности при вычислениях над структурно-разреженными матрицами. Это может дать 2,7-кратный прирост скорости в некоторых применениях, если сравнивать RTX 3080 с RTX 2080 Super. Всего GeForce RTX 3080 обеспечивает в пике 119 терафлопс при тензорных FP16-операциях, а с разреженными матрицами — 238 терафлопс. Для данных в формате INT8 производительность еще вдвое выше, для INT4 — вчетверо.
Разреженная матрица — это матрица с преимущественно нулевыми элементами в ней, подобные матрицы часто встречаются в приложениях, связанных с использованием ИИ. Так как нейросети способны адаптировать весовые коэффициенты в процессе обучения на основе его результатов, то подобное структурное ограничение не особо влияет на точность обученной сети для инференса, и это позволяет выполнять его с разреженностью.
В Nvidia разработали универсальный метод прореживания нейросетей для инференса, используя структурированный шаблон разреженности 2:4. Сначала сеть обучается с использованием плотных весов, затем применяется мелкозернистое структурированное прореживание, а оставшиеся ненулевые веса корректируются на дополнительных этапах обучения. Этот метод не приводит к значительной потере точности инференса, но позволяет вдвое повысить производительность.
В дополнение к FP16-точности, появившейся в тензорных ядрах Volta, и INT8, INT4 и 1-битной точностям, добавленным в Turing, решения семейства Ampere поддерживают два новых типа данных TF32 и BF16 — аналогично большому чипу GA100. Единственная разница между GA100 и GA10x по функциональности тензорных ядер заключается в том, что старший чип содержит блоки для ускорения операций с двойной точностью FP64, чего нет в младших по понятным причинам.
Вкратце про новые типы данных. TF32 обеспечивает ускорение операций над данными в FP32-формате в задачах глубокого обучения. Этот формат сочетает точность FP16 и диапазон значений FP32: 8-битная экспонента, 10-битная мантисса и знаковый бит. Важно, что вычисления проводятся над FP32-значениями на входе, на выход также подается FP32, а накопление данных при этом производится в формате FP32, так что точность вычислений не теряется. Архитектура Ampere использует TF32-вычисления при использовании тензорных ядер над данными формата FP32 по умолчанию, пользователь получит ускорение автоматически. Не-тензорные операции будут использовать обычные FP32-блоки, но на выходе в обоих случаях — стандартный IEEE FP32-формат. Режим TF32 в тензорных ядрах Ampere обеспечивает вдвое большую производительность, по сравнению со стандартным режимом FP32.
Также Ampere поддерживает новый формат BF16 — это альтернативный вариант для FP16, включающий 8-битную экспоненту, 7-битную мантиссу и знаковый бит. Оба формата (FP16 и BF16) часто используются при тренировке нейросетей в режиме смешанной точности и полученные результаты совпадают с теми, что получаются при использовании FP32, но использование FP16 и BF16 данных для тензорных вычислений позволяет повысить производительность вчетверо. Чтобы использовать смешанную точность BF16, понадобится поменять несколько строк кода, в отличие от полностью автоматического TF32.
Но это все довольно далекие от игроков вещи, их больше всего волнует, что будет с DLSS, не пострадает ли от всего этого его производительность — специалисты компании утверждают, что нет, так как алгоритм DLSS не слишком требователен к производительности тензорных ядер и отлично работает даже на Turing.
Улучшенная энергоэффективность
Как всегда, главной задачей при проектировании графического процессора является достижение максимальной энергоэффективности. Вся архитектура Ampere делалась именно с упором на это, включая неким образом кастомизированный техпроцесс Samsung, дизайн чипа и печатной платы, оптимизацию ПО и многое другое.
Так, на уровне чипа разделили питание, выделив для графической части и для подсистемы памяти отдельные линии. И в целом, по мнению Nvidia, при определенном уровне производительности игровой чип архитектуры Ampere получился до 1,9x раз более энергоэффективным, по сравнению с аналогичным решением семейства Turing.
Эти измерения проводились в игре Control на системе с Intel Core i9-9900K с использованием видеокарт GeForce RTX 3080 и RTX 2080 Super. Действительно, повышение энергоэффективности показано компанией Nvidia как 1,9 раза, но нужно учитывать, что это хитрый маркетинговый прием, который применяют все. За точку отсчета взята производительность Turing, и Ampere приводится к этому уровню — естественно, потребление нового GPU при более низком напряжении будет заметно ниже. А вот если взять максимальные показатели производительности, то при приросте скорости в 70%-80% (как говорит Nvidia, еще проверим) и рост потребления энергии будет довольно приличный: 320 Вт против 250 Вт — почти на треть. Явно меньше 1,9 раз получается.
Интерфейс PCI Express 4.0 и NVLink 3
При столь большом приросте в производительности новых GPU, было бы удивительно, если бы не ускорились и интерфейсы для их связи друг с другом и с CPU. Все новые графические процессоры семейства Ampere поддерживают интерфейс PCI Express 4.0, который обеспечивает вдвое большую пропускную способность по сравнению с PCIe 3.0, пиковая скорость передачи данных по x16 PCIe 4.0 слоту составляет 64 ГБ/с.
Также графические процессоры GA102 поддерживают интерфейс NVLink третьего поколения, включающий четыре канала x4, каждый из которых обеспечивает пропускную способность более 14 ГБ/с между двумя графическими процессорами в обоих направлениях. В целом, четыре канала дают пропускную способность в 56,25 ГБ/с в каждом направлении (в общем 112,5 ГБ/с) между двумя GPU. Это может использоваться для соединения пары графических процессоров GeForce RTX 3090 в двухчиповую SLI-систему. А вот 3-Way и 4-Way SLI конфигурации не поддерживаются, как и SLI для младших (если их можно так назвать) моделей.
Новый тип памяти GDDR6X
Видеокарты архитектуры Ampere серии GA10x используют новый тип скоростной графической памяти — GDDR6X, разработанный совместно с компанией Micron Technology. Требования современных 3D-приложений и игр постоянно растут, это касается и пропускной способности памяти. Сцены усложняются, объемы геометрии и текстур увеличиваются, все это нужно обрабатывать на GPU, и повышение его производительности обязательно нужно поддерживать ростом ПСП. Не говоря уже о росте разрешения — использование 4K становится обычным делом, а некоторые подумывают и о 8K-разрешении.
Тип памяти GDDR6X предлагает очередной большой скачок по возможностям графической памяти, хотя и весьма схож с привычным типом GDDR6, появившемся в 2018 году, но дополнительно удваивает свою пропускную способность. Чтобы добиться столь высокой скорости, применяется новая технология передачи сигналов и четырехуровневая амплитудно-импульсная модуляция PAM4. Используя многоуровневый метод передачи сигналов, GDDR6X передает больше данных с высокой скоростью, перемещая два бита информации за раз, что удваивает скорость передачи данных по сравнению с предыдущей схемой PAM2/NRZ. Естественно, что это отразится на задачах, производительность которых упирается в ПСП.
Четырехуровневая амплитудно-импульсная модуляция PAM4 — большой скачок, по сравнению с двухуровневой NRZ, применяемой в GDDR6. Вместо передачи двух бит данных за тактовый цикл (один бит на переднем фронте и другой — на заднем фронте тактового сигнала, технология DDR), PAM4 отправляет на каждый фронт тактового сигнала по два бита, закодированные в четырех уровнях напряжения с шагами по 250 мВ. Так и получается, что одинаковый объем данных передается по GDDR6X интерфейсу на вдвое меньшей частоте, по сравнению с GDDR6, то есть GDDR6X удваивает ПСП, по сравнению с предыдущим типом памяти.
Чтобы решить проблемы отношения сигнал/шум (signal-to-noise ratio — SNR), возникающие при передаче сигналов PAM4, применяется новая схема кодирования MTA (Maximum Transition Avoidance) для ограничения переходов высокоскоростных сигналов с самого высокого уровня на самый низкий и наоборот. Также были введены новые интерфейсы обучения, адаптации и схемы выравнивания. Даже конструкция корпуса микросхемы и дизайн печатных плат потребовали анализа целостности сигналов и мощности — для достижения высоких скоростей передачи данных.
Компания Micron экспериментировала с подобными технологиями, не стандартизированными JEDEC, уже более 10 лет. Метод PAM4 использовался в сетевых стандартах для центров обработки данных уже много лет, и подобное кодирование не ново. Но в массовых продуктах оно ранее не применялось из-за более высокой стоимости, которая вполне нормальна для суперкомпьютеров и серверов. Над новым типом памяти работали инженеры, известные по массовым GDDR5, GDDR5X, а теперь и GDDR6X продуктам. Ранее только Micron выпускал GDDR5X-память, и на данный момент он является единственным производителем GDDR6X.
Конкретно над GDDR6X работа началась около трех лет назад, в конце 2017 года. Обычно вывод новых типов памяти на рынок занимает больше времени, но так это был в основном внутренний проект, то внедрение технологий, уже реализованных компанией, произошло несколько быстрее — в том числе благодаря тесному сотрудничеству с Nvidia. Они пришли к Micron с просьбой разработки памяти, более быстрой чем GDDR6. Nvidia пришлось разработать новый контроллер памяти для этого типа памяти, так как PAM4 меняет принцип работы в целом.
Новая технология и чипы памяти не ограничены для применения чисто в устройствах Nvidia и будут доступны желающим, но несколько позже — и тут у Nvidia есть некоторое преимущество по времени. Интересно, что при разработке GDDR6X эти две компании работали в скрытном режиме, не представляли спецификации в JEDEC для стандартизации, и GDDR6X — это запатентованный тип памяти, доступный только у Micron. И пока непонятно, станет ли GDDR6X-память стандартной вообще когда-либо. К слову, Micron запатентовала и PAM8-режим для HBM-памяти.
В итоге при эффективной частоте до 19,5 ГГц на чипах GA10x, новый тип памяти GDDR6X обеспечивает пропускную способность до 936 ГБ/с, что более чем в полтора раза больше пикового значения для GeForce RTX 2080 Ti. Пожалуй, это один из самых больших приростов пропускной способности памяти на нашей памяти, простите за каламбур. Также новая память использует псевдонезависимые каналы памяти, что может увеличить скорость случайного доступа в память. В частности, случайный доступ используется при трассировке лучей, а соответственно и производительность в этой задаче должна повыситься.
Конечно, стоимость производства чипов GDDR6X выше, чем у старой доброй GDDR6, но новый тип точно дешевле всевозможных вариантов HBM, и при этом позволяет достичь более высокой пропускной способности. На данный момент, Micron предлагает 8-гигабитные чипы GDDR6X, работающие на эффективной частоте в 19 и 21 ГГц, но у них есть планы на повышение емкости и производительности. В следующем году Micron планирует выпустить 16-гигабитные чипы, работающие на большей скорости. Но на данный момент они являются единственным производителем, а Nvidia — единственный покупатель, так что развитие GDDR6X зависит пока что исключительно от их сотрудничества.
Технология чтения данных с накопителей RTX IO
Современные игры содержат огромные миры, состоящие из массы уникальных ресурсов: геометрии, материалов и текстур. А с технологиями вроде фотограмметрии, когда сцены в играх строятся на основании тысяч фотографий, миры становятся максимально фотореалистичными и схожими с реальным. Но за все приходится платить, чем больше уникальных ресурсов в игре — тем больше места она занимает на накопителе и в памяти. Уже появилось несколько игр с общим объемом файлов на накопителе порядка 150-200 ГБ, и их количество будет расти. А ведь каких-нибудь 3-5 лет назад средний объем был раза в 3-4 ниже. А скоро выйдут новые консоли, и требуемый мультиплатформенными играми объем может еще вырасти.
Хотя консольные SSD имеют ограниченный объем, но вряд ли нас это спасет — рост объемов данных в играх со временем точно будет. Вместе с ним вырастут и требования к скорости чтения с накопителей, и очень многие игроки уже вкусили плод игр, установленных на быстрые твердотельные SSD-накопители, а не медленные HDD. Пока что это помогает в основном в скорости загрузки игры и уровня, но уже бывает заметно и в игровом процессе в моменты подгрузки ресурсов. Оно и неудивительно, помимо в десятки-сотни раз возросшей линейной скорости чтения, у SSD и задержки заметно ниже.
При традиционной модели хранения данных игры, они хранятся на HDD и читаются с него в системную память при помощи CPU, прежде чем попасть в цепкие лапы графического процессора. Для снижения объема передачи данных частенько используется еще и сжатие данных без потерь — чтобы снизить требования к накопителю и увеличить эффективную скорость чтения с HDD. Но возможности быстрых SSD, способных считывать данные на скорости до 7 ГБ/с, сильно ограничены традиционными подсистемами ввода-вывода, которые являются главным «бутылочным горлышком».
Современные игры не просто загружают больше данных, чем проекты прошлого, они делают это «умнее», и оптимизация загрузки данных стала обязательной для современного поколения игр, чтобы поместить все данные в память. Вместо того, чтобы грузить данные большими кусками за несколько запросов, игра разбивает текстуры и другие ресурсы на мелкие куски и загружает только необходимые в данный момент времени данные. Такой подход позволяет повысить эффективность их использования и повышает качество картинки, но вызывает рост количества запросов к подсистеме ввода-вывода.
По мере роста физической скорости чтения при переходе от медленных HDD к очень быстрым SSD, традиционные методы организации передачи данных и привычные API становятся узким местом. Ведь если для распаковки данных, получаемых с HDD на скорости 50-100 МБ/с достаточно одного-двух ядер CPU, то декомпрессия данных того же формата сжатия с самого быстрого PCIe Gen4 SSD на скорости 7 ГБ/с потребует уже до 24 мощных процессорных ядер AMD Ryzen Threadripper 3960X! Это явно не устроит индустрию в перспективе, поэтому на смену традиционным API для передачи данных нужны какие-то новые методы.
Именно тут и вступает в дело Nvidia RTX IO — набор технологий, обеспечивающих быструю передачи и распаковку ресурсов сразу на GPU, что повышает производительность системы ввода-вывода до сотни раз, по сравнению с привычными HDD и традиционными API. При использовании технологий Nvidia в паре с грядущим Microsoft DirectStorage API, не потребуется мощь десятков ядер CPU, нужна лишь часть ресурсов графического процессора последних поколений.
RTX IO обеспечит очень быструю загрузку ресурсов игры и позволит создавать гораздо более разнообразные и детализированные виртуальные миры. Подгрузка объектов и текстур серьезно улучшится и не будет раздражать, как это происходит в нынешних играх. Также сжатие без потерь позволит уменьшить и объем игр, что очень полезно для недешевых SSD. Вот первые прикидки разницы в скорости загрузки между разными накопителями — скорость с RTX IO вырастает в разы:
RTX IO работает совместно с DirectStorage API, предназначенным специально для игровых ПК с высокопроизводительными NVMe SSD-накопителями. Подобные оптимизированные интерфейсы, разработанные специально для игр, позволяют значительно снизить накладные расходы при передаче данных и увеличить пропускную способность для связки из твердотельных накопителей NVMe и графических процессоров.
RTX IO распаковывает данные при помощи потоковых процессоров GPU, распаковка осуществляется асинхронно — при помощи высокопроизводительных вычислительных кернелов, используя механизмы прямого доступа к памяти архитектур Turing и Ampere, также помогает в процессе улучшенный набор инструкций и новая архитектура мультипроцессоров SM, позволяющая использовать расширенные асинхронные вычислительные возможности. Преимущество такого метода заключается в том, что огромную вычислительную способность GPU можно использовать для загрузки игры или уровня, при этом графический процессор будет выступать в роли высокопроизводительного процессора ввода-вывода, обеспечивая производительность, превышающую возможности даже современных NVMe-накопителей.
Для поддержки RTX IO нет никаких требований к минимальной скорости SSD, но чем быстрее он будет, тем лучше. DirectStorage API будет поддерживаться на определенных системах с NVMe-накопителями, но если ваша система не поддерживает этот API, то игра все равно продолжит работать, только хуже. Так что лучше будет использовать накопители NVMe последнего поколения, это выльется в снижение времени загрузки и более производительный стриминг текстур и геометрии.
Почему нужен именно NVMe-накопитель? Потому что это не просто быстрые SSD, а устройства, имеющие аппаратные каналы доступа к данным в виде очередей NVMe, которые отлично подходят для игровых нагрузок. Устройство NVMe может исполнять сразу несколько очередей, и каждая из них может содержать множество одновременных запросов, что идеально сочетается с пакетным характером параллельных загрузок в современных играх.
Скорее всего, некоторые игры в будущем даже будут иметь минимальные требования к производительности SSD, но это будет определяться разработчиками игр. RTX IO ускорит доступ к любому SSD вне зависимости от его производительности, а уровень сжатия обычно в среднем составляет 2:1, так что применение технологии способно ускорить любой SSD примерно вдвое.
Существующие API требуют, чтобы приложение обрабатывало каждый из запросов по одному, сначала отправляя запрос, а затем ожидая завершения и обрабатывая его. Накладные расходы на запросы не были проблемой для старых игр, работающих на медленных HDD, но увеличение накладных расходов ввода-вывода в сотню раз слишком повышает нагрузку на систему и мешает использовать преимущества накопителей NVMe. DirectStorage API спроектирован, чтобы учитывать это и максимизировать производительность всего конвейера, сокращая накладные расходы на каждый запрос, разрешая параллельные запросы и предоставляя играм полный контроль над завершением исполнения запросов ввода-вывода. Так игровые разработчики получат более эффективный способ обработки большего количества запросов.
Возможности RTX IO развились из технологии прямого доступа к накопителям, что ранее была у Nvidia, просто мало где применялась. У Nvidia уже есть опыт поставки высокоскоростных систем передачи данных для платформ по анализу больших данных при помощи GPUDirect Storage. Этот API обеспечивает высокоскоростную передачу данных от накопителей к GPU специализированно для задач ИИ и высокопроизводительных вычислений. Так что все необходимые технологии у Nvidia давно есть, и поддержка программного API Microsoft — лишь дело техники.
А тут подоспели консоли следующего поколения, в которых будут применяться быстрые SSD, вот Microsoft и подсуетилась с DirectStorage — API для прямого доступа к накопителям от GPU. Но использование RTX IO требует обязательной интеграции в игровой код, а даже предварительная версия API Microsoft для разработчиков ожидается лишь в следующем году. Но есть вариант в виде собственных API у Nvidia — и похоже, что они дадут ранний доступ к подобным возможностям раньше, чем Microsoft.
В любом случае, все решения семейств Turing и Ampere уже сейчас готовы к появлению таких игр. С использованием возможностей DirectStorage, игры следующего поколения смогут воспользоваться всеми преимуществами современных SSD и поддерживающих RTX IO графических процессоров, чтобы сократить время загрузки в разы и дать возможность рендеринга значительно более детализированных виртуальных миров.
Одно маленькое отступление — некоторые энтузиасты проверили и утверждают, что нашумевшая демонстрация Unreal Engine 5 на PlayStation 5 с огромным количеством геометрии и «программным» рендерингом микрополигонов на шейдерах, вполне себе неплохо работает даже на RTX 2080 с 8 ГБ видеопамяти даже без всякого RTX IO. Также интересно, что по оценкам экспертов, условно «программный» рендеринг микрополигонов, который применяется для части геометрии в той демке UE5, лишь раза в полтора быстрее растеризации. Что, впрочем, тоже немало, особенно в условиях консольных мощностей.
Улучшения видеодвижка и портов вывода
Разработки в области мониторов и телевизоров в последние годы опережают возможности стандартов, дисплеи уже давно умеют выводить разрешение 4K и даже 8K, но устаревшие стандарты вроде HDMI 2.0 не позволяли использовать соединение по одному кабелю, будучи ограниченными разрешением 4K с HDR при 98 Гц частоте обновления. Если же вам хотелось или более высокого разрешения или частоты обновления, то нужно было или поступиться качеством изображения, выбрав менее качественный пиксельный формат, или использовать несколько кабелей.
Так как пользователи стараются использовать все более высокие разрешения и дисплеи с высокой частотой обновления информации, графические процессоры Nvidia стараются поддерживать все современные стандарты. Игроки и энтузиасты 3D-графики с появлением новых видеокарт Ampere смогут играть на дисплеях 4K с частотой 120 Гц и дисплеях 8K с частотой 60 Гц — в последнем случае необходимо обсчитать вчетверо больше пикселей, чем для 4K.
Дисплейный движок архитектуры Ampere разработан для поддержки новых технологий, включая самые продвинутые интерфейсы отображения данных, в том числе DisplayPort 1.4a, обеспечивающий пропускную способность 32,4 Гбит/с и вывод 8K-разрешения при 60 Гц с технологией сжатия без значительных визуальных потерь VESA Display Stream Compression (DSC) 1.2a. К видеокартам GeForce RTX 30 можно подключить два дисплея с 8K-разрешением и частотой 60 Гц — требуется лишь один кабель на каждый дисплей. Также поддерживается 4K-разрешение с частотой обновления до 240 Гц. К сожалению, для поддержки стандарта DisplayPort 2.0 еще очень рано, первые такие устройства ожидаются скорее в следующем году.
Еще более важной стала долгожданная поддержка стандарта HDMI 2.1 (также с DSC 1.2a). Решения архитектуры Ampere стали первыми дискретными GPU с поддержкой HDMI 2.1 — новейшим обновлением этой спецификации. HDMI 2.1 улучшила максимальную пропускную способность до 48 Гбит/с (четыре линии по 12 Гбит/с), что позволило добавить поддержку таких режимов высокого разрешения и частоты обновления, как 8K-разрешение при 60 Гц и 4K при 120 Гц — оба варианта также с поддержкой HDR. Правда, для вывода в 8K с HDR потребуется использование сжатия DSC 1.2a или пиксельный формат 4:2:0 — на выбор.
Не обошлось и без улучшений в движке декодирования видеоданных — Hardware-Accelerated Video Decoding (NVDEC). Новые решения Nvidia содержат уже пятое поколение декодера видеоданных NVDEC, который обеспечивает полностью аппаратное декодирование множества популярных форматов. При его использовании CPU и GPU полностью свободны для других задач и он обеспечивает декодирование намного быстрее, чем реальное время, что полезно при перекодировании роликов. Поддерживается декодирование и кодирование следующих форматов:
По кодированию видео никаких изменений нет, а по декодированию есть важное нововведение. Как видите, видеодвижком пятого поколения в GA10x поддерживается аппаратное декодирование при 8-10-12-битной глубине цвета в разрешениях до 8K для всех актуальных форматов: H.264, H.265, VP8, VP9, VC-1, MPEG-2, и появился AV1. Доступ к декодеру осуществляется при помощи NVDECODE API, который дает разработчикам ПО возможность сконфигурировать декодер. Поддерживаются режимы YUV 4:2:0 и 4:4:4 с 8/10/12-битной глубиной для H.265, 8-битный 4:2:0 режим для H.264, и 4:2:0 режим для 8/10/12-битной глубины цвета для VP9.
Главное изменение тут по сравнению с Turing — поддержка аппаратного декодирования формата AV1 (AOMedia Video 1). Это открытый и не требующий лицензионных отчислений формат кодирования видеоданных, разработанный альянсом Alliance for Open Media (AOM), и предназначен он в основном для передачи потокового видео по сети. Графические процессоры серии GA10x — первые GPU, обеспечивающие поддержку аппаратного декодирования формата AV1, который дает лучшее сжатие и качество по сравнению с такими кодеками, как H.264, H.265 и VP9, поэтому поддерживается популярными сервисами и браузерами. Поддерживается декодирование AV1 Profile 0 — монохром/4:2:0 при 8/10-битном цвете, вплоть до уровня 6.0, а максимальное поддерживаемое разрешение равно 8192×8192 пикселей.
Формат AV1 обеспечивает экономию битрейта примерно на 50% по сравнению с H.264 и позволяет наслаждаться 4K-разрешением тем пользователям, чья скорость соединения серьезно ограничена. Но его декодирование требует значительных вычислительных ресурсов, и существующие программные декодеры вызывают высокую загрузку CPU, что затрудняет воспроизведение видео в высоком разрешении. По тестам Nvidia, процессор Intel Core i9-9900K не справлялся с HDR-видеороликом в разрешении 8K при 60 FPS с YouTube, загрузка CPU при этом превышала 85% и в среднем воспроизводилось лишь 28 кадров в секунду. А все графические процессоры GA10x могут воспроизводить видео в этом формате полностью на блоке NVDEC, который с легкостью справляется с воспроизведением до HDR-контента в 8K при 60 FPS с загрузкой CPU лишь на 4%.
Но что с программной поддержкой? Компания Microsoft добавляет возможности аппаратного ускорения в AV1 Video Extension, чтобы пользователи Windows 10 могли использовать этот формат, компания Google обновила Chrome для поддержки аппаратного декодирования AV1 и делает все больше соответствующего контента доступным на YouTube, VideoLAN имеет соответствующую поддержку в плеере VLC, который умеет декодировать контент AV1 при помощи GeForce RTX 30 Series. Также компания Nvidia работает вместе с Twitch над новым поколением потоковой передачи игр, и AV1 позволит смотреть потоки со скоростью до 1440p при 120 кадрах в секунду при битрейте 8 Мбит/с, доступном даже в мобильных сетях пятого поколения.
Кто-то спросит: «А где же поддержка еще более современного стандарта H.266/VVC?» Дело во времени, этот стандарт еще очень молод и был стандартизирован лишь несколько недель назад. А тот же формат AV1 был стандартизирован уже более двух лет назад, и на этом примере можно прикинуть, сколько времени занимает переход из теоретического стандарта в аппаратное исполнение в готовом продукте.
Ну а по кодированию видео отметим лишь то, что в состав чипов GA10x входит кодер NVENC седьмого поколения, который появился в решениях архитектуры Turing. С типичными настройками стримов в Twitch и YouTube, кодирование видео на NVENC блоке GA10x превосходит качество программных x264-кодеров с пресетом Fast и примерно наравне с x264 Medium, который обычно требует использования пары систем. Кодирование в 4K-разрешении вообще слишком тяжело для программных методов при типичных CPU, но аппаратный кодер GA10x легко справляется и с H.264 в 4K-разрешении и даже с H.265 в 8K!
Программная поддержка
Как известно, любое улучшение аппаратных средств ПК бесполезно без программной поддержки. И тут у Nvidia все традиционно очень неплохо. Трассировка лучей применяется в играх все более массово, хотя игрокам всегда хочется большего. Но Nvidia и так работает с игровыми разработчиками постоянно, над улучшением производительности и внедрению поддержки новых технологий, вроде трассировки лучей и метода повышения производительности DLSS.
Во время анонса новой линейки GeForce RTX 30 не обошлось без горячих объявлений о поддержке разных технологий компании популярными играми. В частности, одним из самых мощных анонсов стало объявление о поддержке трассировки лучей и технологий DLSS и Reflex в самой популярной игре жанра «Королевская битва» — Fortnite. В игре при помощи трассировки будут обсчитываться отражения, тени, глобальное освещение и затенение.
Также был выпущен новый трейлер в 4K-разрешении к самой ожидаемой игре года — Cyberpunk 2077. Известно, что игра будет поддерживать несколько эффектов с применением трассировки лучей, а также технологию DLSS. Показали и эффекты с трассировкой лучей в игре популярнейшей серии Call of Duty: Black Ops Cold War — в их число входят отражения, тени и GI с AO. В ней также поддерживаются технологии DLSS, Reflex, Ansel и Highlights. Появилась информация о добавлении в Watch Dogs: Legion технологии DLSS в дополнение к трассировке лучей.
Такие киберспортивные проекты, как Apex Legends и Valorant получили поддержку технологии Reflex которая снижает задержки вывода и делает игровой процесс более отзывчивым. Поддержка технологии Reflex появится и в проектах Cuisine Royale, Destiny 2, Enlisted, Kovaak 2.0 и MORDHAU. А DLSS — в Boundary и Bright Memory Infinite. Был обновлен и Minecraft RTX Beta вместе с добавлением новых миров с трассировкой лучей.
Ну а китайские производители игр скоро завалят рынок играми с трассировкой лучей, создается такое впечатление! Не знаем, как насчет всех игр, а две первые уже участвуют в нашем обзоре в качестве бенчмарков, так что вы можете ознакомиться с ними. Также очень интересной кажется обновленная версия мини-игры с продвинутой трассировкой лучей и технологией DLSS самой Nvidia — Marbles at Night RTX.
Эта демо-программа разрабатывалось при помощи Nvidia Omniverse и она содержит сотни динамических источников света, более 100 миллионов полигонов для моделей, но все это работает на одной GeForce RTX 3090 в разрешении 1440p! Если старая версия Marbles, показанная в мае, обеспечивала на лучших моделях Turing лишь 25 FPS в разрешении 1280×720 пикселей без эффекта имитации глубины резкости и всего лишь с парой источников света, то новая версия на топовом Ampere работает в 2560×1440 с DOF и 130 площадными источниками света, показывая 30 FPS.
Как вы можете убедиться, новая версия технологической демонстрации в виде мини-игры Marbles выглядит просто отлично, и наглядно показывает преимущества трассировки лучей. Уверены, что обладатели видеокарт семейств Turing и Ampere хотели бы заполучить ее в свои руки, и Nvidia действительно работает над этим, но каких-то сроков еще нет. Возможно, ее отправят в публичный доступ еще в этом году, но это не точно.
Не могли мы пройти мимо технологии RTX Global Illumination (RTXGI), которая раскрывает некоторые возможности трассировки лучей для игровых разработчиков. Им предлагается готовый SDK, обеспечивающий масштабируемое решения для расчета непрямого освещения с множественными отражениями без необходимости предварительных расчетов и артефактов. RTXGI использует трассировку лучей, поддерживается на всех графических процессорах с поддержкой DXR и относительно простым методом для добавления преимуществ трассировки лучей в существующие проекты сравнительно малой кровью.
Если раньше получить качественное глобальное освещение можно было только при предварительном его просчете или поступиться качеством, используя неидеальные методы, работающие в реальном времени, то трассировка лучей позволит добавить GI на системы с поддержкой DXR, включая GeForce GTX 10. Естественно, на слабых GPU нужно будет упрощать обработку, но они совместимы и будут работать.
Важно, что решение Nvidia уже оптимизировано и настроено для получения отличных результатов по качеству и производительности. Для игроков применение RTXGI дает качественные эффекты глобального освещения: непрямое освещение с бесконечным количеством отражений, перетекание цвета, непрямое эмиссионное освещение и мягкие тени, непрямое освещение в отражениях. В общем, это динамический GI с минимально возможным влиянием на производительность, которое качественнее и быстрее, чем полностью программные методы вроде SVOGI, который применяется в ремастере Crysis Remastered.
Производительность RTXGI не зависит от разрешения экрана, для достижения лучших результатов требуется от 250 до 400 тысяч выборок на кадр. Но не пугайтесь страшных цифр, GeForce RTX 3080 генерирует 400 тысяч выборок за 0,5 мс, а RTX 2080S — за 1 мс. Количество отсчетов определяет задержку обновления глобального освещения, но полностью расчет всегда занимает меньше 2 мс времени кадра, что совсем немного. Даже на GeForce GTX 1080 Ti такой метод расчета GI вполне применим.
Плюсы RTXGI для разработчиков: это масштабируемое решение для непрямого освещения со слабым влиянием на производительность, высокое качество трассировки без необходимости шумоподавления, ускоренное создание контента без трудоемкого процесса предварительных расчетов, мгновенное обновление освещения и многое другое. Расчет GI полностью динамический и без артефактов, присущих другим методам, вроде irradiance probes.
О программном обеспечении можно говорить много, мы не затронули массу новых возможностей, технологий, программных пакетов и т. д. Например, сегодня мы ничего не рассказали про Nvidia Studio, а ведь новое поколение GPU приносит в профессиональную сферу много всего интересного. То же самое и про улучшения, связанные с киберспортом — Nvidia активно развивает эту нишу, предлагая технологии для снижения задержек и ПО для стриминга. Постараемся рассказать обо всем этом в наших следующих обзорах видеокарт линейки GeForce RTX 30.
Ну а про особенности используемой нами в тестах видеокарты мы расскажем в Части 2, а сейчас настало время для результатов синтетических тестов.
Тестирование: синтетические тесты
Конфигурация тестового стенда
- Компьютер на базе процессора Intel Core i9-9900K (Socket LGA1151v2):
- Компьютер на базе процессора Intel Core i9-9900KS (Socket LGA1151v2):
- процессор Intel Core i9-9900KS (разгон 5,1 ГГц по всем ядрам);
- ЖСО Cougar Helor 240;
- системная плата Gigabyte Z390 Aorus Xtreme на чипсете Intel Z390;
- оперативная память Corsair UDIMM (CMT32GX4M4C3200C14) 32 ГБ (4×8) DDR4 (XMP 3200 МГц) ;
- SSD Intel 760p NVMe 1 ТБ PCI-E;
- жесткий диск Seagate Barracuda 7200.14 3 ТБ SATA3;
- блок питания Seasonic Prime 1300 W Platinum (1300 Вт);
- корпус Thermaltake Level20 XT;
- операционная система Windows 10 Pro 64-битная; DirectX 12 (v.2004);
- телевизор LG 43UK6750 (43″ 4K HDR);
- драйверы AMD версии 20.8.3;
- драйверы Nvidia версии 452.06/456.16;
- VSync отключен.
- Компьютер на базе процессора Intel Core i9-9900KS (Socket LGA1151v2):
Мы провели тестирование видеокарты GeForce RTX 3080 со стандартными частотами в нашем наборе синтетических тестов. Он продолжает постоянно меняться, добавляются новые тесты, а некоторые устаревшие постепенно убираются. Мы бы хотели добавить еще больше примеров с вычислениями, но с этим есть определенные сложности. Постараемся расширить и улучшить набор синтетических тестов, и если у вас есть четкие и обоснованные предложения — напишите их в комментариях к статье или отправьте авторам.
Из ранее активно использовавшихся нами тестов RightMark3D мы оставили лишь несколько самых тяжелых вариантов. Остальные уже изрядно устарели и на столь мощных GPU упираются в различные ограничители, не загружают работой блоки графического процессора и не показывают истинную его производительность. А вот синтетические Feature-тесты из набора 3DMark Vantage мы пока что решили оставить в полном составе, так как заменить их попросту нечем, хотя и они уже сильно устарели.
Из более-менее новых бенчмарков мы начали использовать несколько примеров, входящих в DirectX SDK и пакет SDK компании AMD (скомпилированные примеры применения D3D11 и D3D12), а также несколько разнообразных тестов для измерения производительности трассировки лучей, программной и аппаратной. В качестве полусинтетического теста у нас также используется и довольно популярный 3DMark Time Spy.
Синтетические тесты проводились на следующих видеокартах:
- GeForce RTX 3080 со стандартными параметрами (RTX 3080)
- GeForce RTX 2080 Ti со стандартными параметрами (RTX 2080 Ti)
- GeForce RTX 2080 Super со стандартными параметрами (RTX 2080 Super)
- GeForce RTX 2080 со стандартными параметрами (RTX 2080)
- Radeon VII со стандартными параметрами (Radeon VII)
- Radeon RX 5700 XT со стандартными параметрами (RX 5700 XT)
Для анализа производительности новой видеокарты GeForce RTX 3080 мы выбрали несколько видеокарт прошлого поколения компании Nvidia. Для сравнения с аналогичными по позиционированию решениями взяли RTX 2080 и Super-вариант, а более производительной видеокартой, которую также было бы желательно превзойти, стала GeForce RTX 2080 Ti — самое дорогое решение предыдущего семейства Turing, если не брать дорогущий Titan RTX. Такое сравнение даст нам полную картину того, как изменилась производительность архитектуры Ampere.
А вот у условно конкурирующей компании AMD соперников для GeForce RTX 3080 в нашем сегодняшнем сравнении подобрать не получится, так как их просто нет. Ждем конца октября, когда новые Radeon будут объявлены, а пока что остается использовать пару видеокарт: Radeon VII в качестве самого быстрого решения, хоть уже и давно исчезнувшего из продажи, а также Radeon RX 5700 XT — как наиболее производительный графический процессор архитектуры RDNA.
Тесты Direct3D 10
Мы сильно сократили состав DirectX 10-тестов из RightMark3D, оставив только несколько примеров с наибольшей нагрузкой на GPU, да и то они все устарели. Первая пара тестов измеряет производительность выполнения относительно простых пиксельных шейдеров с циклами при большом количестве текстурных выборок (до нескольких сотен выборок на пиксель) и сравнительно небольшой загрузке ALU. Иными словами, в них измеряется скорость текстурных выборок и эффективность ветвлений в пиксельном шейдере. Оба примера включают самозатенение и шейдерный суперсэмплинг, увеличивающий нагрузку на видеочипы.
Первый тест пиксельных шейдеров — Fur. При максимальных настройках в нем используется от 160 до 320 текстурных выборок из карты высот и несколько выборок из основной текстуры. Производительность в данном тесте зависит от количества и эффективности блоков TMU, на результат влияет также и эффективность выполнения сложных программ.
В задачах процедурной визуализации меха с большим количеством текстурных выборок, решения компании AMD выглядят отлично со времен выхода первых графических процессоров архитектуры GCN, а RDNA стала даже еще лучше выполнять подобные программы, что видно по сравнению Radeon VII и RX 5700 XT.
Рассматриваемая сегодня видеокарта GeForce RTX 3080 выступила очень неплохо, с учетом устаревшего теста. Конечно, сравнивать с Radeon некорректно, но именно новинка стала лидером, опередив остальные решения. Новая видеокарта прилично опередила RTX 2080 Ti из предыдущего поколения, а от своей предшественницы RTX 2080 оторвалась почти на 60% — для старого синтетического теста это очень неплохо, особенно учитывая то, что текстурная производительность в Ampere выросла не так сильно, как математическая.
Следующий DX10-тест Steep Parallax Mapping также измеряет производительность исполнения сложных пиксельных шейдеров с циклами при большом количестве текстурных выборок. При максимальных настройках он использует от 80 до 400 текстурных выборок из карты высот и несколько выборок из базовых текстур. Этот шейдерный тест Direct3D 10 несколько интереснее с практической точки зрения, так как разновидности parallax mapping широко применяются в играх, в том числе и такие варианты как steep parallax mapping. Кроме того, в нашем тесте мы включили самозатенение, увеличивающее нагрузку на видеочип в два раза, и суперсэмплинг, также повышающий требования к мощности GPU.
Диаграмма схожа с предыдущей, но все видеокарты GeForce в этот раз выглядят получше, и это помогло им опередить Radeon, пусть RX 5700 XT и дешевле, а VII вообще не производится. Новая RTX 3080 показала себя даже еще лучше, опередив RTX 2080 уже на 64%, да и от RTX 2080 Ti отрыв увеличился. Но графический процессор Navi 10 работает в этом тесте явно очень эффективно, так что от грядущих RDNA2 можно ожидать сильных результатов. А пока что рассматриваемая сегодня GeForce RTX 3080 показала себя явным лидером в этом тесте.
Из пары тестов пиксельных шейдеров с минимальным количеством текстурных выборок и относительно большим количеством арифметических операций, мы выбрали более сложный, так как они уже порядком устарели и уже не измеряют чисто математическую производительность GPU. Да и за последние годы скорость выполнения именно арифметических инструкций в пиксельном шейдере не так важна, большинство вычислений перешли в compute shaders. Итак, тест шейдерных вычислений Fire — текстурная выборка в нем лишь одна, а количество инструкций типа sin и cos равно 130 штукам. Впрочем, для современных GPU это семечки.
В математическом тесте из нашего RightMark мы часто получаем результаты, довольно далекие от теории и сравнений в других аналогичных бенчмарках. Вероятно, столь мощные платы ограничивает нечто, не относящееся к скорости вычислительных блоков, так как GPU при тестировании чаще всего не загружены работой на 100%. Вот и в этот раз в чисто математическом тесте новая RTX 3080 опередила свою предшественницу RTX 2080 лишь на 50%, что явно говорит об упоре во что-то другое, а не ALU.
В целом GeForce RTX 3080 пусть и опередила обе Radeon, что неудивительно при сложности GPU и их цене, но мы то знаем, что пиковая математическая производительность у решений Nvidia обычно пониже в таких тестах, поэтому новинке будет непросто сражаться с будущими решениями AMD поздней осенью. Но на данный момент времени RTX 3080 стала победителем и тут.
Переходим к тесту геометрических шейдеров. В составе пакета RightMark3D 2.0 есть два теста скорости геометрических шейдеров, но один из них (Hyperlight, демонстрирующий использование техник: instancing, stream output, buffer load, использующий динамическое создание геометрии и stream output), на всех видеокартах компании AMD не работает, поэтому мы оставили лишь второй — Galaxy. Техника в этом тесте аналогична point sprites из предыдущих версий Direct3D. В нем анимируется система частиц на GPU, геометрический шейдер из каждой точки создает четыре вершины, образующие частицу. Вычисления производятся в геометрическом шейдере.
Соотношение скоростей при разной геометрической сложности сцен примерно одинаково для всех решений, производительность соответствует количеству точек. Задача для мощных современных GPU слишком простая, и разницы между моделями видеокарт Nvidia практически нет, так что особого смысла в анализе этих результатов мы не видим.
Но, конечно, разница между видеокартами на чипах Nvidia и AMD налицо — это обусловлено отличиями в геометрических конвейерах GPU этих компаний. В тестах геометрии платы GeForce обычно конкурентоспособнее Radeon, и хотя RX 5700 XT к ним подтянулось, все GeForce остались впереди. Новая модель GeForce RTX 3080 показала результат на уровне старшей видеокарты из предыдущего поколения или чуть лучше.
Тесты из 3DMark Vantage
Мы традиционно рассматриваем также и синтетические тесты из пакета 3DMark Vantage, ведь они иногда показывают нам то, что мы упустили в тестах собственного производства. Feature тесты из этого тестового пакета также обладают поддержкой DirectX 10, они до сих пор более-менее актуальны и при анализе результатов новых видеокарт мы всегда делаем какие-то полезные выводы, ускользнувшие от нас в тестах пакета RightMark 2.0.
Feature Test 1: Texture Fill
Первый тест измеряет производительность блоков текстурных выборок. Используется заполнение прямоугольника значениями, считываемыми из маленькой текстуры с использованием многочисленных текстурных координат, которые изменяются каждый кадр.
Эффективность работы видеокарт AMD и Nvidia в текстурном тесте компании Futuremark довольно высока, и тест показывает результаты, близкие к соответствующим теоретическим параметрам, хотя иногда они все же получаются несколько заниженными для некоторых из GPU. Так как у GA102 в исполнении RTX 3080 количество текстурных модулей выросло не так сильно, то сегодняшняя новинка показала результат не вдвое выше, как могло показаться по теоретической части. Впрочем, прибавка почти в половину скорости к RTX 2080 тоже неплоха.
Сравнивать с условными конкурентами из стана AMD смысла нет, но отметим высокую скорость текстурирования у Radeon VII — вот что может дать большое количество текстурных блоков. Посмотрим, что с ними сделают в RDNA2, но обычно Radeon имеют большее количество блоков TMU и с этой задачей справляются несколько лучше видеокарт конкурента того же ценового позиционирования.
Feature Test 2: Color Fill
Вторая задача — тест скорости заполнения. В нем используется очень простой пиксельный шейдер, не ограничивающий производительность. Интерполированное значение цвета записывается во внеэкранный буфер (render target) с использованием альфа-блендинга. Используется 16-битный внеэкранный буфер формата FP16, наиболее часто используемый в играх, применяющих HDR-рендеринг, поэтому такой тест является вполне современным.
Цифры из второго подтеста 3DMark Vantage должны показывать производительность блоков ROP, без учета величины пропускной способности видеопамяти, и тест обычно измеряет именно производительность подсистемы ROP. Radeon RX 5700 имеет отличные теоретические показатели, подтверждающиеся этой задачей.
Конкурирующие видеокарты компании Nvidia по скорости заполнения сцены почти всегда не так хороши, и хотя GeForce RTX 3080 в этом тесте оказалась явно быстрее своей предшественницы, но разница не достигла даже полуторакратной. Что, впрочем, объяснимо теорией. Новому чипу Ampere нужны другие нагрузки, чтобы показать свою силу. А скорость заполнения у новинки достаточна для реальных применений, ту же RTX 2080 Ti она обошла с большим запасом.
Feature Test 3: Parallax Occlusion Mapping
Один из самых интересных feature-тестов, так как подобная техника давно используется в играх. В нем рисуется один четырехугольник (точнее, два треугольника) с применением специальной техники Parallax Occlusion Mapping, имитирующей сложную геометрию. Используются довольно ресурсоемкие операции по трассировке лучей и карта глубины большого разрешения. Также эта поверхность затеняется при помощи тяжелого алгоритма Strauss. Это тест очень сложного и тяжелого для видеочипа пиксельного шейдера, содержащего многочисленные текстурные выборки при трассировке лучей, динамические ветвления и сложные расчеты освещения по Strauss.
Результаты этого теста из пакета 3DMark Vantage не зависят исключительно от скорости математических вычислений, эффективности исполнения ветвлений или скорости текстурных выборок, а от нескольких параметров одновременно. Для достижения высокой скорости в этой задаче важен правильный баланс GPU, а также эффективность выполнения сложных шейдеров. Это довольно важный тест, так как результаты в нем всегда неплохо коррелируют с тем, что получается в игровых тестах.
Тут важны и математическая и текстурная производительность, и в этой «синтетике» из 3DMark Vantage новая модель видеокарты GeForce RTX 3080 показала вполне ожидаемый результат более чем в полтора раза быстрее своего аналога из предыдущего поколения. Правда, преимущество в 51% оказалось ниже теоретической разницы. Впрочем, результат неплохой, особенно учитывая то, что графические процессоры AMD в этом тесте всегда были сильны. Вполне вероятно, что схожую картину мы увидим в играх без применения трассировки лучей, когда разница между Turing и Ampere будет не двукратной, а несколько меньше.
Feature Test 4: GPU Cloth
Четвертый тест интересен тем, что рассчитывает физические взаимодействия (имитация ткани) при помощи видеочипа. Используется вершинная симуляция, при помощи комбинированной работы вершинного и геометрического шейдеров, с несколькими проходами. Используется stream out для переноса вершин из одного прохода симуляции к другому. Таким образом, тестируется производительность исполнения вершинных и геометрических шейдеров и скорость stream out.
Скорость рендеринга в этом тесте должна зависеть сразу от нескольких параметров, и основными факторами влияния должны являться производительность обработки геометрии и эффективность выполнения геометрических шейдеров. Сильные стороны чипов Nvidia должны были проявиться, но мы в который раз получаем явно некорректные результаты в этом тесте. Смотреть на результаты видеокарт всех GeForce просто нет смысла, они попросту неверны. И модель RTX 3080 ничего не изменила.
Feature Test 5: GPU Particles
Тест физической симуляции эффектов на базе систем частиц, рассчитываемых при помощи графического процессора. Используется вершинная симуляция, где каждая вершина представляет одиночную частицу. Stream out используется с той же целью, что и в предыдущем тесте. Рассчитывается несколько сотен тысяч частиц, все анимируются отдельно, также рассчитываются их столкновения с картой высот. Частицы отрисовываются при помощи геометрического шейдера, который из каждой точки создает четыре вершины, образующие частицу. Больше всего загружает шейдерные блоки вершинными расчетами, также тестируется stream out.
И во втором геометрическом тесте из 3DMark Vantage мы видим далекие от теории результаты, но они чуть ближе к истине, чем в прошлом подтесте этого же бенчмарка. Представленные видеокарты Nvidia явно необъяснимо медленны, поэтому лидером стал Radeon RX 5700 XT. Хотя первая модель на основе архитектуры Ampere тоже оказалась довольно производительной и более чем на 40% опередила RTX 2080.
Feature Test 6: Perlin Noise
Последний feature-тест пакета Vantage является математически-интенсивным тестом GPU, он рассчитывает несколько октав алгоритма Perlin noise в пиксельном шейдере. Каждый цветовой канал использует собственную функцию шума для большей нагрузки на видеочип. Perlin noise — это стандартный алгоритм, часто применяемый в процедурном текстурировании, он использует много математических вычислений.
В этом математическом тесте производительность решений хоть и не совсем соответствует теории, но она обычно ближе к пиковой производительности видеочипов в предельных задачах. В тесте используются операции с плавающей запятой, и новая архитектура Ampere должна бы раскрыть свои уникальные возможности, показав результат заметно выше предыдущего поколения, но увы — видимо, тест слишком устарел и не показывает современные GPU с лучшей стороны.
Новое решение компании Nvidia на основе архитектуры Ampere справляется с задачей неплохо, но лишь в полтора раза быстрее RTX 2080, хотя по теории разница должна бы быть ближе к трехкратной. Этого хватило, чтобы обойти GeForce RTX 2080 Ti и Radeon VII, но будет ли достаточно для ожидаемой борьбы с Big Navi? Рассмотрим более современные тесты, использующие повышенную нагрузку на GPU.
Тесты Direct3D 11
Переходим к Direct3D11-тестам из пакета разработчиков SDK Radeon. Первым на очереди будет тест под названием FluidCS11, в котором моделируется физика жидкостей, для чего рассчитывается поведение множества частиц в двухмерном пространстве. Для симуляции жидкостей в этом примере используется гидродинамика сглаженных частиц. Число частиц в тесте устанавливаем максимально возможное — 64 000 штук.
В первом же Direct3D11-тесте мы получили ожидаемый результат — GeForce RTX 3080 обошла все остальные видеокарты, хотя преимущество над RTX 2080 оказалось меньше 50%. По опыту предыдущих тестов мы знаем, что GeForce в этом тесте выступают не очень хорошо, и поэтому ожидаемые новинки AMD могут выиграть соперничество в этом тесте. Впрочем, судя по крайне высокой частоте кадров, вычисления в этом примере из SDK слишком просты для мощных видеокарт.
Второй D3D11-тест называется InstancingFX11, в этом примере из SDK используются DrawIndexedInstanced-вызовы для отрисовки множества одинаковых моделей объектов в кадре, а их разнообразие достигается при помощи использования текстурных массивов с различными текстурами для деревьев и травы. Для увеличения нагрузки на GPU мы использовали максимальные настройки: число деревьев и плотность травы.
Производительность рендеринга в этом тесте больше всего зависит от оптимизации драйвера и командного процессора GPU. С этим дела лучше всего обстоят у решений Nvidia, хотя видеокарта модели Radeon RX 5700 XT улучшила позиции конкурирующей компании. Если же рассматривать RTX 3080 в сравнении с решениями предыдущего поколения Turing, то разница между аналогичными по позиционированию моделями снова чуть менее 50%. Но и RTX 2080 Ti тоже позади.
Ну и третий D3D11-пример — VarianceShadows11. В этом тесте из SDK AMD используются теневые карты (shadow maps) с тремя каскадами (уровнями детализации). Динамические каскадные карты теней сейчас широко применяются в играх с растеризацией, поэтому тест довольно любопытный. При тестировании мы использовали настройки по умолчанию.
Производительность в этом примере из SDK зависит как от скорости блоков растеризации, так и от пропускной способности памяти. Новая видеокарта GeForce RTX 3080 показала очень хороший результат, наконец-то обогнав RTX 2080 на ожидаемые почти 80%. Единственная Radeon тут слишком далеко от всех GeForce, поэтому с ней не сравниваем. Впрочем, частота кадров тут снова слишком высокая в любом случае и эта задача слишком простая, особенно для топовых GPU.
Тесты Direct3D 12
Переходим к примерам из DirectX SDK компании Microsoft — все они используют последнюю версию графического API — Direct3D12. Первым тестом стал Dynamic Indexing (D3D12DynamicIndexing), использующий новые функции шейдерной модели Shader Model 5.1. В частности — динамическое индексирование и неограниченные массивы (unbounded arrays) для отрисовки одной модели объекта несколько раз, при этом материал объекта выбирается динамически по индексу.
Этот пример активно использует целочисленные операции для индексации, поэтому особенно интересен нам для тестирования графических процессоров семейства Turing. Для увеличения нагрузки на GPU мы модифицировали пример, увеличив число моделей в кадре относительно оригинальных настроек в 100 раз.
Общая производительность рендеринга в этом тесте зависит от видеодрайвера, командного процессора и эффективности работы мультипроцессоров GPU в целочисленных вычислениях. Все решения Nvidia отлично справились с такими операциями, хотя новая GeForce RTX 3080 показала результат ровно как RTX 2080 Ti, что немного странно. Единственная Radeon VII выступила заметно хуже всех GeForce — вероятнее всего, дело в недостатке программной оптимизации.
Очередной пример из Direct3D12 SDK — Execute Indirect Sample, он создает большое количество вызовов отрисовки при помощи ExecuteIndirect API, с возможностью модификации параметров отрисовки в вычислительном шейдере. В тесте используется два режима. В первом на GPU выполняется вычислительный шейдер для определения видимых треугольников, после чего вызовы отрисовки видимых треугольников записываются в UAV-буфер, откуда запускаются посредством ExecuteIndirect-команд, таким образом на отрисовку отправляются только видимые треугольники. Второй режим отрисовывает все треугольники подряд без отбрасывания невидимых. Для увеличения нагрузки на GPU число объектов в кадре увеличено с 1024 до 1 048 576 штук.
В этом тесте видеокарты Nvidia доминируют всегда. Производительность в нем зависит от драйвера, командного процессора и мультипроцессоров GPU. Наш предыдущий опыт говорит также о влиянии программной оптимизации драйвера на результаты теста, и в этом смысле видеокартам AMD похвастать нечем, хотя подождем новых решений архитектуры RDNA2. Рассматриваемая сегодня GeForce RTX 3080 справилась с задачей несколько быстрее своих предшественниц.
Последний пример с поддержкой D3D12 — уже известный нам тест nBody Gravity, но в измененном варианте. В этом примере из SDK показана расчетная задача гравитации N-тел (N-body) — симуляция динамической системы частиц, на которую воздействуют такие физические силы, как гравитация. Для увеличения нагрузки на GPU число N-тел в кадре было увеличено с 10 000 до 64 000.
По количеству кадров в секунду видно, что эта вычислительная задача довольно сложна. Сегодняшняя новинка GeForce RTX 3080, основанная на урезанной версии графического процессора GA102, в этот раз показала очень сильный результат, почти вдвое превосходящий уровень производительности, показанный RTX 2080. Похоже, в этой сложной математической задаче и удвоенный темп FP32-вычислений сработал, и улучшения в подсистеме кэширования. Единственная Radeon новинке не соперник.
В качестве дополнительного вычислительного теста с поддержкой Direct3D12 мы взяли известный бенчмарк Time Spy из 3DMark. В нем нам интересно не только общее сравнение GPU по мощности, но и разница в производительности с включенной и отключенной возможностью асинхронных вычислений, появившихся в DirectX 12. Так мы поймем, изменилось ли что-то в поддержке async compute в Ampere. Для верности мы протестировали видеокарты в двух графических тестах.
Если рассматривать производительность новой модели GeForce RTX 3080 в этой задаче по сравнению с RTX 2080, то новинка быстрее модели прошлого поколения на 60%-70%. Преимущество над RTX 2080 Ti также весьма существенное. Обе видеокарты Radeon тут явно отстают от всех GeForce, но это и неудивительно — одна из них очень старая, а другая — более дешевая.
Что касается асинхронного исполнения, то в данном конкретном тесте Ampere и Turing получают примерно одинаковое ускорение при его включении — существенной разницы не видно. Но так как результаты в Time Spy неплохо коррелируют с показателями и в играх, то будет интересно посмотреть на новинку в реальных условиях.
Тесты трассировки лучей
Специализированных тестов трассировки лучей пока что выпущено не так уж много. Одним из таких тестов производительности трассировки лучей стал бенчмарк Port Royal создателей известных тестов серии 3DMark. Полноценный бенчмарк работает на всех графических процессорах с поддержкой DXR API. Мы проверили несколько видеокарт Nvidia в разрешении 2560×1440 при различных настройках, когда отражения рассчитываются при помощи трассировки лучей и традиционным для растеризации методом.
Бенчмарк показывает сразу несколько новых возможностей применения трассировки лучей через DXR API, в нем используются алгоритмы отрисовки отражений и теней с применением трассировки, но тест в целом не слишком хорошо оптимизирован и сильно загружает даже мощные GPU, и даже на GeForce RTX 3080 мы не получили 60 FPS, даже при традиционной отрисовке отражений. Но для сравнения производительности разных GPU в этой конкретной задаче тест подходит.
Сходу видно разницу в поколениях — если все решения GeForce RTX 20 показывают близкие результаты, и частота кадров даже у GeForce RTX 2080 Ti довольно низка, то новинка тут просто расцветает, показывая на 55%-65% более высокие результат, по сравнению с RTX 2080 Super. Сцены 3DMark Port Royal требовательны к объему видеопамяти, но преимущества у RTX 2080 Ti не обнаружено, новинка архитектуры Ampere явно быстрее лучшей модели семейства Turing.
Переходим к полусинтетическим бенчмаркам, которые сделаны на игровых движках, и соответствующие проекты должны выйти в скором времени. Первым тестом стал Boundary — название вы могли видеть на иллюстрации с китайскими игровыми проектами с поддержкой RTX. Это бенчмарк с очень серьезной нагрузкой на GPU, трассировка лучей в нем используется весьма активно — и для сложных отражений с несколькими отскоками луча, и для мягких теней, и для глобального освещения. Также в тесте используется DLSS, качество которого можно настраивать, и мы выбрали максимальное.
Картинка в этом тесте в целом выглядит весьма неплохо, как и результат новой GeForce RTX 3080 — она на 70%-80% быстрее своей прямой предшественницы RTX 2080, как и обещала нам ранее компания Nvidia. Причем, если в Full HD даже младшая из сравниваемых видеокарт дает искомые 60 FPS, то в 4K только RTX 3080 обеспечит приемлемую частоту кадров, хотя и ниже максимально комфортных 60 FPS. В таких случаях нужно использовать DLSS меньшего качества.
И второй полуигровой бенчмарк также основан на грядущей китайской игре — Bright Memory. Интересно, что оба теста довольно похожи по результатам и по качеству изображения, хотя по тематике они совсем разные. И все же этот бенчмарк более требователен, особенно к производительности трассировки лучей. В нем первый графический процессор семейства Ampere обеспечил преимущество над RTX 2080 до двух раз — и тут Nvidia не обманула.
В общем, по этим бенчмаркам хорошо видно, что в RTX-тестах преимущество новой архитектуры составляет порядка 70%-100%, новые GPU заметно быстрее в этой задаче, чем аналоги из прошлого семейства Turing. Более продвинутым решениям помогают и улучшенные RT-ядра и удвоенный темп FP32-вычислений, и улучшенное кэширование, и быстрая видеопамять — архитектура выглядит отлично сбалансированной именно для подобных задач.
Вычислительные тесты
Мы продолжаем поиск бенчмарков, использующих OpenCL для актуальных вычислительных задач, чтобы включить их в состав нашего пакета синтетических тестов. Пока что в этом разделе остается довольно старый и не слишком хорошо оптимизированный тест трассировки лучей (не аппаратной) — LuxMark 3.1. Этот кроссплатформенный тест основан на LuxRender и использует OpenCL.
Новая модель GeForce RTX 3080 просто отличные результаты в LuxMark, даже над RTX 2080 Ti ее преимущество составило 60%-70% и более! Не говоря уже о RTX 2080, которая отстала в 2,4 раза. В общем, очень похоже, что именно подобные математически-интенсивные нагрузки с большим влиянием кэширования лучше всего подходят для новой архитектуры Ampere, в этом тесте новинка рвет и конкурентов и предшественников.
Впрочем, надо подождать топового чипа архитектуры RDNA2, чтобы сделать окончательные выводы, но пока что преимущество RTX 3080 выглядит просто подавляющим. Настораживает и низкий результат Radeon RX 5700 XT — возможно, для этой конкретной задачи архитектура RDNA подходит не слишком хорошо, хотя изменения в системе кэширования в чипах семейства Navi должны были благоприятно сказываться на производительности программной трассировки лучей. Остается ждать реального конкурента.
Рассмотрим еще один тест вычислительной производительности графических процессоров — V-Ray Benchmark — это тоже трассировка лучей без применения аппаратного ускорения. Тест производительности на базе рендерера V-Ray раскрывает возможности GPU в сложных вычислениях и также может показать преимущества новых видеокарт. В прошлых тестах мы использовали разные версии бенчмарка: которая выдает результат в виде времени, затраченного на рендеринг и в виде количества миллионов просчитанных путей за секунду.
Этот тест также показывает программную трассировку лучей и в нем новая GeForce RTX 3080 снова рвет всех буквально в клочья — разница между RTX 2080 и RTX 3080 более чем 2,5 раза. Даже RTX 2080 Ti отстала от новинки вдвое! Очень мощный результат, и второй такой в сложных вычислительных тестах — Ampere явно чувствует себя в своей тарелке, этой архитектуре идеально подходят такие задачи, с кучей FP32-вычислений и требовательные к скорости и объему кэш-памяти.
Промежуточные выводы
С каждой новой архитектурой компания Nvidia продолжает поддерживать звание лидера рынка. Любое новое семейство их графических процессоров обеспечивает отличную 3D-производительность и энергоэффективность, а также новые возможности для улучшения качества картинки. Так, предыдущее поколение Turing стало первым с поддержкой аппаратной трассировки лучей, что уже изменило игровую графику реального времени, хотя казалось, что даже до каких-то элементов трассировки еще довольно далеко. С тех пор выпустили несколько популярных игр, которые в той или иной мере получили поддержку трассировки лучей, и для многих энтузиастов это стало важным доводом в пользу решений Nvidia.
Более того, трассировка лучей появится и в грядущих консолях следующего поколения и в решениях конкурентов, пусть и в несколько другом аппаратном исполнении. Главное, что лидер рынка 3D сделал свое дело по популяризации и продвижению долгожданной трассировки лучей, хотя это было не так уж просто. На компанию сыпался шквал обвинений в том, что они внедряют бесполезные блоки (RT и тензорные) по слишком высокой цене, а производительность «обычных» игр выросла во времена Turing не так уж сильно. Возможно, частично это так и есть, но любые новые возможности в начале своего жизненного цикла не дают полностью раскрыть себя. Тем более, столь ресурсоемкие как трассировка лучей. Зато начальная аппаратная поддержка важна для индустрии и Turing уже ее изменил.
И как же хорошо, что новые решения архитектуры Ampere из семейства чипов GA10x дают приличный прирост в производительности — до двукратного в приложениях с трассировкой — и практически за те же деньги, что и Turing! Видеокарты серии GeForce RTX 30 несут в себе RT-ядра второго поколения, которые обеспечивают удвоенную производительность при поиске пересечений лучей с треугольниками, по сравнению с GeForce RTX 20. Также появилась новая возможность для ускорения трассировки лучей вместе с эффектом смазывания в движении motion blur, который часто применяется при рендеринге сцен для кино и в анимации. Кроме этого, была улучшена поддержка параллельного вычисления задач по затенению и трассировки лучей или трассировки и вычислений, что дает дополнительный прирост в эффективности.
Если добавить к списку удвоение FP32-блоков и другие изменения, то получается, что в мультипроцессоре Ampere практически все улучшили относительно Turing, включая кэши, разделяемую память, планировщики, и достижение высоких показателей эффективности кажется вполне реальным и на практике в современных шейдерах. Особенно если брать игры с трассировкой лучей, где для трассировки, затенения и постфильтра шумоподавления используется много математических операций, да и для многих вычислительных шейдеров удвоение FP32 также будет полезно.
Похвалим и то, что Nvidia не ушла от еще одной своей инновации, появившейся еще в прошлом поколении — аппаратного ускорения глубокого обучения, используемого в алгоритмах искусственного интеллекта, включая рендеринг и его улучшения. Хотя возможности тензорных блоков и не выросли настолько же существенно, как другие (хотя с учетом разреженности матриц — вполне), но этого вполне достаточно для современных игровых GPU. Тот же DLSS работает на Ampere просто отлично, в том числе и в 8K-разрешении с HDR. Собственно, этот самый DLSS и дает принципиальную возможность поиграть в 8K пока еще редким владельцам таких дисплеев.
Удивительно, но решения семейства GeForce RTX 30 даже и ругать то особо не за что. Пусть в них не очень много действительно новых возможностей, зато они отлично раскрывают те, что появились в Turing. Так всегда и происходит: одно поколение вводит фичи, а последующие все лучше открывают возможности их использования в реальных приложениях. Архитектура Ampere дала примерно двукратный прирост во всем: математической производительности, трассировке лучей и (с оговорками по поводу разреженности) задачах искусственного интеллекта. Удвоенное количество FP32-блоков в мультипроцессорах новых GPU значительно увеличивает производительность во всех графических задачах, а поддерживают их многочисленные улучшения в подсистеме памяти и кэширования, которые важны для полного раскрытия потенциала.
Совместная работа с компанией Micron Technology позволила разработать новый тип быстрой графической памяти, в котором нуждается столь мощный Ampere. Решения линейки GeForce RTX 30 стали первыми графическими процессорами, поддерживающими GDDR6X-память, обеспечивающей удвоение пропускной способности, по сравнению с GDDR6. Использование четырехуровневой амплитудно-импульсной модуляции вместо двухуровневой позволило добиться высокой эффективной частоты, что вылилось в пропускную способность в 760 ГБ/с для GeForce RTX 3080 и 936 ГБ/с для старшей модели линейки.
Единственным спорным моментом нам видится объем видеопамяти в моделях GeForce RTX 3080 и RTX 3070. Если на данный момент 10 и 8 гигабайт видеопамяти, соответственно, и достаточно в 99% случаев, то в перспективе это может измениться уже в следующие год-два, так как скоро выйдут консоли нового поколения с большим объемом памяти и быстрыми SSD, и грядущие мультиплатформенные игры могут потребовать большего объема локальной памяти, чем 8-10 ГБ. Да и пропускная способность у Ampere не увеличилась соответственно росту математической производительности, что также может ограничивать скорость рендеринга в некоторых задачах. При этом Nvidia даже не заставляет работать микросхемы GDDR6X-памяти на родных для нее частотах — возможно, дело в слишком большом энергопотреблении? Этот вопрос еще предстоит исследовать.
Из важных технологий, которые обязательно нужно отметить, назовем перспективный API для работы с накопителями данных — RTX IO. Он способен устранить одно из самых узких бутылочных горлышек сегодняшних игр — низкую скорость чтения получения данных о ресурсах, требуемых при рендеринге. RTX IO дает новую возможность для быстрой загрузки и стриминга ресурсов с быстрых NVMe SSD прямо в видеопамять, минуя системную память и CPU, а также поддерживает сжатие без потерь для этих данных, что еще больше увеличивает производительность. Подобный подход позволяет разгрузить CPU, снизить время загрузки ресурсов и увеличить детализацию игровых миров в будущем. Все это работает под управлением будущего API Microsoft — DirectStorage, который появится не очень скоро, и в этом мы видим единственный недостаток технологии.
Что касается производительности новинки в синтетических тестах, то она полностью подтвердила теорию. Если в устаревших нагрузках с большим использованием текстурных модулей и упором в растеризацию, преимущество новой GeForce RTX 3080 над RTX 2080 прошлого поколения достигает лишь 40%-50%, то современные игровые нагрузки в виде сложных графических расчетов с применением трассировки лучей, дают уже прирост в 70%-100%. А если взять чисто вычислительные тесты, которым важно количество FP32-блоков, а также большие и быстрые кэши, то тут Ampere раскрывается еще сильнее и обгоняет Turing до 2,5 раз!
По таким бенчмаркам хорошо видно, что в тестах с трассировкой и сложных вычислительных тестах преимущество новой архитектуры гораздо выше, чем у аналогов из прошлого семейства. Новым видеокартам помогают и улучшенные RT-ядра, и удвоенный темп FP32-вычислений, и улучшенное кэширование, и самая быстрая видеопамять (в виде внешних микросхем, HBM не учитываем) — в общем, все семейство Ampere кажется нам идеально сбалансированным именно для таких задач. И очень похоже, что игровые и другие тесты подтвердят указанное Nvidia ускорение от полутора до двух раз.
Вторая часть обзора с описанием карты, результатами игровых тестов (в проектах не только с традиционной растеризацией, но и с применением трассировки лучей) и финальными выводами вышла двумя днями позже, она задержалась из-за того, что тестовые образцы очень долго ехали в РФ.
Благодарим компанию Nvidia Russia
и лично Ирину Шеховцову
за предоставленную на тестирование видеокарту
Для тестового стенда:
блок питания Seasonic Prime 1300 W Platinum предоставлен компанией Seasonic