Операция выполнена!
Закрыть
Хабы: Python, C, Алгоритмы, Высоконагруженные системы, Open source

Когда профилируешь вычисления или инференс небольших моделей в Python, часто натыкаешься на странную вещь: вроде бы под капотом у NumPy крутится мощный OpenBLAS или Intel MKL, но на небольших матрицах (16x16, 32x32) умножение A @ B работает подозрительно медленно — по 3–5 микросекунд на одну операцию.

Если ты перемножаешь матрицы 2048x2048 раз в минуту — эти микросекунды незаметны. Но когда у тебя токенная генерация с batch=1, фильтр Калмана, физический движок или обработка сенсоров в реальном времени с миллионом итераций, профайлер начинает показывать, что программа большую часть времени просто простаивает на оверхеде библиотек.

Я решил разобраться, откуда берётся этот лаг, и написать предельно компактное решение на Си с AVX2 без зависимостей, чтобы выжать максимум из одного потока процессора.

Читать далее
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro