SPERLI
SPERLI steht für Simple Parallel Execution over Remote Links Interface. Ein Job besteht aus mehreren Rängen. Jeder Rang ist ein Prozess auf einer der angegebenen Maschinen, und die Ränge schicken sich gegenseitig Nachrichten mit einem Tag. SPERLI ist Teil der Standardbibliothek von Hilde. Quelltext der Sprache: github.com/heikozim/hilde.
- Jede Verbindung läuft über TLS 1.3 mit Zertifikaten auf beiden Seiten. Ein Rang meldet sich mit einem Token an, das der Launcher signiert hat. Die Schlüssel eines Jobs sind zusammengesetzte Signaturen aus ML-DSA-44 und Ed25519.
- Der Launcher,
hilde-launcheroderhilde run -n N --hosts DATEI programm, startet die Ränge auf den Maschinen einer Liste, auf Wunsch mit Checkpoints und Neustarts. - Kollektive Operationen: Barrier, Broadcast, Reduce, Allreduce, Gather und Scatter.
- Checkpoints mit signierten COMMIT-Dateien, damit ein Job nach einem Abbruch weiterlaufen kann.
- Das Übertragungsprotokoll ist auf Englisch und Deutsch dokumentiert, mit Testvektoren (siehe SPERLI-Protokoll).
- Fehler eines Jobs haben Codes ab H1601.
- Eine C-Schicht, libsperli, und darauf ein schlankes Go-Paket mit cgo, mit Benchmark und Beispiel.
Das Repository enthält zwei Beispiele: die Summe einer Tabelle mit 3.000.000 Zeilen, verteilt auf die Ränge eines Jobs, in Hilde und in Go, sowie eine Messung von Latenz und Bandbreite zwischen zwei Rängen über TLS 1.3.
Siehe auch MIRCO.