Что принесет потребителю новый флагман 3D-графики Nvidia GeForce RTX 2080 Ti: базовый обзор с теоретической частью, результатами синтетических и игровых тестов

Справочные материалы:

Теоретическая часть: особенности архитектуры

После довольно длительного застоя на рынке графических процессоров, связанного с несколькими факторами, наконец-то вышло новое поколение GPU от компании Nvidia, да какое — с заявленным переворотом в 3D-графике реального времени! Действительно, аппаратно ускоренной трассировки лучей многие энтузиасты ждали уже давно, так как этот метод рендеринга олицетворяет физически корректный подход к делу, просчитывая путь лучей света, в отличие от растеризации с использованием буфера глубины, к которой мы привыкли за много лет и которая лишь имитирует поведение лучей света. Для того, чтобы не рассказывать об особенностях трассировки еще раз, мы предлагаем прочитать большую подробную статью о ней.

Хотя трассировка лучей обеспечивает более высокое качество картинки, по сравнению с растеризацией, она весьма требовательна к ресурсам и ее применение ограничено возможностями аппаратного обеспечения. Анонс технологии Nvidia RTX и аппаратно поддерживающих ее GPU дал разработчикам возможность начать внедрение алгоритмов, использующих трассировку лучей, что является самым значительным изменением в графике реального времени за последние годы. Со временем она полностью изменит подход к рендерингу 3D-сцен, но это произойдет постепенно. Поначалу использование трассировки будет гибридным, при сочетании трассировки лучей и растеризации, но затем дело дойдет и до полной трассировке сцены, которая станет доступной через несколько лет.

Но что предлагает Nvidia прямо сейчас? Компания анонсировала свои игровые решения линейки GeForce RTX в августе, на игровой выставке Gamescom. GPU основаны на новой архитектуре Turing, представленной еще чуть ранее — на SIGGRAPH 2018, когда были рассказаны лишь некоторые подробности о новинках. Все недостающие детали мы и раскроем сегодня. В линейке GeForce RTX объявлено три модели: RTX 2070, RTX 2080 и RTX 2080 Ti, они основаны на трех графических процессорах: TU106, TU104 и TU102, соответственно. Сразу бросается в глаза, что с появлением аппаратной поддержки ускорения трассировки лучей, Nvidia поменяла систему наименований и видеокарт (RTX — от ray tracing, т. е. трассировка лучей), так и видеочипов (TU — Turing).

Почему Nvidia решила, что аппаратную трассировку необходимо представить именно сейчас? Ведь прорывов в технологии производства кремния нет, полноценное освоение нового 7 нм техпроцесса еще не закончено, особенно если говорить о массовом производстве таких больших и сложных GPU. И возможностей для заметного повышения количества транзисторов в чипе при сохранении приемлемой площади GPU практически нет. Выбранный для производства графических процессоров линейки GeForce RTX техпроцесс 12 нм FinFET хоть и лучше известного нам 16 нм по поколению Pascal, но эти техпроцессы весьма близки по своим основным характеристикам, 12 нм использует схожие параметры, обеспечивая чуть большую плотность размещения транзисторов и сниженные утечки тока.

Но компания решила воспользоваться своим лидирующим положением на рынке высокопроизводительных графических процессоров, а также фактическим отсутствием конкуренции на данном этапе (лучшие из решений пока что единственного конкурента с трудом дотягивают разве что до GeForce GTX 1080), и выпустить новинки с поддержкой аппаратной трассировки лучей именно в этом поколении — еще до возможности массового производства больших чипов на 7 нм. Видимо, чувствуют свою силу, иначе бы и не пробовали.

