Разработана библиотека NanoGEMM на языке Си, предназначенная для оптимизации перемножения небольших матриц размером от 16x16 до 64x64. Решение устраняет задержки в NumPy, где операции с такими массивами могут занимать 3–5 микросекунд из-за оверхеда библиотек OpenBLAS или Intel MKL.

Проблемы производительности стандартных библиотек связаны с громоздким диспетчеризационным стеком: проверкой типов, флагов выравнивания и эвристиками для активации пула потоков. Для матрицы 16x16 из float32 объемом 1 КБ, которая помещается в L1-кэш, время на эти проверки часто превышает время самих вычислений.

В основе NanoGEMM лежит микроядро с раскладкой блока 6x16 и поддержка инструкций AVX2. Система использует 12 регистров-аккумуляторов, 2 регистра для загрузки строк матрицы и 1–2 регистра для бродкаста элементов. Это позволяет задействовать все 16 векторных регистров без сброса данных на стек.

Для обеспечения режима zero-copy автор создал нативный C-extension для CPython через Buffer Protocol (Py_buffer), отказавшись от ctypes из-за высокого уровня маршалинга аргументов. Для матриц большего размера реализована L1/L2 кэш-блокировка с тайлами Mc=64, Nc=128 и Kc=128.

Готовый пакет nanogemm весит около 100 КБ и доступен для установки через pip. В то время как OpenBLAS эффективнее на матрицах от 128x128 и выше за счет многопоточности, NanoGEMM дает ощутимый выигрыш на малых размерностях. Проект опубликован под лицензией MIT.