C++11: Framework "Neu" freigegeben

"Neu" soll unter anderem beim Erstellen von Anwendungen, die mit künstlicher Intelligenz arbeiten, technischen Berechnungen und Compiler-Konstruktion helfen können. In einem Beispielprojekt mit neuronalen Netzen ließen sich wohl erste Erfolge zeigen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Seine Macher beschreiben "Neu" als ein C++-Framework, eine Sammlung von Programmiersprachen und Mehrzweck-Software, die sich als Ganzes für Artificial-Intelligence-Anwendungen und Systeme, Modellierungs- und Simulationsaufgaben, Compiler-Konstruktion und technische Berechnungen eignen soll. Das Projekt ist unter einer leicht abgewandelten BSD-Lizenz geschützt und soll unter Linux und Mac OS X kompilieren und laufen.

Neu will wohl besonders durch Eleganz und Einfachheit punkten, was unter anderem neue Typen wie nvar – ein Datentyp, der eine Vielzahl anderer wie Integer, Strings, Floats und Zeiger repräsentieren können soll – erreichen sollen. Zudem erweitert es gewöhnliche C++-Typen um neue Methoden und stellt Klassen zur nebenläufigen Programmierung zur Verfügung. Für symbolische mathematische Operationen steht eine Schnittstelle zu Mathematica zur Verfügung. Ein System zum Generieren von Code und spezielle Klassen für neuronale Netze sollen ebenfalls Arbeit abnehmen.

Für einige der Funktionen greift Neu auf die Compiler-Infrastruktur LLVM und ihr Frontend Clang zurück, unter anderem auch zur Beschleunigung (etwa durch die Nutzung des Just-in-time-Compilers bei den neuronalen Netzen), wie es derzeit auch in anderen Projekten häufiger der Fall ist. Auf der Website des Projekts lässt sich in einer Präsentation nachlesen, wie sich der Einsatz von Neu (besonders durch den LLVM JIT) positiv auf die Leistungsfähigkeit und Bearbeitungsgeschwindigkeit in einer mit neuronalen Netzen arbeitenden Anwendung auswirkte. Die hier erzielten Beschleunigungen um das Tausendfache im Vergleich zur ursprünglichen C++-Implementierung sind sicherlich nicht repräsentativ, können aber zumindest als Anhaltspunkt für die theoretischen Möglichkeiten in diesem speziellen Bereich dienen.

Weitere Informationen lassen sich dem User Guide entnehmen. Der Quellcode steht auf GitHub bereit. (jul)