Кроме трассировки, в составе новых GPU есть и аппаратные блоки для ускорения задач глубокого обучения — тензорные ядра, которые перешли в Turing по наследству от Volta. И, надо сказать, что Nvidia идет на приличный риск, выпуская игровые решения с поддержкой двух совершенно новых для пользовательского рынка типов специализированных вычислительных ядер. Главный вопрос заключается в том, смогут ли они получить достаточную поддержку от индустрии — с использованием новых возможностей и новых типов специализированных ядер. Для этого компании нужно убедить индустрию и продать критическую массу видеокарт GeForce RTX, чтобы разработчики увидели выгоду от внедрения новых фич. Ну, а мы сегодня попробуем разобраться в том, насколько хороши улучшения в новой архитектуре и что может дать покупка старшей модели — GeForce RTX 2080 Ti.

Так как новая модель видеокарты компании Nvidia основана на графическом процессоре архитектуры Turing, имеющей много общего с предыдущими архитектурами Pascal и Volta, то перед прочтением данного материала мы советуем ознакомиться с нашими ранними статьями по теме:

Графический ускоритель GeForce RTX 2080 Ti
Кодовое имя чипа TU102
Технология производства 12 нм FinFET
Количество транзисторов 18,6 млрд. (у GP102 — 12 млрд.)
Площадь ядра 754 мм² (у GP102 — 471 мм²)
Архитектура Унифицированная, с массивом процессоров для потоковой обработки любых видов данных: вершин, пикселей и др.
Аппаратная поддержка DirectX DirectX 12, с поддержкой уровня возможностей Feature Level 12_1
Шина памяти 352-битная: 11 (из 12 физически имеющихся в GPU) независимых 32-битных контроллеров памяти с поддержкой GDDR6 памяти
Частота графического процессора 1350 (1545/1635) МГц
Вычислительные блоки 34 потоковых мультипроцессора, включающих 4352 CUDA-ядра для целочисленных расчетов INT32 и вычислений с плавающей запятой FP16/FP32
Тензорные блоки 544 тензорных ядра для матричных вычислений INT4/INT8/FP16/FP32
Блоки трассировки лучей 68 RT-ядер для расчета пересечения лучей с треугольниками и ограничивающими объемами BVH
Блоки текстурирования 272 блока текстурной адресации и фильтрации с поддержкой FP16/FP32-компонент и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов
Блоки растровых операций (ROP) 11 (из 12 физически имеющихся в GPU) широких блоков ROP (88 пикселей) с поддержкой различных режимов сглаживания, в том числе программируемых и при FP16/FP32-форматах буфера кадра
Поддержка мониторов поддержка подключения по интерфейсам HDMI 2.0b и DisplayPort 1.4a
Спецификации референсной видеокарты GeForce RTX 2080 Ti
Частота ядра 1350 (1545/1635) МГц
Количество универсальных процессоров 4352
Количество текстурных блоков 272
Количество блоков блендинга 88
Эффективная частота памяти 14 ГГц
Тип памяти GDDR6
Шина памяти 352-бит
Объем памяти 11 ГБ
Пропускная способность памяти 616 ГБ/с
Вычислительная производительность (FP16/FP32) до 28,5/14,2 терафлопс
Производительность трассировки лучей 10 гигалучей/с
Теоретическая максимальная скорость закраски 136–144 гигапикселей/с
Теоретическая скорость выборки текстур 420–445 гигатекселей/с
Шина PCI Express 3.0
Разъемы один HDMI и три DisplayPort
Энергопотребление до 250/260 Вт
Дополнительное питание два 8-контактных разъема
Число слотов, занимаемых в системном корпусе 2
Рекомендуемая цена $999/$1199 или 95990 руб (Founders Edition)

Как это стало обычным делом уже для нескольких семейств видеокарт Nvidia, линейка GeForce RTX предлагает специальные модели от самой компании — так называемые Founders Edition. В этот раз, при более высокой стоимости они обладают и более привлекательными характеристиками. Так, фабричный разгон у таких видеокарт есть изначально, а кроме этого, GeForce RTX 2080 Ti Founders Edition выглядят весьма солидно — благодаря удачному дизайну и отличным материалам. Каждая видеокарта протестирована на стабильную работу и обеспечивается трехлетней гарантией.

