NumPy 2.0 mit Hardware-Beschleunigung, strikten APIs und String-Funktionen

Die Python-Erweiterung für mathematische Berechnungen beschleunigt sich in Version 2.0.0 mit Hardware-Unterstützung und biete viele neue Funktionen.

In Pocket speichern vorlesen Druckansicht 14 Kommentare lesen

(Bild: Funtap / Shutterstock.com)

Lesezeit: 3 Min.

Die mathematische Bibliothek für Python, NumPy, hat mit Version 2.0.0 das erste Major Release seit 2006 erfahren. Dieses bietet nicht nur neue Funktionen, sondern auch Performanceverbesserungen für Intel- und Mac-Umgebungen. Aufgrund einiger Breaking Changes ist es nicht komplett rückwärtskompatibel, so wurden Regeln in der Python- sowie der C-API geändert und viele Objekte aufgegeben.

Hinter den 212 Contributoren der neuen Version liegen 11 Monate Arbeit mit über 1078 Pulls. Herausgekommen sind eine Reihe an neuen Funktionen: Für String-Operationen gibt es ein neues Datentypelement mit variabler Länge, numpy.dtypes.StringDType, und den Namespace numpy.strings mit performanten Universal Functions. Die Datentypen float32 und longdouble lassen sich nun mit allen numpy.fft-Funktionen verwenden. Und der numpy-Namespace unterstützt jetzt die Array-API.

Viele Änderungen betreffen ebenfalls das Thema API. In der Python-API herrscht mit Version 2.0 eine strikte Trennung zwischen privaten und öffentlichen APIs durch eine neue Modellstruktur. Jeder öffentlichen Funktion ist ein eindeutiger Ort zugewiesen. Außerdem hat das Team viele veraltete Objekte und Aliase entfernt, im Haupt-Namespace circa zehn Prozent, in numpy.lib sogar achtzig Prozent. „Das sollte es einfacher machen, NumPy zu lernen und anzuwenden“, schreiben die Contributoren.

Auch die C-API musste Federn lassen. Funktionen und Makros wurden entfernt, beziehungsweise versteckt, „um die künftige Erweiterbarkeit zu vereinfachen“.

Ein Schwerpunkt der Arbeit am neuen Release betraf die Geschwindigkeit der Berechnungen. NumPy nutzt für die Sortierung (sort, argsort, partition, argpartition) jetzt Hardwarebeschleunigung, zum einen mit Intels Sortierbefehlen für die SIMD-x86-Erweiterungen und zum anderen Google Highway. Damit erzielt es „große (hardwarespezifische) Speed-ups“. Auch auf dem Mac (>=14) wird es wohl bis zu dreimal so schnell: NumPy 2.0 bietet beschleunigte Wheels für lineare Algebra.

Um die Performance immer im Blick zu behalten, gibt es in NumPy 2.0 eine Tracing-Schnittstelle, numpy.lib.introspect.opt_func_info, mit der sich feststellen lässt, welche Hardwarekerne verfügbar sind.

Im Detail hat das Team viele weitere Änderungen eingearbeitet, zum Beispiel verbessert sich das Verhalten bei der Typerweiterung (mit NEP 50), sodass weniger missverständliche Fehlermeldungen entstehen. Eine Übersicht über alle Neuerungen steht in den Release Notes und auf der GitHub-Seite. Aufgrund der Breaking Changes ist die Lektüre des Migration Guides empfehlenswert, beziehungsweise die Infos für nachgelagerte Downstream-Pakete, die oft angepasst werden müssen. Die nächste Version liegt als 2.1.dev0 schon bereit.

(who)