JACC v1.0: High-productivity Performance Portability in the LLVM-compiled Julia Language
Dieses Paper stellt JACC v1.0 vor, ein vereinheitlichtes Framework für die LLVM-kompilierte Sprache Julia, das hochproduktive, portable und hochperformante parallele Programmierung über diverse CPU- und GPU-Architekturen hinweg durch eine einzige Codebasis ermöglicht.
Originalarbeit lizenziert unter CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Moderne Supercomputer werden zunehmend zu komplexen Maschinen, die mit verschiedenen Arten von Prozessoren bestückt sind, welche Probleme mit unglaublicher Geschwindigkeit lösen können. Seit Jahrzehnten verlassen sich Wissenschaftler auf einige wenige Standard-Sprachen, um diesen Maschinen Anweisungen zu geben, aber da sich die Hardware weiterentwickelt, ist das Schreiben von Code für diese Systeme zu einer schwierigen, spezialisierten Aufgabe geworden. Forscher stellen oft fest, dass sie gezwungen sind, dieselben wissenschaftlichen Programme mehrfach neu zu schreiben – einmal für einen Typ Computerchip und ein weiteres Mal für einen anderen, nur um dasselbe Ergebnis zu erzielen. Dies erzeugt einen Engpass, bei dem die Zeit, die für die Übersetzung von Code für verschiedene Maschinen aufgewendet wird, die Zeit auffrisst, die für die eigentliche Entdeckung zur Verfügung steht. Das Ziel vieler auf diesem Gebiet ist es, einen Weg zu finden, einen einzigen Satz von Anweisungen zu schreiben, der auf jeder Maschine effizient funktioniert, sei es ein persönlicher Laptop oder ein massiver National-Supercomputer, ohne die komplizierten Details des Designs jedes einzelnen Prozessors kennen zu müssen.
Ein Team von Forschern vom Oak Ridge National Laboratory und anderen Institutionen hat ein neues Werkzeug namens JACC vorgestellt, das darauf abzielt, dieses Problem für Wissenschaftler mit der Programmiersprache Julia zu lösen. Julia ist eine Sprache, die darauf ausgelegt ist, so leicht lesbar wie eine mathematische Formel zu sein, während sie gleichzeitig so schnell läuft wie der effizienteste Maschinencode. Die neue JACC-Software fungiert als universeller Übersetzer für diese Sprache und ermöglicht es Wissenschaftlern, eine einzige Version ihres Codes zu schreiben, die entweder auf den zentralen Prozessoren eines Computers oder auf den spezialisierten Grafikchips, die für schwere Berechnungen verwendet werden, laufen kann. Die Forscher fanden heraus, dass dieser Ansatz nicht nur das Codieren einfacher macht; er ermöglicht es der Software auch, mit nahezu der gleichen Geschwindigkeit zu laufen wie Code, der spezifisch für jeden einzelnen Typ der Hardware geschrieben wurde. Das bedeutet, dass ein Wissenschaftler eine Simulation auf einem Laptop entwickeln und dann exakt dasselbe Programm auf einem Weltklasse-Supercomputer ausführen kann, ohne eine einzige Zeile des Codes zu ändern.
Der Kern dieser Errungenschaft liegt darin, wie JACC die Beziehung zwischen der Arbeit des Wissenschaftlers und der Computerhardware handhabt. In der Vergangenheit erforderte der Wechsel eines Programms von einem Typ Prozessor zu einem anderen oft ein kompleales Umschreiben, vergleichbar mit der Übersetzung eines Buches von Englisch nach Französisch und dann nach Japanisch, wobei jede Übersetzung das Risiko birgt, Nuancen oder Geschwindigkeit zu verlieren. JACC macht diese separaten Übersetzungen überflüssig. Es stellt einen Satz einfacher Befehle bereit, die dem Computer sagen, dass er eine Aufgabe ausführen soll, wie etwa das Berechnen von Werten über ein großes Zahlengitter hinweg, ohne dabei anzugeben, welcher spezifische Prozessor die Arbeit verrichten soll. Die Software erkennt automatisch, ob der Computer einen Chip von NVIDIA, AMD, Intel oder Apple besitzt, und leitet die Arbeit dann an den am besten geeigneten verfügbaren Prozessor weiter. Diese Flexibilität ermöglicht es Forschern, die leistungsstarken Grafikkarten moderner Laptops für interaktive Tests zu nutzen und dann nahtlos zu den massiven Prozessor-Arrays in Supercomputern für abschließende, groß angelegte Durchläufe zu wechseln.
Die Forscher demonstrierten die Effektivität dieses Systems durch Tests an einer Vielzahl realer wissenschaftlicher Probleme. Sie wandten das Werkzeug auf Simulationen der Fluiddynamik an, die verwendet werden, um zu modellieren, wie Luft über Flügel strömt oder wie Wasser durch Rohre fließt. In diesen Tests lief die Software auf verschiedenen Arten von Hardware mit einer Leistung, die der spezialisierten, für jede spezifische Maschine geschriebenen Code erreichte oder ihr sehr nahe kam. Beispielsweise erreichte das System bei der Simulation der Bewegung von Fluiden Geschwindigkeiten auf Grafikchips, die innerhalb weniger Prozent der bestmöglichen Leistung lagen, was beweist, dass die Bequemlichkeit eines einzigen Codebase nicht zu Lasten der Geschwindigkeit geht. Das Team zeigte auch, dass das System komplexe Aufgaben bewältigen kann, bei denen mehrere Prozessoren zusammen an einer einzigen Maschine arbeiten, eine Fähigkeit, die immer wichtiger wird, da Supercomputer immer mehr Leistung in weniger physische Einheiten packen.
Über die reine Geschwindigkeit hinaus öffnet das Werkzeug die Tür für komplexere wissenschaftliche Explorationen, die zuvor zu schwer zu verwalten waren. Die Forscher zeigten, dass JACC verwendet werden kann, um quantenmagnetische Materialien zu simulieren, ein Feld, das die Verfolgung des Verhaltens unzähliger winziger Teilchen erfordert. Durch die Verwendung dieses neuen Systems wurde eine Berechnung, die zuvor eine Stunde lang auf einem einzelnen Prozessor dauerte, auf nur wenige Sekunden reduziert, wenn sie auf einem Grafikchip ausgeführt wurde, und das unter Verwendung desselben Codes. Diese Art der Beschleunigung ist entscheidend für Felder wie die Quantenchemie und die Kernphysik, in denen Wissenschaftler Tausende von Variationen einer Simulation durchführen müssen, um zu verstehen, wie sich Materialien unter verschiedenen Bedingungen verhalten. Die Fähigkeit, diese Simulationen auf unterschiedlicher Hardware auszuführen, ohne den Code neu zu schreiben, bedeutet, dass sich Wissenschaftler mehr auf die Physik und weniger auf die Mechanik der Programmierung konzentrieren können.
Die Auswirkungen dieser Arbeit erstrecken sich auf die Zukunft, wie wissenschaftliche Software aufgebaut und gewartet wird. Die Forscher merkten an, dass das System darauf ausgelegt ist, neben bestehenden Werkzeugen zu funktionieren, die in der wissenschaftlichen Gemeinschaft verwendet werden, was einen schrittweisen Übergang statt einer vollständigen Überholung aktueller Projekte ermöglicht. Dies bedeutet, dass Labore das neue System Stück für Stück einführen können, indem sie spezifische Teile ihres Codes testen, bevor sie sich zu einer vollständigen Migration verpflichten. Die Software unterstützt auch fortgeschrittene Funktionen wie den gemeinsamen Speicher (Shared Memory), der es verschiedenen Teilen einer Berechnung ermöglicht, schnell auf Daten zuzugreifen, sowie die asynchrone Ausführung, die es dem Computer erlaubt, eine neue Aufgabe zu beginnen, bevor die vorherige vollständig abgeschlossen ist. Diese Funktionen sind entscheidend, um das Maximum aus den neuesten Supercomputern herauszuholen, die darauf ausgelegt sind, viele Aufgaben gleichzeitig zu bearbeiten.
Mit Blick auf die Zukunft sehen die Forscher in dieser Technologie ein Fundament für noch fortschrittlichere Anwendungen. Sie untersuchen, wie das System für die Entwicklung von Quantencomputern eingesetzt werden könnte, bei denen die Regeln der Physik ganz anders sind als bei den klassischen Computern, die wir heute verwenden. Die Fähigkeit, Code zu schreiben, der portabel und effizient ist, könnte Wissenschaftlern helfen, Algorithmen für diese zukünftigen Maschinen zu entwerfen und zu testen, noch bevor die Hardware vollständig bereit ist. Zusätzlich wird das System mit intelligenter Software integriert, die automatisch entscheiden kann, welcher Prozessor eine spezifische Aufgabe übernehmen soll, was die Belastung des menschlichen Programmierers weiter reduziert. Diese Kombination aus Benutzerfreundlichkeit und hoher Leistungsfähigkeit deutet auf eine Zukunft hin, in der die Barriere zwischen der Idee eines Wissenschaftlers und einer laufenden Simulation viel niedriger ist als heute.
Die in dieser Arbeit vorgestellte Leistung stellt einen bedeutenden Schritt nach vorn dar, um Hochleistungsrechnen einem breiteren Spektrum an Wissenschaftlern zugänglich zu machen. Indem sie ein Werkzeug bereitstellen, das die Lücke zwischen High-Level-Programmierung und Low-Level-Hardware-Details überbrückt, haben die Forscher einen Weg für effizientere und produktivere wissenschaftliche Entdeckungen geschaffen. Die Ergebnisse zeigen, dass es möglich ist, sowohl hohe Produktivität als auch hohe Leistung zu erzielen – zwei Ziele, die in der Vergangenheit oft im Widerspruch zueinander standen. Während sich die Welt hin zu noch komplexeren Rechensystemen bewegt, werden Werkzeuge wie JACC wahrscheinlich unverzichtbar werden, um das volle Potenzial dieser Maschinen auszuschöpfen und es Wissenschaftlern zu ermöglichen, Probleme anzugehen, die zuvor zu schwierig zu lösen waren.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.