Видеокарты GeForce RTX Founders Edition имеют кулер с испарительной камерой на всю длину печатной платы и два вентилятора для более эффективного охлаждения. Длинная испарительная камера и большой двухслотовый алюминиевый радиатор обеспечивают большую площадь рассеивания тепла. Вентиляторы выводят горячий воздух в разные стороны, и при этом они довольно тихо работают.

Система питания в GeForce RTX 2080 Ti Founders Edition также серьезно усилена — применяется 13-фазная схема iMON DrMOS (в GTX 1080 Ti Founders Edition была 7-фазная dual-FET), поддерживающая новую динамическую систему управления питанием с более тонким контролем, улучшающая разгонные возможности видеокарты, о которых мы еще поговорим далее. Для питания скоростной GDDR6-памяти установлена отдельная трехфазная схема.

Архитектурные особенности

Сегодня мы рассматриваем старшую видеокарту GeForce RTX 2080 Ti, основанную на графическом процессоре TU102. Применяемая в этой модели модификация TU102 по количеству блоков ровно вдвое больше, чем TU106, который появится в виде модели GeForce RTX 2070 чуть позднее. TU102, применяемый в новинке, имеет площадь 754 мм² и 18,6 млрд.транзисторов против 610 мм² и 15,3 млрд. транзисторов у топового чипа семейства Pascal — GP100.

Примерно то же самое и с остальными новыми GPU, все они по сложности чипов как бы сдвинуты на шаг: TU102 соответствует TU100, TU104 по сложности схож на TU102, а TU106 — на TU104. Так как GPU усложнились, но техпроцессы применяются очень схожие, то и по площади новые чипы заметно увеличились. Посмотрим, за счет чего графические процессоры архитектуры Turing стали сложнее:

Полный чип TU102 включает шесть кластеров Graphics Processing Cluster (GPC), 36 кластеров Texture Processing Cluster (TPC) и 72 потоковых мультипроцессора Streaming Multiprocessor (SM). Каждый из кластеров GPC имеет собственный движок растеризации и шесть кластеров TPC, каждый из которых, в свою очередь, включает два мультипроцессора SM. Все SM содержат по 64 CUDA-ядра, по восемь тензорных ядер, по четыре текстурных блока, 256 КБ регистровый файл и 96 КБ конфигурируемого L1-кэша и разделяемой памяти. Для нужд аппаратной трассировки лучей, каждый мультипроцессор SM имеет также и по одному RT-ядру.

Всего в полной версии TU102 получается 4608 CUDA-ядер, 72 RT-ядра, 576 тензорных ядер и 288 блоков TMU. Графический процессор общается с памятью при помощи 12 отдельных 32-битных контроллеров, что дает 384-битную шину в целом. К каждому контроллеру памяти привязаны по восемь блоков ROP и по 512 КБ кэш-памяти второго уровня. То есть, всего в чипе 96 блоков ROP и 6 МБ L2-кэша.

По структуре мультипроцессоров SM новая архитектура Turing очень схожа с Volta, и количество ядер CUDA, блоков TMU и ROP, по сравнению с Pascal, выросло не слишком сильно — и это при таком усложнении и физическом увеличении чипа! Но это неудивительно, ведь основную сложность привнесли новые типы вычислительных блоков: тензорные ядра и ядра ускорения трассировки лучей.

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

Но не следует думать, что возможности CUDA-ядер остались неизменными, их тоже значительно улучшили. По сути, потоковый мультипроцессор Turing основан на варианте Volta, из которого исключена большая часть FP64-блоков (для операций с двойной точностью), оставив удвоенную производительность на такт для FP16-операций (также аналогично Volta). Блоков FP64 в TU102 оставлено 144 штуки (по два на SM), они нужны только для обеспечения совместимости. А вот вторая возможность позволит увеличить скорость и в приложениях, поддерживающих вычисления со сниженной точностью, вроде некоторых игр. Разработчики уверяют, что в значительной части игровых пиксельных шейдеров можно смело снизить точность с FP32 до FP16 при сохранении достаточного качества, что также принесет некоторые приросты производительности. Со всеми подробностями работы новых SM можно ознакомиться в обзоре архитектуры Volta.

