Leistungsstarke und produktive parallele Programmierung mit Chapel: Aufbau einer Open-Source-Sprache, die von Laptops bis zu Supercomputern reicht

TL; DR: Chapel ist eine parallele Programmiersprache, die entwickelt wurde, um die Computerproduktivität zu steigern. Sie beschleunigt die Entwicklung, indem verteilte Systeme mithilfe einer skalierbaren, portablen und natürlichen Syntax programmiert werden können. Entwickler und Entwickler der Open-Source-Sprache streben danach, dass die Sprache die Lücke zwischen traditionellen Fortran-, C- und C ++ – Codierern und Programmierern schließt, die modernere Sprachen wie Java, Python oder MATLAB bevorzugen. Der Sprachmanager Tom MacDonald erzählte uns von den Vorteilen, der Hintergrundgeschichte und der Zukunft der Sprache.


Während die Anwendungen von Datenanalyse, maschinellem Lernen und wissenschaftlichem Rechnen weiter explodieren, passen sich die Forscher schnell an neue Plattformen und Tools an und nutzen Möglichkeiten für größere Simulationen, mehr Daten und eine höhere Rechenproduktivität.

Anstatt sich als Ingenieure weiterzubilden, können sich die Forscher stattdessen Chapel zuwenden, einer aufstrebenden Open-Source-Sprache, die das parallele Rechnen vereinfacht, indem sie Funktionen und Fähigkeiten, die für das skalierbare Rechnen von entscheidender Bedeutung sind, in eine einzige Programmiersprache integriert.

“Ein Wissenschaftler möchte in der Lage sein, Wissenschaft auszudrücken”, sagte der Sprachmanager Tom MacDonald. „Sie möchten nicht die Details einer komplizierten Computerarchitektur und das Programmieren für dieses spezielle Setup lernen müssen, da es in nicht allzu ferner Zukunft nur etwas Neues geben wird. Aus diesem Grund halten wir Chapel für einen besseren Ansatz für die parallele Programmierung als den heutigen. “

Erstellen einer Sprache zur Vereinfachung der parallelen Programmierung

Beim parallelen Rechnen werden Berechnungen und Prozesse gleichzeitig durchgeführt. Komplexe Probleme werden in kleinere Aufgaben unterteilt, die auf separaten Prozessoren ausgeführt werden können.

Cray Inc., ein auf Supercomputing, Datenspeicherung und Big-Data-Analyse spezialisiertes Unternehmen, begann 2003 mit der Entwicklung von Chapel im Rahmen eines Programms für hochproduktive Computersysteme, das von der Forschungsagentur für fortgeschrittene Projekte des US-Verteidigungsministeriums gesponsert wurde. Das Programm forderte Anbieter wie Cray auf, die Produktivität von Supercomputern zu verbessern.

Bild von Tom MacDonald, Sprachmanager von Chapel

Der Sprachmanager Tom MacDonald beaufsichtigt ein Team von 13 Entwicklern, die an der Open-Source-Sprache arbeiten.

Cray nannte das Projekt Cascade nach der Bergkette östlich der Unternehmenszentrale in Seattle, Washington. Chapel, eine ungefähre Abkürzung für Cascade High Productivity Language, erhielt mit seiner Proof-of-Concept-Implementierung im Rahmen des Programms ermutigendes Benutzerfeedback. Als das Forschungsprogramm 2012 endete, baute Cray die Sprache weiter aus und verdoppelte die Größe des Teams. Da die Kernverarbeitungsgeschwindigkeiten effektiv ausgeschöpft werden, suchen die Hersteller nun nach Leistungssteigerungen durch Parallel-Computing und Multi-Core-Prozessoren.

Laut Tom begann das traditionelle parallele Rechnen mit Legacy-Sprachen wie Fortran, C und C ++. Entwickler würden dann Anweisungen und Bibliotheken einfügen, um die Kommunikation zwischen den verschiedenen Prozessoren zu koordinieren.

“Was Chapel versucht, ist, all das in eine Programmiersprache zu integrieren, damit Sie sich nicht um die unterschiedlichen Eigenheiten der verschiedenen Teile kümmern müssen, die Sie möglicherweise zum Schreiben eines traditionellen Parallelprogramms verwenden müssen”, sagte er.

Eine einfache Parallelschleife in Chapel sieht beispielsweise folgendermaßen aus:

1
2

für alle ich in 1..100 tun

  writeln ("Hallo von der Iteration i");

Programmierer können Chapel-Programme online kompilieren und ausführen, ohne etwas zu installieren, oder in der Dokumentation nach Hello World-Beispielen oder Sprachprimern suchen. Die Iterationen der Schleife werden parallel ausgeführt, wobei alle Prozessoren auf Ihrer Workstation oder Ihrem Rechenknoten verwendet werden. Mit einigen geringfügigen Änderungen könnte dieselbe Schleife die Arbeit auf alle Knoten eines Clusters oder Supercomputers verteilen.

Drei Kapellenvorteile für Produktivität und Portabilität

Laut Tom wurde Chapel von Anfang an speziell für das parallele Rechnen in einer Vielzahl von Maßstäben und Systemen entwickelt.

“Es soll nicht nur die High-End-Computer ansprechen, sondern auch die Parallelität, die auf jedem Consumer-Desktop-Computer verfügbar ist”, sagte er. “Unserer Meinung nach gibt es das nicht wirklich, und Chapel ist die erste Sprache, die wirklich versucht, dies auf integrierte Weise zu tun.”

1. Plattformübergreifende Kompatibilität gewährleistet Skalierbarkeit

