AMD поделилась демонстрацией возможностей рендеринга Work Graphs с использованием графического процессора. Эта функция Direct3D направлена на устранение узких мест ЦП, позволяя графическому процессору генерировать работу, а не ждать, пока ее отправит ЦП.
Рабочие графики — это новая функция графического API Direct3D 12, которая позволяет графическому процессору самостоятельно генерировать задачи. Эта повышенная автономность снижает нагрузку на процессор благодаря сокращению связи между ним и графическим процессором. Одна из функций рабочих графиков, называемая узлами сетки, позволяет передавать данные непосредственно в шейдер сетки, превращая рабочий график в шейдер усиления.
Объявлено Microsoft 11 марта, мы наконец получили демо-версию от AMD, демонстрирующую ее потенциальные возможности. В этой демонстрации, разработанной в сотрудничестве с Университетом Кобурга, использовалась единая диспетчеризация Work Graph для рендеринга всего, кроме Skybox и пользовательского интерфейса. В этом конкретном случае рабочие графики улучшили производительность на Radeon RX 7900 XTX на целых 39% по сравнению с обычными методами с использованием ExecuteIndirect.
Эта демонстрация запускалась со следующими параметрами:
- 6600 вызовов отрисовки/кадр (после объединения)
- 13 миллионов треугольников/кадр
- 200 000 рабочих элементов, проходящих через график
- 37 узлов и 9 узлов вытяжки
- <200 МБ памяти резервного хранилища рабочих графиков
Рендеринг с использованием графического процессора — это то, что разработчики Unreal Engine рекомендуют уже некоторое время. В настоящее время только графические процессоры AMD RDNA 3 и Nvidia RTX 30 или новее поддерживают эту технологию через свои последние драйверы. Неясно, поддерживают ли его графические процессоры Intel, но будущие чипы, вероятно, в любом случае будут.
Грэм Вихлидал из Epic Games сказал, что до появления Work Graphs было сложно осуществлять детальное управление памятью на графическом процессоре, что затрудняло поддержку алгоритмов с динамическим расширением работы. Но с помощью рабочих графиков сложные и сильно изменчивые конвейеры могут эффективно работать на графическом процессоре. Он добавил, что модель программирования также становится значительно проще для разработчиков.
«Узлы Mesh действительно замыкают цикл с точки зрения обеспечения сквозной замены Execute Indirect и продвижения модели программирования графического процессора вперед. Все может быть помещено в один граф и выполнено за одну отправку, что позволяет очень легко составлять большие приложения из маленьких частей. Более того, такие проблемы, как переключение PSO, пустые диспетчеризации и управление буферной памятью, просто исчезают, делая конвейеры, управляемые графическим процессором, доступными для гораздо большего числа приложений и вариантов использования, чем раньше», — сказал Маттеус Чайдас, архитектор программного и аппаратного обеспечения AMD.
Work Graphs — это результат нескольких лет сотрудничества Microsoft и ее партнеров. Хотя он все еще находится на ранней стадии, он несет в себе много надежд и обещаний. Пока игры не начнут его реализовывать, мы не можем быть уверены в его реальных преимуществах, поскольку многим функциям DirectX 12 еще предстоит доказать свою ценность для геймеров.