Одним из важнейших изменений потоковых мультипроцессоров является то, что в архитектуре Turing стало возможным одновременное выполнение целочисленных (INT32) команд вместе с операциями с плавающей запятой (FP32). Некоторые пишут, что в CUDA-ядрах «появились» блоки INT32, но это не совсем верно — они «появились» в составе ядер сразу, просто до архитектуры Volta одновременное исполнение целочисленных и FP-инструкций было невозможным, и эти операции запускались на выполнение по очереди. CUDA-ядра архитектуры Turing же схожи с ядрами Volta, которые позволяют исполнять INT32- и FP32-операции параллельно.

И так как игровые шейдеры, помимо операций с плавающей запятой, используют много дополнительных целочисленных операций (для адресации и выборки, специальных функций и т. п.), то это нововведение способно серьезно повысить производительность в играх. По оценкам компании Nvidia, в среднем на каждые 100 операций с плавающей запятой приходится около 36 целочисленных операций. Так что лишь это улучшение способно принести прирост скорости вычислений порядка 36%. Важно отметить, что это касается только эффективной производительности в типичных условиях, а на пиковых возможностях GPU не сказывается. То есть, пусть теоретические цифры для Turing и не столь красивы, в реальности новые графические процессоры должны оказаться более эффективными.

Но почему, раз в среднем целочисленных операций лишь 36 на 100 FP-вычислений, количество блоков INT и FP равно? Скорее всего, это сделано для упрощения работы управляющей логики, а кроме этого, INT-блоки наверняка значительно проще FP, так что «лишнее» их количество вряд ли сильно повлияло на общую сложность GPU. Ну и задачи графических процессоров от Nvidia давно не ограничиваются игровыми шейдерами, а в других применениях доля целочисленных операций вполне может быть и выше. Кстати, аналогично Volta повысился и темп выполнения инструкций для математических операций умножения-сложения с однократным округлением (fused multiply–add — FMA), требующих лишь четырех тактов, по сравнению с шестью циклами на Pascal.

В новых мультипроцессорах SM была серьезно изменена и архитектура кэширования, для чего кэш первого уровня и разделяемая память были объединены (у Pascal они были раздельные). Shared-память ранее имела лучшие характеристики по пропускной способности и задержкам, а теперь пропускная способность L1-кэша выросла вдвое, снизились задержки доступа к нему вместе с одновременным увеличением емкости кэша. В новом GPU можно изменять соотношение объема L1-кэша и разделяемой памяти, выбирая из нескольких возможных конфигураций.

Кроме этого, в каждом разделе мультипроцессора SM появился L0-кэш для инструкций вместо общего буфера, а каждый кластер TPC в чипах архитектуры Turing теперь имеет вдвое больше кэш-памяти второго уровня. То есть, общий объем L2-кэша вырос до 6 МБ для TU102 (у TU104 и TU106 его поменьше — 4 МБ).

Эти архитектурные изменения привели к 50% улучшению производительности шейдерных процессоров при равной тактовой частоте в таких играх, как Sniper Elite 4, Deus Ex, Rise of the Tomb Raider и других. Но это не значит, что общий рост частоты кадров будет 50%, так как общая производительность рендеринга в играх далеко не всегда ограничена именно скоростью вычисления шейдеров.

Также были улучшены технологии сжатия информации без потерь, экономящие видеопамять и ее пропускную способность. Архитектура Turing поддерживает новые техники сжатия, по данным Nvidia до 50% более эффективные, по сравнению с алгоритмами в семействе чипов Pascal. Вместе с применением нового типа памяти GDDR6, это дает приличный прирост эффективной ПСП, так что новые решения не должны быть ограничены возможностями памяти. А при увеличении разрешения рендеринга и повышении сложности шейдеров, ПСП играет важнейшую роль в обеспечении общей высокой производительности.

