Часть 2 цикла о программировании Apple Scalable Matrix Extension (SME2) — от первых принципов до промышленной реализации GEMM. Часть 1 утверждала, что SME — это тензорное ядро, которое отрастил ваш процессор; эта часть — о том, как учиться его программировать и как мало помощи вы получите.
Оглавление-договор. В этой части мы проверим, есть ли у SME учебная дорога, сравнимая с той, которую получили тензорные ядра GPU; затем разберём два реально полезных источника: Arm Learning Path и KleidiAI; после этого отделим то, чему они действительно учат, от того, где они останавливаются. К концу главы станет видно, какая именно «середина лестницы» отсутствует и почему следующая часть неизбежно приводит к BLIS.
Если часть 1 права и SME действительно стоит рассматривать как маленькое тензорное ядро внутри CPU, следующий вопрос напрашивается сам: где дорога к нему? Вспомните, как тензорные ядра появились на GPU. Что бы вы ни думали о модели программирования, вы не оставались с ней один на один. cuBLAS использовал их с первого дня. CUTLASS прибыл как полностью разобранный сборник ответов с открытым исходным кодом — каждый приём упаковки, каждая стадия конвейера, разложенные по шаблонам, через которые можно пройти отладчиком. Были примеры в SDK, доклады на GTC, обсуждения на форумах, статьи в блогах, препарирующие раскладку фрагментов mma вплоть до отдельного потока. Оборудование было экзотическим; дорога к нему — автострадой.
Теперь проделайте то же упражнение для SME. Оборудование…