Нашёл отличный материал по внутреннему устройству ядер матричного умножения на GPU — от железа до кода, бьющего производительность стандартных библиотек. Автор проходит полный путь: архитектура памяти H100 → ассемблер GPU (PTX/SASS) → наивное ядро → оптимизированное ядро с тензорными блоками. Всё с картинками и кодом. Ключевые полезные идеи: Почему порядок обращения к памяти решает Перестановка двух операторов (деление и остаток) в вычислении координат потока даёт падение производительности в 13 раз — с 3171 до 243 миллиардов операций в секунду. Без понимания иерархии памяти это выглядит как магия. Перемешивание данных в общей памяти (swizzling) Простая операция «исключающее ИЛИ» над адресами при загрузке данных устраняет конфликты банков памяти. Без этого — 8-кратное замедление при чтении столбцов. Автор разложил механизм до уровня отдельных битов. Конвейер «производитель-потребитель» на уровне групп потоков Одна группа из 128 потоков занимается только загрузкой данных через аппа
Внутри GPU NVidia: анатомия высокопроизоводительных математических умножений
2 дня назад2 дня назад
1 мин