К слову о памяти. Инженеры Nvidia работали совместно с производителями для обеспечения поддержки нового типа памяти — GDDR6, и все новое семейство GeForce RTX поддерживает микросхемы этого типа, имеющие пропускную способность в 14 Гбит/с и при этом на 20% более энергоэффективные, по сравнению с применяемой в топовых Pascal GDDR5X-памятью. Топовый чип TU102 имеет 384-битную шину памяти (12 штук 32-битных контроллеров), но так как один из них отключен в GeForce RTX 2080 Ti, то шина памяти у него 352-битная, и на топовую карту семейства установлено 11 ГБ, а не 12 ГБ.

Сама по себе GDDR6 хоть и является совершенно новым типом памяти, но слабо отличается от уже используемой ранее GDDR5X. Основное ее отличие в еще более высокой тактовой частоте при том же напряжении в 1,35 В. А от от GDDR5 новый тип отличается тем, что он имеет два независимых 16-битных канала с собственными шинами команд и данных, в отличие от единого 32-битного интерфейса GDDR5 и не полностью независимых каналов в GDDR5X. Это позволяет оптимизировать передачу данных, а более узкая 16-битная шина работает эффективнее.

Характеристики GDDR6-памяти обеспечивают высокую пропускную способность памяти, которая стала значительно выше, чем была у предыдущего поколения, поддерживающего типы памяти GDDR5 и GDDR5X. Рассматриваемая сегодня GeForce RTX 2080 Ti имеет ПСП на уровне 616 ГБ/с, что выше как предшественников, так и конкурирующей видеокарты, использующей дорогую память стандарта HBM2. В будущем, характеристики GDDR6-памяти еще будут улучшаться, сейчас ее выпускает компания Micron (скорость от 10 до 14 Гбит/с) и Samsung (14 и 16 Гбит/с).

Другие нововведения

Добавим немного информации о других нововведениях Turing, которые будут полезны и для старых, и для новых игр. К примеру, по некоторым фичам (feature level) из Direct3D 12, чипы Pascal отставали от решений AMD и даже Intel! В частности, это касается таких возможностей, как Constant Buffer Views, Unordered Access Views и Resource Heap (возможности, облегчающие работу программистов, упрощая доступ к различным ресурсам). Так вот, по этим возможностям Direct3D feature level новые GPU компании Nvidia теперь практически не отстают от конкурентов, поддерживая уровень Tier 3 для Constant Buffer Views и Unordered Access Views, и Tier 2 для resource heap.

Единственная возможность D3D12, которая есть у конкурентов, но не поддерживается в Turing — PSSpecifiedStencilRefSupported, возможность вывести из пиксельного шейдера референсное значения стенсиля, иначе его можно установить только глобально для всего вызова функции отрисовки. В некоторых старых играх стенсиль использовался для отсечения источников освещения в различных регионах экрана, и эта возможность была полезна для занесения в стенсиль маски с несколькими разными значениями, чтобы каждому источнику света отрисовываться в своем проходе со стенсил-тестом. Без PSSpecifiedStencilRefSupported эту маску приходится рисовать в несколько проходов, а так можно сделать один, вычисляя знаение стенсиля непосредственно в пиксельном шейдере. Вроде бы штука полезная, но в реальности не сильно важна — проходы эти несложные, и заполнение стенсиля в несколько проходов мало на что влияет при современных GPU.

Зато с остальным все в порядке. Появилась поддержка удвоенного темпа исполнения инструкций с плавающей запятой, и в том числе в Shader Model 6.2 — новой шейдерной модели DirectX 12, которая включает нативную поддержку FP16, когда вычисления производятся именно в 16-битной точности, и драйвер не имеет права использовать FP32. Предыдущие GPU игнорировали установку min precision FP16, используя FP32, когда им вздумается, а в SM 6.2 шейдер может потребовать использование именно 16-битного формата.

Кроме этого, было серьезно улучшено еще одно больное место чипов Nvidia — асинхронное исполнение шейдеров, высокой эффективностью которого отличаются решения AMD. Async compute уже неплохо работал в последних чипах семейства Pascal, но в Turing эта возможность была еще улучшена. Асинхронные вычисления в новых GPU полностью переработаны, и на одном и том же шейдерном мультипроцессоре SM могут запускать и графические и вычислительные шейдеры, как и чипы AMD.

