HeadlinesBriefing HeadlinesBriefing.com

Vx Sprache: Eine Sprache, Jeder Chip

Hacker News •
×

Vx ist eine Systemprogrammiersprache für heterogene Berechnungen, bei der der Speicher von CPU, GPU, NPU und Beschleunigern Teil des Typsystems ist. Ein Host-Thread, der einen Gerätezeiger dereferenziert, ist ein Kompilierzeitfehler, kein Segfault. Es ist für macOS auf Apple Silicon und Linux x86_64 verfügbar. Heterogenität gehört ins Typsystem, nicht zur Laufzeit. Wo Daten gespeichert sind, ist Teil ihres Typs. Die meisten Sprachen behandeln den Beschleuniger als Infrastruktur: du schreibst Mathematik, und ein großer undurchsichtiger Laufzeit entscheidet, wie es versendet wird. Vx behandelt es als Semantik. Ein Tensor, der im hochbandbreitenspeicher des NPU fixiert ist, hat einen anderen Typ als einer im Host-DRAM, und das Überqueren zwischen ihnen erfordert eine explizite transfer() — selbst wenn die Hardwaregrenze frei ist. Auf Apples einheitlichem Speicher kompiliert dieser Transfer zu fast nichts. Er wird dennoch geschrieben, denn Datenlokalität sollte durch Lesen des Source-Codes nachweisbar sein, nicht durch Profilen des Binaries.

Der Compiler schließt Adressraum-Typisierung, Kapazitätszulassung, Nahtverträge, lineare Typen, Topologie-Erreichbarkeit und Autodiff-Probleme aus. Die Maschine wird erklärt, nicht angenommen. Die meisten Compiler hartkodieren ein Kostenmodell. Vx liest eines. Eine Maschinedatei beschreibt die Speicherhierarchie und Interconnect eines echten Teils, und der Compiler nimmt oder lehnt Platzierungen dagegen auf. Einheiten sind exakte Ganzzahlkonvertierungen, niemals Fließkommazahlen: SI-Präfixe sind dezimal (GB = 10^9), IEC-Präfixe sind binär (GiB = 2^30). Eine von einem Datenblatt abgezogene Zahl bedeutet, was das Blatt meinte. Das Repository liefert Maschinedateien für H100, H200, B200, A100, MI300X, Apple M4 und Multi-GPU-Knoten — jeweils mit Quellenangabe und Kennzeichnung unverifizierter Zahlen als unverifiziert.

Wie es kompiliert wird: Eine datenorientierte parallele Frontend. Jedes Symbol, nominaler Typ und monomorphisierte Variante ist ein flacher 256-Bit-Identifier. Ein nominales Typsystem plus verpflichtendes Boxing für rekursive Typen entkoppelt Module, sodass die Pipeline parallel über Kerne läuft ohne Abfrage-Engine und ohne Lock-Konkurrenz. Die Kompilierung läuft über flache Arrays statt über von Zeigern verfolgte Bäume. Der gleiche Quelle kompiliert zu byte-identischem MLIR, egal ob sie seriell oder parallel gebaut wird. Dies wird im Testsuite behauptet, nicht einfach hoffen — bei Benchmark-Skala, bei einem Thread, bei vier Threads, und wenn der Thread-Pool komplett vom Weg genommen wird, plus ein Korpus, der in frischen Prozessen neu kompiliert wird, sodass jeder Lauf seinen eigenen Hash-Seed erhält.

Häufig gestellte Fragen: Was ist Vx und was macht es einzigartig?

Vx ist eine Systemprogrammiersprache für heterogene Berechnungen, bei der der Speicher von CPU, GPU, NPU und Beschleunigern Teil des Typsystems ist. Dadurch werden Laufzeitfehler wie Segfaults verhindert, indem Gerätezeiger-Dereferenzierungen zur Kompilierzeit erfasst werden. Es behandelt Beschleuniger als semantische Komponenten statt als Infrastruktur, wodurch explizite Datenübertragungen zwischen Speicherbereichen erforderlich sind, selbst wenn die Hardwaregrenzen frei sind.

Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing