Chapel (Cascade High Productivity Language) ist eine parallele Programmiersprache, die Cray im Rahmen des DARPA-HPCS-Programms entwickelte. Sie ist für produktive Parallelverarbeitung im großen Maßstab gedacht: vom Laptop über Cluster bis zum Supercomputer, inzwischen auch auf GPUs. Nebenläufigkeit und verteilte Speicher sind fest in die Sprache eingebaut, nicht als Bibliotheken nachgerüstet.
Erste Schritte
Der Compiler heißt chpl. Er übersetzt Chapel-Quellcode über ein LLVM- oder C-Backend in ein ausführbares Programm.
chpl hello.chpl -o hello
./hello
chpl --fast hello.chpl -o hello
--fast aktiviert die aggressiven Optimierungen (vergleichbar -O3) und deaktiviert Laufzeit-Checks. chpl --version zeigt die Compiler-Version, chpl --print-commands die ausgeführten Tool-Aufrufe.
Praxis-Tipps
- Multi-Locale: Bei verteilter Ausführung erzeugt chpl zwei Binaries — einen Launcher (
hello) und das eigentliche Programm (hello_real). Der Launcher reicht den Job an den Scheduler (z.B. Slurm) weiter. - Parallel-Konstrukte:
forall(datenparallel),coforall(taskparallel),begin,syncundatomicsind Sprachbestandteile;localeunddomainsteuern die Verteilung. - Mason: Der Paketmanager für Chapel heißt Mason —
mason new,mason build,mason runundmason testbetreuen Projekte. - Umgebung:
CHPL_HOMEzeigt auf die Installation,CHPL_COMMwählt das Kommunikations-Backend (z.B. gasnet oder ofi).
Verwandte Grundlagen: BCPL-Befehle (historische Wurzel der C-Sprachfamilie, auf der das C-Backend aufbaut), Ballerina-Befehle (Nebenläufigkeit ebenfalls im Sprachkern), Go-Befehle (parallele Sprachwelt mit Goroutinen).