Но и это еще не все, чем может похвастать Turing. Многие изменения в этой архитектуре нацелены на будущее. Так, Nvidia предлагает метод, позволяющий значительно снизить зависимость от мощности CPU и одновременно с этим во много раз увеличить количество объектов в сцене. Бич API/CPU overhead давно преследует ПК-игры, и хотя он частично решался в DirectX 11 (в меньшей степени) и DirectX 12 (в несколько большей, но все равно не полностью), радикально ничего не изменилось — каждый объект сцены требует нескольких вызовов функций отрисовки (draw calls), каждый из которых требует обработки на CPU, что не дает GPU показать все свои возможности.

Слишком многое сейчас зависит от производительности центрального процессора и даже современные многопоточные модели не всегда справляются с делом. Кроме этого, если минимизировать «вмешательство» CPU в процесс рендеринга, то можно открыть множество новых возможностей. Конкурент Nvidia при анонсе своего семейства Vega предложил возможное решение проблем — primivtive shaders, но дело не пошло дальше заявлений. Turing предлагает аналогичное решение под названием mesh shaders — это целая новая шейдерная модель, которая ответственна сразу за всю работу над геометрией, вершинами, тесселяцией и т. д.

Mesh shading заменяет вершинные и геометрические шейдеры и тесселяцию, а весь привычный вершинный конвейер заменяется аналогом вычислительных шейдеров для геометрии, которыми можно делать все, что нужно разработчику: трансформировать вершины, создавать их или убирать, используя вершинные буферы в своих целях как угодно, создавая геометрию прямо на GPU и отправляя ее на растеризацию. Естественно, такое решение может сильно снизить зависимость от мощности CPU при рендеринге сложных сцен и позволит создавать богатые виртуальные миры с огромным количеством уникальных объектов. Такой метод также позволит использовать более эффективное отбрасывание невидимой геометрии, продвинутые техники уровня детализации (LOD — level of detail) и даже процедурную генерацию геометрии.

Но столь радикальный подход требует поддержки от API, вероятно поэтому у конкурента дело дальше заявлений не пошло. Вероятно, в Microsoft работают над добавлением этой возможности, раз она востребована уже двумя основными производителями GPU, и в какой-то из будущих версий DirectX она появится. Ну, а пока что ее можно использовать в OpenGL и Vulkan через расширения, а в DirectX 12 — при помощи специализированного NVAPI, который как раз и создан для внедрения возможностей новых GPU, еще не поддерживаемых в общепринятых API. Но так как это не универсальный для всех производителей GPU метод, то широкой поддержки mesh shaders в играх до обновления популярных графических API скорее всего не будет.

Еще одна интереснейшая возможность Turing называется Variable Rate Shading (VRS) — это шейдинг с переменным количеством сэмплов. Эта новая возможность дает разработчику контроль над тем, сколько выборок использовать в случае каждого из тайлов буфера размером 4×4 пикселя. То есть, для каждого тайла изображения из 16 пикселей можно выбрать свое качество на этапе закраски пикселя, как меньшее, так и большее. Важно, что это не касается геометрии, так как буфер глубины и все остальное остается в полном разрешении.

Зачем это все нужно? В кадре всегда есть участки, на которых легко можно понизить количество сэмплов закраски практически без потерь в качестве — к примеру, это части изображения, замыленные постэффектами типа Motion Blur или Depth of Field. А на каких-то участках можно, наоборот, увеличить качество закраски. И разработчик сможет задавать качество шейдинга для разных участков кадра, достаточное по его мнению, что увеличит производительность и гибкость. Сейчас для подобных задач применяют так называемый checkerboard rendering, но он не универсален и ухудшает качество закраски для всего кадра, а с VRS можно делать это максимально тонко и точно.

