в чем смысл того, что AMD RDNA поддерживает wave32?
В AMD официальном документеRDNA говорится, что
Архитектура RDNA изначально разработана для нового более узкого волнового фронта с 32 рабочими элементами, интуитивно называемого wave32, который оптимизирован для эффективных вычислений. Wave32 предлагает несколько важных преимуществ для вычислений и дополняет существующий режим wave64, ориентированный на графику.
Как мы знаем, размер волнового фронта (warpSize) равен 64. Означает ли wave32, что мы можем настроить размер warpsize с 64 на 32?
Есть ли какой-нибудь пример кодирования для wave32?
1 ответ
Хотя архитектура RDNA оптимизирована для wave32, существующий режим wave64 может быть более эффективным для некоторых приложений. Для обработки инструкций wave64 волновой контроллер выдает и выполняет две инструкции wave32, каждая из которых работает с половиной рабочих элементов инструкции wave64. Способ по умолчанию для обработки инструкции wave64 - просто выдать и выполнить верхнюю и нижнюю половины каждой инструкции последовательно, концептуально срезая каждую инструкцию по горизонтали.
https://www.amd.com/system/files/documents/rdna-whitepaper.pdf
Пример применения, CAS
Пакет AMD FidelityFX включает новый подход, известный как Contrast Adaptive Sharpening (CAS), который использует вычислительные шейдеры постобработки для повышения качества изображения. CAS улучшает детализацию внутри объекта, сохраняя плавные градиенты, создаваемые сглаживанием, как показано на рисунке 12. Это полноэкранный вычислительный шейдер, поэтому он может работать с любым типом сглаживания и особенно эффективен в паре. с временным сглаживанием.
CAS чрезвычайно быстр, занимает всего 0,15 миллисекунды для кадра 2560x1440, и обладает преимуществами множества функций в архитектуре RDNA, таких как упакованная целочисленная математика для вычислений адресов, упакованная математика fp16 для вычислений, более быстрая загрузка изображений и wave32.