Menü
Developer

Programmiersprache: Julia profiliert sich beim High Performance Computing

Waren bislang C/C++ und Fortran im High-Performance Computing gesetzt, mag es zukünftig sein, dass die noch junge Programmiersprache Julia hier auch ein Wörtchen mitreden kann. Erste Erfahrungen US-amerikanischer Forscher legen das zumindest nahe.

Von
vorlesen Drucken Kommentare lesen 44 Beiträge
Programmiersprache: Julia profiliert sich im HPC-Umfeld

Forscher einiger in die Entwicklung der Programmiersprache Julia involvierten Organisationen haben ein neues Verfahren für die Parallelprogrammierung entwickelt, das den Prozess zur Katalogisierung astronomischer Objekte drastisch beschleunigt haben soll. Unter Einsatz von knapp 8200 Intel-Xeon-Prozessoren des neuen Cori-Supercomputers des Berkeley Lab habe konkret ein 225facher Anstieg der Performance bei der Analyse des astronomischen Bildmaterials erreicht werden können, heißt es in einer auf HPCWire zu findenden Pressemitteilung der in die Forschung involvierten Parteien Julia Computing, UC Berkeley, Intel, National Energy Research Scientific Computing Center (NERSC), Lawrence Berkeley National Laboratory und JuliaLabs@MIT.

Der für diese Analyse verwendete und im in Berkeley Lab entwickelte Code läuft unter dem Namen Celeste. Er verwendet die Bayessche Statistik, um die Lichtquellen am Himmel mathematisch zu lokalisieren und zu charakterisieren. Als er zum ersten Mal 2015 veröffentlicht wurde, war Celeste auf die Ausführung des meist sehr großen Bildmaterials auf einzelne Knoten beschränkt. Im Fall der Sloan Digital Sky Survey (SDSS), die dem Datensatz dieser Forschungen entspricht, wird diese Analyse zur Identifizierung von Lichtpunkten über fast fünf Millionen Bilder von jeweils etwa 12 Megabyte – zusammengerechnet also rund 55 Terabyte – durchgeführt.

Mithilfe der neuen parallelen Implementierung erhöhte das Forschungsteam die Geschwindigkeit seiner Analyse erheblich. Die Verarbeitung von mehr als 20.000 Bilder (= 250 Gigabyte) erfolgte mit einem Anstieg von mehr als drei Größenordnungen im Vergleich zu früheren Arbeiten.

Vor dem Hintergrund der Effizienz ist Code auf Supercomputer bislang vorrangig in C/C++ und Fortran geschrieben. Mit dem Celeste-Beispiel lasse sich nun jedoch belegen, so Pradeep Dubey, Intel Fellow und Director des Parallel Computing Labs bei Intel, dass man einen Schritt näher gekommen sei, um Julia auch ins Gespräch zu bringen. Für die Sprache spreche, dass sie unter Nutzung von hybrider Parallelität – also nicht nur Prozesse, sondern auch Threads – eine ausgezeichnete Effizienz bewiesen habe. Das sei mit den Konkurrenten Python oder R derzeit noch nicht möglich.

Die involvierten Forscher haben ihre Erfahrungen in einem frei zugänglichen Artikel beschrieben.

Julia ist eine dynamische, funktionale Programmiersprache, die vor allem auf technische Berechnungen und damit wissenschaftliche Projekte zielt, gleichzeitig aber auch als General Purpose Language zum Einsatz kommen will. Die Macher der Sprache beschrieben ihre Ziele einst so, dass sie eine quelloffene, homoikonische Sprache mit einer großzügigen Lizenz, der Geschwindigkeit von C, der Dynamik von Ruby, Makros, wie sie in Lisp zu finden sind, und mathematischen Notationsmöglichkeiten wie in Matlab schaffen wollten.

Darüber hinaus soll sie weitläufig einsetzbar wie Python und gut für statistische Berechnungen wie R sein, und Strings sollen sich ohne Probleme wie in Perl bearbeiten lassen. Um besonders komplexe Rechnungen ausführen zu können, soll Julia auch die Kraft der verteilten Rechnung nutzen können und zudem sollte sie sich neuen Nutzern einfach erschließen.

Dass Julia durchaus eine Sprache ist, die es im Auge zu behalten gilt, zeigen im Übrigen nicht nur die bekannten Sprach-Rankings, sondern auch die stetig wachsende Gemeinschaft rings um die Sprache: Das Ökosystem umfasst mittlerweile knapp 1200 registrierte Pakete, die sich über die Rubrik Packages der Sprachwebsite finden lassen. Erst kürzlich war sie in Version 0.5 erschienen. (ane)