Трассировка np.add: от Python до SIMD-ядра

Tracing np.add, all the way down

Автор разбирает один вызов np.add(a, b) для float64-массивов, прослеживая путь от Python до низкоуровневого цикла. Он объясняет, как ufunc-объекты хранят внутренние циклы, как работает переопределение __array_ufunc__, механизмы диспетчеризации и кэширования, а также когда используется быстрый путь без итератора. Статья содержит подробный разбор исходного кода NumPy 2.5.2 и завершается демонстрацией влияния расположения данных в памяти на производительность.

Каждый встроенный числовой цикл в NumPy до сих пор имеет эту форму — массив указателей на данные, количество элементов, шаг для каждого операнда и непрозрачная полезная нагрузка.

Ещё за этот день

2026-09-08