Можно упрощать шейдинг тайлов в несколько раз, чуть ли не одну выборку для блока в 4×4 пикселя (такая возможность не показана на картинке, но она есть), а буфер глубины остается в полном разрешении, и даже при таком низком качестве шейдинга, границы полигонов будут сохраняться в полном качестве, а не один на 16. К примеру, на картинке выше самые смазанные участки дороги рендерятся с экономией ресурсов вчетверо, остальные — вдвое, и лишь самые важные отрисовываются с максимальным качеством закраски. Так и в других случаях можно отрисовывать с меньшим качеством низкодетализированные поверхности и быстро движущиеся объекты, а в приложениях виртуальной реальности снижать качество закраски на периферии.

Кроме оптимизации производительности, эта технология дает и некоторые неочевидные сходу возможности, вроде почти бесплатного сглаживания геометрии. Для этого нужно отрисовывать кадр в вчетверо большем разрешении (как бы 2×2 суперсэмплинг), но включить shading rate на 2×2 по всей сцене, что убирает стоимость вчетверо большей работы по закраске, но оставляет сглаживание геометрии в полном разрешении. Таким образом получается, что шейдеры исполняются лишь один раз на пиксель, но сглаживание получается как 4х MSAA практически бесплатно, так как основная работа GPU заключается именно в шейдинге. И это лишь один из вариантов использования VRS, наверняка программисты придумают и другие.

Нельзя не отметить и появление высокопроизводительного интерфейса NVLink второй версии, который уже используется в ускорителях высокопроизводительных вычислений Tesla. Топовый чип TU102 имеет два порта NVLink второго поколения, имеющие общую пропускную способность в 100 Гбайт/с (к слову, в TU104 один такой порт, а TU106 лишен поддержки NVLink вовсе). Новый интерфейс заменяет разъемы SLI, а пропускной способности даже одного порта хватит для передачи кадрового буфера с разрешением 8К в режиме многочипового рендеринга AFR от одного GPU к другому, а передача буфера 4K-разрешения доступна на скоростях до 144 Гц. Два порта расширяют возможности SLI сразу до нескольких мониторов с разрешением 8K.

Такая высокая передача данных позволяет использовать локальную видеопамять соседнего GPU (присоединенного по NVLink, разумеется) практически как свою собственную, и это делается автоматически, без необходимости сложного программирования. Это будет весьма полезно в неграфических применениях и уже применяется в профессиональных приложениях с поддержкой аппаратной трассировки лучей (две видеокарты Quadro c 48 ГБ памяти каждая способны работать над сценой практически как единый GPU с 96 ГБ памяти, для чего ранее приходилось делать копии сцены в памяти обоих GPU), но в будущем это станет полезно и при более сложном взаимодействии многочиповых конфигураций в рамках возможностей DirectX 12. В отличие от SLI, быстрый обмен информацией по NVLink позволит организовать иные формы работы над кадром, чем далеко неидеальный AFR со всеми его недостатками.

Аппаратная поддержка трассировки лучей

Как стало известно из анонса архитектуры Turing и профессиональных решений линейки Quadro RTX на конференции SIGGRAPH, новые графические процессоры компании Nvidia, кроме ранее известных блоков, впервые включают также и специализированные RT-ядра, предназначенные для аппаратного ускорения трассировки лучей. Пожалуй, большая часть дополнительных транзисторов в новых GPU принадлежит именно к этим блокам аппаратной трассировки лучей, ведь количество традиционных исполнительных блоков выросло не слишком так сильно, хотя и тензорные ядра немало повлияли на увеличение сложности GPU.

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

Благодаря семейству GeForce RTX, уже сейчас можно использовать трассировку для некоторых эффектов: качественных мягких теней (реализовано в игре Shadow of the Tomb Raider), глобального освещения (ожидается в Metro Exodus и Enlisted), реалистичных отражений (будет в Battlefield V), а также сразу нескольких эффектов одновременно (показано на примерах Assetto Corsa Competizione, Atomic Heart и Control). При этом, для GPU, не имеющих аппаратных RT-ядер в своем составе, можно использовать или привычные методы растеризации или трассировку на вычислительных шейдерах, если это будет не слишком медленно. Вот так по-разному обрабатывают трассировку лучей архитектуры Pascal и Turing:

