Halide – neue Programmiersprache für Anwendungen zur Bildverarbeitung

Mit der am MIT entwickelten, in C++ eingebetteten Domain Specific Language soll die effiziente Handhabung von Algorithmen beispielsweise für Raw-Camera-Pipelines, bilaterale Grids, Laplace-Filterung oder Bildaufteilung möglich sein.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 1 Min.
Von
  • Harald M. Genauck

Forscher des "Computer Science and Artificial Intelligence Laboratory" (CSAIL) am MIT (Massachusetts Institute of Technology) haben die neue Programmiersprache Halide vorgestellt. Sie soll die Entwicklung von Anwendungen zur Bildverarbeitung auf modernen Rechnersystemen erleichtern. Mit dieser eingebetteten DSL (Domain Specific Language) soll die effiziente Handhabung von Algorithmen beispielsweise für Raw-Camera-Pipelines, bilaterale Grids, Laplace-Filterung oder Bildaufteilung möglich sein.

Halide-Programme sollen nicht nur einfacher zu schreiben und zu lesen als Bildverarbeitungscode in anderen konventionellen Programmiersprachen sein. Vielmehr verspricht die automatisierte Code-Optimierung in Halide eine signifikant schnellere Ausführung (PDF), selbst gegenüber aufwendiger händischer Optimierung – die Forscher sprechen von bis zu einem Drittel kürzerem Code bei bis zu sechsfach höherer Verarbeitungsgeschwindigkeit. Einer der wesentlichen Faktoren dafür sei eine hochgradige Ausreizung der Parallelisierung von Einzelprozessen.

Als Einbettung in C++ läuft Halide auf Plattformen wie x86-64/SSE, ARM v7/NEON und CUDA. Unterstützt werden SIMD-Units, Multiple Cores und komplexe Speicherhierarchien. Der Compiler lässt sich auf Mac-OS X-Systemen (10.6 bis 10.8 setzt das Forscherteam selber ein) und Mainstream-Linux-Distributionen wie Ubuntu (12.04) installieren. Builds für Windows sollten zwar technisch möglich sein, sind jedoch von den Forschern weder versucht noch getestet worden. Halide ist Open Source und steht unter der MIT-Lizenz. Der Quellcode für den Compiler und für Halide selbst kann von GitHub heruntergeladen werden. (ane)