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, sync und atomic sind Sprachbestandteile; locale und domain steuern die Verteilung.
  • Mason: Der Paketmanager für Chapel heißt Mason — mason new, mason build, mason run und mason test betreuen Projekte.
  • Umgebung: CHPL_HOME zeigt auf die Installation, CHPL_COMM wä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).