Programmiersprache: Rust-Team gründet Projektgruppe für eine portable SIMD-API

Single Instruction, Multiple Data: Ein geplantes neues Modul namens std::simd soll die vektorisierte Datenverarbeitung in Rust voranbringen.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Programmiersprache: Rust-Team gründet Projektgruppe für eine Portable SIMD API
Lesezeit: 2 Min.
Von
  • Silke Hahn

Innerhalb des Rust-Teams hat die für die Library-Entwicklung zuständige Lib-Gruppe eine neue Projektgruppe eingerichtet, die sich ab sofort um die Entwicklung einer Portable SIMD API kümmert. Diese Neuigkeit hat das Library-Team in einem Beitrag des Rust-Blogs mitgeteilt. Zwar gibt es bereits ein Modul mit SIMD-Fähigkeiten, std::arch. Bedarf für ein neues portierbares Modul besteht offenbar, da die Compiler bislang den Code noch nicht "auto-vektorisieren" können.

SIMD steht für "Single Instruction, Multiple Data", denn damit kann die CPU einzelne Anweisungen auf einen Datenvektor anwenden, der die Aufgaben dann auf allen ihm zugeordneten Spuren (Lanes) zugleich ausführt. Ähnlich wie ein Array ist ein solcher Vektor ein breites CPU-Register aus mehreren Spuren desselben Datentyps. Vektorisierter Code soll bei manchen Aufgaben die Verarbeitung des Codes beschleunigen und ist offenbar besonders für Multimediaanwendungen und die Verarbeitung von Listen brauchbar.

Eine portable SIMD-API soll es ermöglichen, den SIMD-Code in einem einzigen Schritt über eine High-Level-API zu schreiben. Der Compiler soll so in der Lage sein, konsistenteren Code zu erzeugen. Falls allerdings ein Build-Target die gewünschte Operation nicht in der SIMD-Weise en bloc auszuführen vermag, ist das wohl kein Beinbruch, denn der Compiler verarbeitet dann konventionell eine Datenspur nach der anderen.

Bei Rust sind einige SIMD-Anweisungen im Modul std::arch verfügbar, mit denen Entwickler vektorisierte Funktionen bauen können. Allerdings lasten die vektorisierten Funktionen wohl die CPU stärker aus. Das Rust-Team hat vor, die Portable SIMD API als std::simd zu veröffentlichen. Die neue Schnittstelle soll eine möglichst große Zahl an Anwendungsfällen abdecken. Entwickler sollen aber weiterhin selbst entscheiden können, ob sie lieber das Modul std::arch einsetzen. Die Typen des neuen Moduls std::simd sollen sich möglichst einfach in std::arch-Typen konvertieren lassen.

Weiterführende Hinweise lassen sich dem Blogbeitrag des Rust-Library-Teams entnehmen, das die Entwicklung der Schnittstelle koordiniert. Das Projekt ist auf GitHub einsehbar und Interessierte können Beiträge dazu einbringen.

(sih)