Страница 7: SLI под DirectX 12

В новом интерфейсе DirectX 12 произошли некоторые изменения, касающиеся работы систем multi-GPU. Конфигурации Implicit SLI ограничены двумя GPU, но NVIDIA позволяет использовать и больше GPU (например, для Competitive Benchmarking). Ниже мы рассмотрим некоторые особенности.

С DirectX 12 Microsoft добавила три режима совместного использования видеокарт. Самый простой случай предусматривает поочередный рендеринг кадров (AFR) на одинаковых видеокартах, что известно по существующим режимам AMD и NVIDIA. Данный режим ограничивает возможности разработчиков, но вместе с тем и предотвращает потенциальные ошибки из-за более глубокого доступа к аппаратным ресурсам. Кроме того, большая часть работы здесь выполняется на уровне драйвера, а не DirectX 12.

Презентация EMA в DirectX 12Презентация EMA в DirectX 12

Презентация EMA в DirectX 12

DirectX 12 обеспечивает более глубокий доступ к «железу» даже в системах multi-GPU. Для этого Microsoft представила режим Explicit Multi-Adapter (EMA). В нем игровые разработчики явно задают параметры поддержки multi-GPU. Для каждого одиночного GPU определяется доступ к памяти, описывается взаимодействие GPU между собой – и вся эта поддержка должна быть запрограммирована заранее. Ответственность за работу связки видеокарт теперь полностью лежит в руках разработчиков, что привносит определенные риски. Дополнительные усилия разработчиков не стоит недооценивать, а ошибки должен будет исправлять разработчик, а не Microsoft, AMD или NVIDIA.

Презентация EMA в DirectX 12
Презентация EMA в DirectX 12

В EMA возможны два разных режима: Linked Mode и Unlinked Mode. В режиме Unlinked Mode обеспечивается базовая функциональность EMA, в режиме Linked Mode функциональность расширяется, но ограничения по используемому в комбинации «железу» становятся более строгими. Данный режим очень похож на традиционные SLI и CrossFire, только под DirectX 12. В режиме Unlinked Mode вы можете комбинировать разные видеокарты, в том числе и от разных производителей. Возможна комбинация дискретного и интегрированного GPU.

Презентация EMA в DirectX 12
Презентация EMA в DirectX 12

В режиме Unlinked Mode каждый графический процессор считается самостоятельной аппаратной единицей, со своей памятью, командным процессором и т.д. EMA под DirectX 12 позволяет обмениваться данными между аппаратными единицами, причем на глубоком уровне, а не просто готовыми кадрами. Можно обмениваться частично просчитанными кадрами или данными в буферах, что позволяет выйти на новые уровни совместного рендеринга на нескольких GPU. На первый взгляд все звучит просто, стал возможен обмен данными, что открывает доступ к алгоритмам, ранее недоступным. Но на практике все сложнее.

Данные придется передавать по интерфейсу PCI Express, что намного медленнее связи между GPU и локальной видеопамятью, да и задержки довольно большие. Так что разработчикам следует определить, какие данные имеет смысл передавать между GPU, чтобы интерфейс PCI Express не стал «узким местом». Также следует определиться, в каком виде передавать данные. У разных производителей и даже разных поколений GPU зачастую используются разные форматы данных, которые не всегда просто перевести из одного в другой. Придется прилагать дополнительные усилия, необходимые для реализации EMA в Unlinked Mode. Впрочем, фокусом Unlinked Mode в EMA является все же совместная работа дискретных и интегрированных GPU, но и здесь могут использоваться GPU разных производителей.

Презентация EMA в DirectX 12
Презентация EMA в DirectX 12

Режим Linked Mode можно рассматривать как форму SLI или Crossfire под DirectX 12, аппаратные ресурсы в Linked Mode комбинируются в своего рода «видеокарту». Пользователь и игровой движок «видят» только один GPU и память. Аппаратные ресурсы здесь будут использоваться более тесно и глубоко, что открывает больше возможностей, но при этом накладываются дополнительные ограничения на «железо».

Самый большой потенциал производительности можно будет раскрыть через Linked Mode, а самый большой уровень гибкости – через Unlinked Mode. Если разработчики хотят приложить минимальные усилия, и им достаточно базовой функциональности системы multi-GPU, то достаточно поддержать простой вариант EMA, доверившись квалификации разработчиков драйверов AMD и NVIDIA. Но поскольку только разработчики игры в полной мере владеют всеми нюансами своего продукта, то поддержка Linked и Unlinked Mode тоже весьма желательна.