> > > > Mantle API удваивает видеопамять в системе multi-GPU (обновление)

Mantle API удваивает видеопамять в системе multi-GPU (обновление)

Опубликовано:

AMD Logo 2013С API Mantle AMD смогла доказать, что графический интерфейс (API) существенно влияет на производительность. Снижение числа избыточных команд позволяет получить прирост производительности в двузначных числах. Подобные преимущества можно будет ожидать и от Microsoft DirectX 12. Так что в недалёком будущем каждый геймер, предположительно, сможет выиграть от лучшего использования доступных ресурсов.

Две видеокарты AMD Radeon R9 290X
Две видеокарты AMD Radeon R9 290X

Впрочем, с API Mantle AMD решила пойти ещё дальше, атаковав проблему, о которой никто особо не задумывался раньше. В системе multi-GPU объём памяти удваивается, но на практике это не играет особой роли, поскольку каждый GPU использует собственную видеопамять для хранения текстур и других данных. И две видеокарты AMD Radeon R9 290X, каждая с 4.096 Мбайт видеопамяти, по работе с памятью ничем не отличаются от одной видеокарты с 4.096 Мбайт видеопамяти. Причина кроется в технологии разделения нагрузки рендеринга Alternate Frame Rendering (AFR). В случае AFR два или большее число GPU по очереди выполняют рендеринг полных кадров, поэтому каждый GPU должен обладать полной информацией для рендеринга кадра, и в системе multi-GPU такая информация, по сути, дублируется. Подходы Crossfire и SLI в данном отношении не отличаются. Другие недостатки AFR кроются в появлении микро-подёргиваний и задержке ввода.

Обновлённая версия метода рендеринга уже доступна разработчикам в SDK Mantle. Её можно использовать в системе CrossFire, называется технология Split Frame Rendering (SFR), по своей сути она не новая, но дополнена рядом оптимизаций. Два GPU с одинаковой производительностью могут в рендеринге SFR пропорционально разделять рабочую нагрузку. В случае двух GPU, например, первый GPU может выполнять рендеринг верхней половины кадра, а второй – нижней половины кадра. Затем обе части соединяются вместе, готовый кадр в идеальном случае получается в два раза быстрее. SFR позволяет уменьшить существующую задержку ввода. Да и с микро-подёргиваниями проблем будет меньше.

AMD GPU14 Tech Day: Mantle
AMD GPU14 Tech Day: Mantle

В случае использования SFR к работе подключается API Mantle, в памяти каждого GPU записываются только данные, которые необходимы для рендеринга его задачи. Теоретически такой подход удваивает доступную видеопамять. Впрочем, если текстура необходима двум GPU, то она будет загружаться в видеопамять каждого GPU и дублироваться. Но даже не в идеальных случаях мы получаем возможность хранения существенно большего объёма данных в видеопамяти.

Однако игровым разработчикам придётся адаптировать свои игры под новый режим. Им необходимо использовать новый SDK, чтобы добавить поддержку метода SFR. На данный момент неизвестно, какие студии работают над реализацией. Упоминается, что технология будет поддерживаться и под DirectX 12.

Обновление:

Джон Клозли (John Kloetzli), программист графики движка Firaxis Games, в том числе в недавно вышедшей игре Civilization Beyond Earth, прокомментировал в своем посте использование памяти и поддержку Mantle. Здесь хотелось бы привести ссылку на сравнение графики в игре Civilization Beyond Earth и первые тесты Mantle. Как указывает Клозли, основным аргументом в пользу рендеринга SFR является уменьшение задержки ввода. Но при этом придётся смириться с меньшей частотой кадров по сравнению с AFR. Кроме того, реализация SFR сегодня ограничена только двумя GPU. Для распределения нагрузки в SFR между двумя GPU используется более сложная технология, но она входит в реализацию Mantle и находится на передовой современных технологических решений.

Для использования SFR в Civilization Beyond Earth игру сначала необходимо запустить в версии Mantle, после чего установить в файле "Graphics Initialization File" значение параметра "Enable MGPU" на 1.