Die Reise eines np.add-Aufrufs: bis in den SIMD-Kernel

Tracing np.add, all the way down

Der Autor verfolgt einen einzelnen Aufruf von np.add(a, b) mit float64-Arrays durch den gesamten NumPy-2.5.2-Quellcode: von der Python-Ebene über die ufunc-Dispatch- und Typauflösungsmechanismen bis hin zur inneren Schleife. Dabei erklärt er die Rollen von __array_ufunc__-Overrides, die Loop-Auswahl und -Cache, den trivialen Pfad gegenüber NpyIter sowie die Freigabe der GIL. Der Beitrag richtet sich an Leser mit grundlegenden C-Kenntnissen, aber ohne NumPy-Interna-Wissen.

Das Modell, dass np.add die Arrays in C schnell addiert, ist korrekt, aber zwischen dem Python-Aufruf und der Schleife, die die Addition durchführt, liegt eine Menge Maschinerie, die auseinanderzunehmen Spaß macht.

Mehr von diesem Tag

2026-09-08