Matrix Core Programming on AMD GPUs
Матричные ядра AMD CDNA3 и CDNA4 архитектур ускоряют матричные операции FMA для AI и HPC, особенно эффективны в смешанной точности: входные матрицы используют FP16, FP8 или FP4, а аккумулятор остаётся в FP32 для сохранения точности. На CDNA4 (MI355X) FP8 даёт 32-кратный прирост против FP32, а FP4 и FP6 — до 64-кратного, благодаря новым инструкциям с масштабированием блоков экспонент.
Низкоточные форматы, такие как E4M3 (FP8) или E5M2 (BF8), оптимизируют компромисс между диапазоном значений и точностью за счёт битов экспоненты и мантиссы. Например, E4M3FN представляет числа до ±448 с 3-битной мантиссой, а E5M2 — до ±57344 с 2-битной. Важно учитывать зарезервированные значения для NaN и бесконечностей, которые ограничивают рабочий диапазон.
Комментарии (4)
- Радость по поводу увеличения публикаций об использовании аппаратного ускорения AMD для матричных вычислений и приветствие большего разнообразия в этой области.
- Критическое мнение о том, что архитектура GPU плохо подходит для матричного умножения из-за особенностей работы потоков и мультипроцессоров.
- Указание на то, что публикация исходит от сообщества, а не напрямую от AMD, и положительная оценка этого факта.
- Контраргумент о том, что матричное умножение не должно вызывать неэффективность выполнения на SIMT-архитектуре из-за ветвления.
Show HN: I built a toy TPU that can do inference and training on the XOR problem
Tiny-TPU: почему и как
Мы решились на безумное: собрать собственный TPU, не имея опыта в железе. Движимы желанием «переизобрести» ускоритель, а не копировать Google, мы пошли «кривым» путём: сначала пробуем самые простые идеи, потом читаем документацию. Цель — научиться думать без ИИ и понять, как устроены нейросети и чипы.
TPU — это ASIC, заточенный под матричные умножения (до 95 % вычислений в трансформерах). В отличие от GPU, он не умеет рисовать кадры, зато делает одно дело быстро и эффективно.
Как работает железо
- Тактовый цикл — базовая единица времени (пико-наносекунды). Всё происходит между «тиками».
- Verilog описывает логику:
Регистры обновляются раз в цикл, а не мгновенно, как в софте.always @(posedge clk) c <= a + b;
Путь к игрушечному TPU
- XOR-MLP 2→2→1 — разобрали вручную: прямой и обратный проходы, градиенты.
- Философия — рисуем всё на бумаге, кодим без ИИ, проверяем «тупые» идеи.
- Результат — работающий «той» TPU, который учится и выводит. Это не клон Google-TPU, а наша версия «как бы мы сделали».
Комментарии (18)
- Проект описывает «игрушечный TPU», реализованный пока только в симуляции на Verilog.
- Участники обсуждают следующий шаг — запуск на FPGA (LiteX, отсутствие опыта пока не мешает).
- Вопросы о конечной цели: потребительские устройства, edge-вычисления или просто proof-of-concept.
- Некоторые советуют перейти с SystemVerilog на Chisel, как Google, но другие считают это избыточным для маленького проекта.
- Общий тон: восхищение работой и любопытство, что именно было «собрано».