Microsoft официально выпустила сегодня новую функцию DirectX 12 , которая некоторое время была доступна в предварительной версии и представляет новые типы автономности графического процессора, которые пытаются устранить узкие места процессора.
В длинном сообщении в блоге Амар Патель, инженер (Direct3D), и Текс Ридделл, инженер (компилятор DirectX), предоставляют объяснение рабочих графиков, системы автономии графических процессоров в D3D12, целью которой является устранение ограничений в общих вычислительных нагрузках на графические процессоры, а также разблокировать скрытые возможности графического процессора. Проще говоря, новая система призвана перейти на более эффективную систему рендеринга на основе графического процессора, уменьшая необходимость использования процессора в различных рабочих нагрузках.
Во многих рабочих нагрузках графического процессора первоначальный расчет на графическом процессоре определяет, какую последующую работу должен выполнить графический процессор. Это может быть достигнуто путем обратного обращения к ЦП для выполнения новой работы. Но обычно лучше, чтобы графический процессор мог питаться напрямую. ExecuteIndirect в D3D12 — это разновидность этого, когда приложение использует графический процессор для записи очень ограниченного буфера команд, который необходимо последовательно обрабатывать на графическом процессоре для выполнения новой работы.
Рассмотрим новый вариант. Предположим, что потоки шейдеров, работающие на графическом процессоре (производители), могут запрашивать выполнение другой работы (потребители). Потребители также могут быть производителями. Система может запланировать запрошенную работу, как только у графического процессора появится возможность ее выполнить. Приложение также может позволить системе управлять памятью для данных, передаваемых между задачами.
Это рабочие графики. Граф узлов, в котором код шейдера на каждом узле может запрашивать вызовы других узлов, не дожидаясь их запуска. Рабочие графики отражают алгоритмические намерения пользователя и общую структуру, не обременяя разработчика слишком большими знаниями о конкретном оборудовании, на котором он будет работать. Асинхронный характер максимизирует свободу системы решать, как лучше выполнить работу.
0 Комментариев