Как видите, RT-ядро полностью принимает на себя работу по определению пересечений лучей с треугольниками. Скорее всего, графические решения без RT-ядер в своем составе будут смотреться не слишком сильно в проектах с применением трассировки лучей, ведь эти ядра специализируются исключительно на расчетах пересечения луча с треугольниками и ограничивающими объемами (BVH), оптимизирующими процесс и важнейшими для ускорения процесса трассировки.

Каждый мультипроцессор в чипах Turing содержит RT-ядро, выполняющее поиск пересечений между лучами и полигонами, а чтобы не перебирать все геометрические примитивы, в Turing используется распространенный алгоритм оптимизации — иерархия ограничивающих объемов (Bounding Volume Hierarchy — BVH). Каждый полигон сцены принадлежит к одному из объемов (коробок), помогающих наиболее быстро определить точку пересечения луча с геометрических примитивом. При работе BVH нужно рекурсивно обойти древовидную структуру таких объемов. Сложности могут возникнуть разве что для динамически изменяемой геометрии, когда придется менять и структуру BVH.

Что касается производительности новых GPU при трассировке лучей, то публике назвали цифру в 10 гигалучей в секунду для топового решения GeForce RTX 2080 Ti. Не очень понятно, много это или мало, да и оценивать производительность в количестве обсчитываемых лучей в секунду непросто, так как скорость трассировки очень сильно зависит от сложности сцены и когерентности лучей и может отличаться в десяток раз и более. В частности, слабо когерентные лучи при обсчете отражений и преломлений требуют большего времени для расчета, по сравнению с когерентными основными лучами. Так что показатели эти чисто теоретические, а сравнивать разные решения нужно в реальных сценах при одинаковых условиях.

Но Nvidia сравнила новые GPU с предыдущим поколением, и они оказались до 10 раз быстрее в теории в задачах трассировки, по сравнению с предыдущими решениями аналогичного уровня. В реальности же разница между RTX 2080 Ti и GTX 1080 Ti будет скорее ближе к 4–6-кратной. Но даже это — просто отличный результат, недостижимый без применения специализированных RT-ядер и ускоряющих структур типа BVH. Так как большая часть работы при трассировке выполняется на выделенных RT-ядрах, а не CUDA-ядрах, то снижение производительности при гибридном рендеринге будет заметно ниже, чем у Pascal.

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

Игровым разработчикам очень нравится трассировка, их аппетиты растут на глазах. Создатели игры Metro Exodus сначала планировали добавить в игру лишь расчет Ambient Occlusion, добавляющий теней в основном в углах между геометрией, но затем они решили внедрить уже полноценный расчет глобального освещения GI, который выглядит впечатляюще:

Кто-то скажет, что ровно так же можно предварительно рассчитать GI и/или тени и «запечь» информацию об освещении и тенях в специальные лайтмапы, но для больших локаций с динамическим изменением погодных условий и времени суток сделать это просто невозможно! Хотя растеризация при помощи многочисленных хитрых хаков и трюков действительно добилась отличных результатов, когда во многих случаях картинка выглядит достаточно реалистично для большинства людей, в некоторых случаях отрисовать корректные отражения и тени при растеризации невозможно физически.

Самый явный пример — отражения объектов, которые находятся вне сцены — типичными методами отрисовки отражений без трассировки лучей отрисовать их невозможно в принципе. Или не получится сделать реалистичные мягкие тени и корректно рассчитать освещение от больших по размеру источников света (площадные источники света — area lights). Для этого пользуются разными хитростями, вроде расставления вручную большого количества точечных источников света и фейкового размытия границ теней, но это — не универсальный подход, он работает только в определенных условиях и требует дополнительной работы и внимания от разработчиков. Для качественного же скачка в возможностях и улучшении качества картинки

Полный текст статьи читайте на iXBT прочитано 26315 раз