Эта статья была задумана как дань старой традиции: нам хотелось полюбоваться дорогими системами с несколькими GPU, как это было в 2014 и 2016 годах, а потом мы готовились с разочарованием признать, что технологии SLI и CrossFire уже утратили всякую практическую ценность. Но в вместо этого получилось своего рода продолжение наших недавних публикаций про API нового поколения (см. первую и вторую части исследования), ведь большинство игр из нашей тестовой методики поддерживают Direct3D 12. Под этим API пара видеокарт работают совсем по-иному, нежели в Direct3D 11, и нет никакого смысла ограничиваться сравнением под формально устаревшим, но все еще преобладающим интерфейсом Direct3D 11.
А что касается главного вопроса (осталась ли какая-то польза в SLI и CrossFire), то придется признать, что похороны двухадаптерных систем снова откладываются! Да, в связи со сменой API возникли новые проблемы, связанные и c реализаций Multi-Adapter в Direct3D 12, и с пропускной способностью шины PCI Express, и с пресловутой процессорозависимостью игр. Но, с другой стороны, именно Direct3D 12 несет в себе возможности для того, чтобы их преодолеть.
⇡#Мультиадаптерный рендеринг в Direct3D 11
Для начала признаем намеренную неточность в названии статьи, которую могли заметить читатели, следящие за состоянием дел в области игровой графики. Действительно, марка CrossFire ушла в отставку еще в прошлом году. Теперь AMD описывает мультиадаптерные системы термином mGPU, поскольку сфера использования CrossFire (как и NVIDIA SLI) ограничена Direct3D 11, а кто как не AMD больше всех приветствует переход к Direct3D 12. Тем не менее сама технология никуда не делась, и даже в настройках драйвера Radeon по-прежнему называется именно так.
В целом оба производителя дискретных GPU сейчас прохладно относятся к мультиадаптерному рендерингу. Это заметно по тому, как сократилось разнообразие конфигураций, в которых работают SLI и CrossFire. Пропали видеокарты на основе двух графических процессоров, без которых прежде не обходилось ни одно обновление архитектуры. Драйверы AMD и NVDIA официально поддерживают не больше двух GPU. А ведь в 2011 году мы тестировали связки из трех и четырех видеокарт класса GeForce GTX 580, и в то время игры могли вполне неплохо загрузить три ускорителя высшего эшелона. К тому же NVIDIA загнала SLI в самый верх своей продуктовой линейки: младшей видеокартой в серии GeForce 10, которая имеет разъемы SLI, является сравнительно мощный и дорогой ускоритель GeForce GTX 1070.
Конечно, именно мощные видеокарты, как правило, и устанавливают парами, а утраченная возможность использовать три или четыре графических процессора по большей части была полезна только для набора рекордных баллов в 3DMark. Но потеря интереса к SLI и CrossFire со стороны хозяев рынка видеокарт отражает общий застой этого направления, к которому привело несоответствие между сложностью технических задач и низким спросом со стороны рядовых геймеров.
В концептуальном плане рендеринг при помощи множественных GPU — это вполне очевидная идея, которая логически следует из высокого параллелизма вычислений, но на практике такие технологии всегда были довольно-таки капризны и требовали постоянного внимания со стороны драйверописателей. В рамках Direct3D 11 функцию разделения нагрузки между несколькими видеоадаптерами целиком выполняет драйвер. Игровой движок, как и в случае одиночного GPU, отдает команды общей очередью, а драйвер распределяет их так, чтобы, пока первый графический процессор создает свой кадр видеоряда, второй GPU занимается следующим кадром (метод AFR — Alternate Frame Rendering). Для полноты картины стоит заметить, что мультиадаптерный рендеринг не сводится к AFR. В редких случаях используется метод SFR (Split Screen Rendering), в котором каждый GPU обрабатывает свою часть единого кадра, а Direct3D 12 предусматривает и более сложные режимы, но о последнем — чуть позже.
В идеале процедура мультиадаптерного рендринга в Direct3D 11 прозрачна для игрового движка и не требует дополнительных усилий от его разработчиков, но на практике все совсем не так просто. При использовании метода AFR нужно считаться с ограничениями в тех ситуациях, когда существуют зависимости между последовательными кадрами, а это практически неизбежно в современных играх. Как следствие, адекватная работа мультиадаптерной системы возможна только при наличии профилей настроек для каждой конкретной игры, благодаря которым драйвер получает подсказки о том, чем занимается движок, а разработчикам игры, в идеале, нужно понимать, что пытается сделать драйвер. Полезно использовать и проприетарный API (такой как NVAPI для GPU NVIDIA), открывающий доступ к GPU в обход уровня абстракции Direct3D, но даже в идеальных условиях не от каждой игры можно добиться хорошего масштабирования быстродействия на нескольких адаптерах.
Свой вклад в эту проблему вносит и пресловутая «процессорозависимость»: графические чипы сейчас развиваются быстрее, нежели быстродействие CPU архитектуры x86 с небольшим числом потоков, и это заметно даже в конфигурациях с одной мощной видеокартой, не говоря уже о двух. Наконец, как мы раз за разом видим по результатам группового теста GPU в какой-нибудь популярной игре, единственный адаптер высшего эшелона, скорее всего, удовлетворит любого геймера. С другой стороны, и разница в качестве изображения между низкими и максимальными настройками качества графики уже не та, что в золотые времена SLI и CrossFire. В результате побуждение наращивать кадровую частоту любой ценой сошло на нет, а раз так, то какой смысл для людей, работающих над драйверами GPU, вкладывать усилия в нишевую технологию мультиадаптерного рендеринга? Пока работа продолжается (особенно со стороны NVIDIA), но с пришествием Direct3D 12 ситуация может полностью изменится — причем как в лучшую, так и в худшую сторону.
⇡#Мультиадаптерный рендеринг в Direct3D 12
Новый графический API Microsoft предусматривает два различных подхода к программированию мультиадаптерного рендеринга. В режиме Implicit Multi-Adapter задачу разделения работы между GPU выполняет драйвер — как в Direct3D 11, со всеми его плюсами и минусами. С другой стороны, в режиме Explicit Multi-Adapter ресурсами графических процессоров целиком распоряжается игровой движок, и это одновременно благословение и проклятие, ведь в таком случае все зависит от готовности разработчиков вкладывать силы в поддержку Multi-Adapter.
При должном старании программисты смогут извлечь из связки GPU быстродействие, принципиально недостижимое в предыдущей версии API. В частности, можно отказаться от AFR и применять сложные методы распределения нагрузки между адаптерами — такие как конвейеризация кадров (Frame Pipelining), при которой несколько GPU выполняют различные этапы рендеринга одного кадра, а проблема зависимостей между соседними кадрами отсутствует как таковая. Кроме того, конвейеризацию можно использовать в пользу качества рендеринга, а не частоты смены кадров. К примеру, загрузить второй GPU расчетом глобального освещения, трассировки лучей, физики и так далее.
У Explicit Multi-Adapter есть два метода реализации: Linked Node и Unlinked Node. Первый метод — это аналог SLI и CrossFire в рамках новой парадигмы мультиадаптерного рендеринга. Как и в этих проприетарных технологиях, работающих на уровне драйвера под Direct3D 11, здесь несколько адаптеров представлены общими очередями команд: графика, вычисления общего назначения и очередь Copy для передачи данных по шине PCI Express. Проще говоря, игра «видит» несколько адаптеров как один, а принадлежность команды определенному GPU определяется так называемой маской узла.
Direct3D 12 Linked Mode
Linked Node имеет несколько важных достоинств. В первую очередь, подразумевается общая архитектура и производительность узлов, что существенно упрощает задачу балансировки нагрузки. Также Linked Mode позволяет узлам напрямую обращаться к оперативной памяти друг друга, минуя системную RAM. Наконец, при рендеринге методом AFR возможна передача кадров «ведущему» узлу через интерфейсы, отличные от PCI Express (то есть мостики SLI, поскольку AMD давно избавилась от специализированной шины в CrossFire).
В свою очередь, в Unlinked Mode каждый узел предоставляет собственный набор очередей инструкций и допускает максимально гибкое управление ресурсами GPU. В частности, возможны асимметричные конфигурации из адаптеров неодинаковой мощности и различной архитектуры. Вполне жизнеспособна даже комбинация устройств AMD и NVIDIA в одной системе. Не менее заманчива возможность увеличить быстродействие дискретной графики за счет встроенного в центральный процессор GPU, который сможет выполнять финальные стадии обработки кадра (фактически, это частный случай конвейеризации кадров, и он не требует тщательной балансировки нагрузки, неизбежной в асимметричных связках GPU).
Переход графических адаптеров в Linked Mode осуществляется на уровне драйвера, а для пользователя — включением опции SLI или CrossFire в настройках. Тем не менее не всякая игра сможет использовать адаптеры в Linked Mode или, напротив, Unlinked Mode. К примеру, Ashes of the Singilarity требует активации Unlinked Mode, а остальные из наших тестов работают только в режиме Linked.
Direct3D 12 Unlinked Mode
Чтобы получить Linked Mode под Direct3D 12 на видеокартах NVIDIA, нужно связать их мостиком, иначе драйвер просто не даст включить SLI. Как сказано выше, Direct3D 12 позволяет использовать мостики по назначению в связанном режиме, но мы проверили: ни в одной из тестовых игр нет разницы по кадровой частоте между современным мостом HB SLI Bridge и простым гибким мостиком, которая в противном случае обязательно бы возникла. С одной стороны, это проблема, ведь мостик обеспечивает необходимую пропускную способность для передачи кадров между GPU в обход шины PCI Express даже в таких тяжелых режимах, как 4К. С другой, жесткие мостики с подсветкой, которые способны работать в двухканальном режиме и на повышенной частоте, — дорогое удовольствие, а в Direct3D 12 можно обойтись копеечным гибким интерфейсом.
⇡#Тестовый стенд, методика тестирования
Конфигурация тестого стенда | |
---|---|
CPU | Intel Core i7-5960X @ 4 ГГц (100 МГц × 40), постоянная частота |
Материнская плата | ASUS RAMPAGE V EXTREME |
Оперативная память | Corsair Vengeance LPX, 2133 МГц, 4 × 4 Гбайт |
ПЗУ | Intel SSD 520 240 Гбайт + Crucial M550 512 Гбайт |
Блок питания | Corsair AX1200i, 1200 Вт |
Система охлаждения CPU | Thermalright Archon |
Корпус | CoolerMaster Test Bench V1.0 |
Монитор | NEC EA244UHD |
Операционная система | Windows 10 Pro x64 |
ПО для GPU AMD | |
Все видеокарты | AMD Radeon Software Crimson ReLive Edition 18.6.1 |
ПО для GPU NVIDIA | |
Все видеокарты | NVIDIA GeForce Game Ready Driver 398.11 |
Бенчмарки: игры | ||||
---|---|---|---|---|
Игра (в порядке даты выхода) | API | Настройки, метод тестирования | Полноэкранное сглаживание | |
1920 × 1080 / 2560 × 1440 | 3840 × 2160 | |||
GTA V | DirectX 11 | Макс. качество. Встроенный бенчмарк | MSAA 4x + FXAA + Reflection MSAA 4x | Выкл. |
The Witcher 3: Wild Hunt | DirectX 11 | Макс. качество. FRAPS, локация Caer Morhen | AA + HairWorks AA 4x | |
Rise of the Tomb Raider | DirectX 11 / Direct3D 12 | Макс. качество, VXAO выкл. Встроенный бенчмарк | SSAA 4x | |
Tom Clancy's The Division | DirectX 11 / Direct3D 12 | Макс. качество, HFTS выкл. Встроенный бенчмарк | SMAA 1x Ultra + TAA: Supersampling | TAA: Stabilization |
Deus Ex: Mankind Divided | DirectX 11 / Direct3D 12 | Макс. качество. Встроенный бенчмарк | MSAA 4x | |
Battlefield 1 | DirectX 11 / Direct3D 12 | Макс. качество. OCAT, начало миссии Over the Top | TAA | |
Ashes of the Singularity: Escalation | DirectX 11 / Direct3D 12 | Макс. качество. Встроенный бенчмарк | MSAA 4x + TAA 4x | |
Total War: WARHAMMER II, встроенный бенчмарк | DirectX 11 / Direct3D 12 | Макс. качество. Встроенный бенчмарк (Battle Benchmark) | MSAA 4x | |
Far Cry 5 | DirectX 11 | Макс. качество. Встроенный бенчмарк | TAA |
В набор бенчмарков вошли девять игр 2016–2017 годов выпуска, среди которых шесть способны работать под API Direct3D 12. К Direct3D 11 прикованы только относительно старые игры — GTA V и The Witcher 3: Wild Hunt, а также Far Cry 5.
Что касается совместимости с мультиадаптерными системами под Direct3D 11, то она исключена в Ashes of the Singularity, а Battlefield 1 не поддерживает CrossFire. В остальных играх SLI и CrossFire работоспособны под старым API.
В режиме Direct3D 12 две видеокарты задействованы в Ashes of the Singularity, Battlefield 1, Deus Ex: Mankind Divided и Rise of the Tomb Raider. Tom Clancy’s The Division и Total War: WARHAMMER II этой возможности лишены. Кроме того, в Deus Ex: Mankind Divided под Direct3D 12 не работает связка из двух ускорителей Vega 64, хотя нет никаких проблем с Radeon RX 580.
⇡#Участники тестирования
- AMD Radeon RX 580 (1340/8000 МГц, 8 Гбайт);
- AMD Radeon RX Vega 64 (1546/1890 МГц, 8 Гбайт);
- NVIDIA GeForce GTX 1070 (1506/8008 МГц, 8 Гбайт);
- NVIDIA GeForce GTX 1080 Ti (1480/11000 МГц, 11 Гбайт).