
Комментарии 10
Монументальный труд, спасибо! Есть же люди, которым не лень учить других!
Вопрос: а если я использую NumPy, там всё эффективно реализовано?
Наблюдаются странности со временем выполнения при размерностях матриц, равных степени двойки.
А на маке есть инструменты, позволяющие замерить доступы/миссы по кешам (типа perf в Linux)? Есть подозрение, что при "круглых" размерах разные доступы попадают в один и тот же set кеша и ассоциативности не хватает, чтобы разрулить конфликты - но это только предположение, детально код не смотрел и в любом случае при возможности лучше явно измерить.
Главный инструмент в macOS для оценки производительности Xcode Instruments, но у меня с ним как-то раньше не задалось. Надо бы протестить, но код из статьи только с целью разобраться, что да как устроено и понять насколько код написанный "на коленке" хуже чем то, что реализовано производителем в BLAS. Так что результат меня устраивает и больше тратить время на эту задачу не хочется)
Вот это статья, так статья. Статьища! Хабр - торт
Подскажите, "заполненные матрицы" в большинстве мест в статье и "плотные матрицы" в одном из заголовков ("Базовый вариант умножения плотных матриц") - это же синонимы? Это два варианта перевода dense matrix?
Спасибо за статью, было интересно прочитать. Ранее в рамках интереса выполнял похожую задачу с разницей того, что это всё не на CPU а на GPU используя OpenCL/CUDA. Если кому-то интересно, исследовательскую работу провел товарищ из Европы - https://cnugteren.github.io/tutorial/pages/page1.html
Умножение матриц: пример использования расширения ARM SME2 в Apple M4 Pro