Um die Portabilität zu gewährleisten, isoliert das Chapel-Team architekturspezifische Komponenten in so genannte Gebietsschemas, die ausgetauscht werden können, um unterschiedliche Konfigurationen zu erreichen. Die Programmiersprache läuft unter macOS, verschiedenen Linux-Varianten und Cygwin oder Bash PowerShell in Windows 10 sowie unter Amazon Web Services und der Cloud.

“Wenn Sie zu genau wissen, wie Sie auf eine bestimmte Architektur abzielen, wird es eine Menge Arbeit bedeuten, diese auf eine neue Architektur zu portieren”, sagte er. “Die Absicht ist es, eine Sprache zu haben, die Sie auf Ihrem Multi-Core-Laptop ausführen können, dasselbe Programm zu verwenden und es auf ganz natürliche Weise auf einen viel größeren Computer zu skalieren.”

2. Effiziente Codierung liefert Rapid Prototyping

Chapel zieht häufig Vergleiche mit Python, um eine hochproduktive Sprache mit leicht beschreibbarem und lesbarem Code zu sein, mit der Entwickler schnell verwendbare und testbare Programme erstellen können. Im Gegensatz zu mehreren früheren parallelen Sprachen unterstützt Chapel jedoch eine vom Team als Multi-Resolution-Philosophie bezeichnete Philosophie, mit der Programmierer sehr abstrakten Code schreiben und schrittweise weitere Details hinzufügen können.

“Sie können sehr schnell Prototypen erstellen”, sagte Tom. “Mit sehr wenigen Codezeilen erhalten Sie etwas, das Ihnen eine Vorstellung davon gibt, ob Sie erfolgreich sein werden. Anschließend können Sie zusätzliche Details und Spezifikationen für die Zuordnung der Berechnung zum System hinzufügen, um die Skalierbarkeit und Leistung zu verbessern. “

3. Natürliche Syntax spart Entwicklern Zeit

Bei der Erstellung der parallelen Programmiersprache haben die Entwickler die Syntax von Chapel aufgrund der allgegenwärtigen Beliebtheit der Sprache lose nach C modelliert. Chapel enthält auch viele Funktionen aus sequentiellen Sprachen, um die Produktivität zu steigern, wie z. B. den Deklarationsstil von links nach rechts von Modula.

Typinferenz, Iteratorfunktionen, objektorientierte Programmierung und eine Vielzahl von Array-Typen kombinieren laut Tom die Produktivität von Python mit der Leistung von C. “Sie können natürlich sehr große Datenstrukturen ausdrücken, die sich auf natürliche Weise über ein verteiltes Computersystem ausbreiten können”, sagte er.

Der Chefingenieur Brad Chamberlain sagte, dass Programmierer mit unterschiedlichem Hintergrund in Chapel Attribute finden, die sie mögen. Zum Beispiel schätzen Fortran-Programmierer die mehrdimensionalen Arrays von Chapel, während Python-Codierer die Einbeziehung von Iteratoren genießen.

“Manchmal fällt es uns schwer, eine neue Sprache zu entwickeln, anstatt eine bestehende zu erweitern, aber das hat für uns gut funktioniert”, sagte er. “Wir waren nicht verpflichtet, Gepäck in vorhandenen Sprachen zu verwenden, die das parallele Rechnen behindern und gleichzeitig attraktive Funktionen auswählen können.”

Das Engagement eines Supercomputer-Unternehmens für Open-Source-Programmierung

Während des ersten Forschungsprogramms etablierte Cray die Sprache als öffentlich verfügbares Open-Source-Projekt, indem er Chapel in ein SourceForge-basiertes Repository verlegte.

“Wir waren nie etwas, das proprietär sein sollte”, sagte Tom. “Wir wollen in den verschiedenen von uns unterstützten Architekturen weitreichend und allgegenwärtig sein.”

Neben der Verringerung der Hindernisse für die Einführung zog die Etablierung von Chapel als Open-Source-Technologie externe Benutzer und Mitwirkende an. Der Chapel Implementers and Users Workshop (CHIUW) tritt jährlich zusammen, um neue Wege zur Verbesserung der Sprache zu erkunden, während die Chapel Users Group (CHUG) jedes Jahr eine gesellschaftliche Veranstaltung oder Happy Hour für die Community von Anwendern, Enthusiasten und Entwicklern veranstaltet, die daran interessiert sind Kapelle.

Das Projekt wird jetzt auf GitHub gehostet und unter der Apache-Lizenz, Version 2.0, vertrieben. Bei Cray beaufsichtigt Tom ein Team von 13 Entwicklern, die sich der Härtung von Chapel für den weit verbreiteten Einsatz in Produktionsumgebungen widmen.

“Unser gesamter Code ist verfügbar und wir bemühen uns, die Community einzubeziehen”, sagte Tom. “Wir bekommen viele gute Ideen und sogar Entwicklungshilfe von der breiteren Community.”

Geduld und ein 5-Jahres-Plan, der zu einer ausgereiften, kommenden Version 2.0 führt

Wie bei jedem Projekt zu erwarten ist, das darauf abzielt, etwas zu erreichen, was noch nie zuvor getan wurde, hat das Chapel-Team alle möglichen Herausforderungen bewältigt und bewältigt, sagte Tom.

Nach dem ersten Projekt startete das Chapel-Team ein Fünfjahresprogramm, um die Sprache vom Proof-of-Concept zur Produktion zu bringen. Innerhalb eines Jahres erwarten Tom und das Team eine ausgereifte Version von Chapel, die den Benutzern für verschiedene Projekte und Systeme zur Verfügung steht.

“Es geht darum, sich die Zeit zu nehmen, es richtig zu machen”, sagte Tom. “Wir haben vor vielen Jahren mit einem Prototyp begonnen, aber wir haben hart daran gearbeitet, eine viel ausgereiftere Version der Chapel-Sprache und des Chapel-Compilers zu erstellen.”

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me