Добавить в корзинуПозвонить
Найти в Дзене
Pro Hi-Tech

Что мы узнали про Radeon 8000 и AMD rDNA 4

AMD пока не делали официального анонса, но уже сейчас со стороны красных было внесено множество изменений в "компилятор для компиляторов" с открытым исходным кодом LLVM для будущего релиза RX 8000, эти изменения в AMD rDNA 4 уже проанализировали разработчики, и прочитав один из таких отчетов (ссылка ниже), мы смогли выцепить немало ценной информации.
Ранее AMD не предавали такого же пристального внимания некоторым аспектам работы с памятью, что и Nvidia, однако начиная с rDNA4 будет произведена наиболее кардинальная переработка этого аспекта со времен GCN.
AMD не отказываются от уже существующих специальных регистров, которые отслеживают количество невыполненных обращений в определенной категории, однако в rDNA 4 каждый из них сможет работать в нескольких режимах, за счет чего шейдерные программы на rDNA 4 смогут ожидать доступа к памяти с большей степенью конкретизации.
Вместо использования трех битов (GLC/SLC/DLC), rDNA 4 управляет поведением кэша с помощью четырех битов. Три пред

AMD пока не делали официального анонса, но уже сейчас со стороны красных было внесено множество изменений в "компилятор для компиляторов" с открытым исходным кодом LLVM для будущего релиза RX 8000, эти изменения в AMD rDNA 4 уже проанализировали разработчики, и прочитав один из таких отчетов (ссылка ниже), мы смогли выцепить немало ценной информации.

Ранее AMD не предавали такого же пристального внимания некоторым аспектам работы с памятью, что и Nvidia, однако начиная с rDNA4 будет произведена наиболее кардинальная переработка этого аспекта со времен GCN.

AMD не отказываются от уже существующих специальных регистров, которые отслеживают количество невыполненных обращений в определенной категории, однако в rDNA 4 каждый из них сможет работать в нескольких режимах, за счет чего шейдерные программы на rDNA 4 смогут ожидать доступа к памяти с большей степенью конкретизации.

Вместо использования трех битов (GLC/SLC/DLC), rDNA 4 управляет поведением кэша с помощью четырех битов. Три предоставляют временные подсказки, а два определяют область действия. Временные подсказки будут даваться в rDNA 4 с использованием трех отдельных битов, а не через биты SLC/DLC/GLC, как раньше.

Серьезное изменение по работе с предварительной выборкой. rDNA 4 увеличивает возможное начальное расстояние предварительной выборки начиная с точки входа ядра с 64 строк кэша по 128 байт до 256 x 128 байт. Таким образом, размер кода, охватываемый первоначальной предварительной выборкой, увеличивается с 8 КБ до 32 КБ.

rDNA 4 добавляет 8-битные и 16-битные инструкции скалярной загрузки, таким образом AMD возвращают гибкую ширину нагрузки на векторной стороне, которая была убрана в момент переход на скалярный путь развития, когда были установлены ограничения на 32-битные и более нагрузки. Это изменение сделает ISA (инструкции GPU) более удобными для вычислительных программ, использующих 8- или 16-битные типы данных. В предыдущих поколениях графических процессоров AMD можно добиться аналогичных результатов, загрузив 32-битное значение и замаскировав старшие биты. Ну а теперь GPU все больше походит на CPU по этим возможностям.

Все эти изменения должны быть полезными для тех, кто делает глубокую оптимизацию своих игр и рабочих программ под rDNA4, так как позволяют буквально несколькими строчками кода устранить явные затыки при работе с памятью. Но, приятнее, конечно, будет, если это будет происходить автоматически на уровня компилятора или игрового движка.

Что касается машинного обучения, rDNA3 использует специализированные инструкций по умножению матриц. WMMA (Wave Matrix Multiply Accumulate). rDNA 4 также их поддерживает, и добавляет инструкции для 8-битных форматов с плавающей запятой. AMD также добавила инструкцию, в которой B—матрица 16×32 с элементами INT4 вместо 16×16, как в других инструкциях. Надо полагать, что поддержка FP8 и BF8 в rDNA 4 будет полезна не только для научных расчетов, но и для вполне бытовых задач (генеративные нейросети, плагины для Adobe и т.д.).

Матрицы с большим количеством нулевых элементов называются разреженными матрицами. Умножение разреженных матриц может потребовать гораздо меньше математических вычислений, поскольку любое умножение, включающее ноль, можно пропустить. Потребление хранилища и пропускной способности также может быть уменьшено, поскольку матрица может храниться в сжатом формате. Чувствуете, о чем речь пойдет далее? Правильно, об оптимизаторстве и "халявной производительности" при работе с ИИ (особенно с изображениями и видео).

При разборе кода rDNA 4 были обнаружены новые инструкции SWMMAC (Sparse Wave Matrix Multiply Accumulate). Команда SWMMAC размером 16x16x32 по идее должна умножить разреженную матрицу 32x16 на плотную матрицу 16x32, получая результат 32x32 благодаря тому, что индекс разреженности передается в качестве четвертого параметра, чтобы помочь интерпретировать ее как полноразмерную матрицу. Это очень эффективный подход, теоретический прирост производительности от его внедрения может быть двукратным в ряде задач, и такие изменения ожидаешь в первую очередь увидеть на cDNA, а не на rDNA, но AMD, по всей видимости, приняли решение не плодить сущности, а дать топовые фишки для работы с ИИ не только покупателям самых дорогих серверных CDNA-карт, но простым любителям всяких MidJourney с домашними Radeon.

Это только те изменения, которые видны "на поверхности", как и прежде значительная часть изменений, надо полагать, скрыта под капотом. А то, что касается лучей, мы пока не видим, вообще. Тем интереснее будет изучить уже официальную информацию от AMD позже в этом году.

Также важно понимать, что несмотря на глубокие изменения на уровне железа, драйверы Radeon, как и прежде, должны обеспечить полную совместимость ПО между разными и во многом уже непохожими поколениями rDNA и GCN.

Более подробно можно почитать вот тут: https://chipsandcheese.com/2024/01/28/examining-amds-rdna-4-changes-in-llvm/