HeadlinesBriefing HeadlinesBriefing.com

Vx Langage : Un Langage, Chaque Puce

Hacker News •
×

Vx est un langage de programmation système pour le calcul hétérogène où la mémoire du CPU, GPU, NPU et des accélérateurs fait partie du système de types. Un thread hôte qui déréférence un pointeur de périphérique est une erreur de compilation, pas une erreur de segmentation. Il est disponible pour macOS sur Apple Silicon et Linux x86_64. L'hétérogénéité appartient au système de types, pas au runtime. Où les données se trouvent fait partie de leur type. La plupart des langages considèrent l'accélérateur comme une infrastructure : vous écrivez des mathématiques, et un gros runtime opaque décide comment l'envoyer. Vx le considère comme de la sémantique. Un tensor épinglé dans la mémoire à haute bande passante du NPU a un type différent d'un dans la mémoire DRAM de l'hôte, et passer de l'un à l'autre nécessite un transfert explicite() — même lorsque la frontière matérielle est libre. Sur la mémoire unifiée d'Apple, ce transfert se compile en presque rien. Il est néanmoins écrit, car la localité des données devrait être démontrable en lisant le code source plutôt qu'en profilant le binaire.

Le compilateur élimine la typage d'espace d'adresses, l'admission de capacité, les contrats de couture, les types linéaires, l'accessibilité de topologie et les problèmes de différenciation automatique. La machine est déclarée, pas supposée. La plupart des compilateurs codent en dur un modèle de coût. Vx en lit un. Un fichier machine décrit la hiérarchie de mémoire et l'interconnexion d'une pièce réelle, et le compilateur admet ou rejette les placements par rapport à celui-ci. Les unités sont des conversions entières exactes, jamais des flottants : les préfixes SI sont décimaux (GB = 10^9), les préfixes IEC sont binaires (GiB = 2^30). Un chiffre copié depuis une fiche technique d'un fournisseur signifie ce que la feuille voulait dire. Le dépôt fournit des fichiers machine pour H100, H200, B200, A100, MI300X, Apple M4 et des nœuds multi-GPU — chacun citant ses sources et marquant les chiffres non vérifiés comme non vérifiés.

Comment ça compile : Une interface parallèle orientée données. Chaque symbole, type nominal et variante monomorphisée est un identifiant plat de 256 bits. Un système de types nominaux plus un boxing obligatoire pour les types récursifs découple les modules, permettant au pipeline de s'exécuter en parallèle sur les cœurs sans moteur de requêtes et sans compétition pour les verrous. La compilation parcourt des tableaux plats plutôt que des arbres suivis par pointeurs. La même source compile en MLIR identique au niveau des octets, qu'elle soit construite en série ou en parallèle. Cela est affirmé dans la suite de tests plutôt qu'espéré — à l'échelle de référence, avec un fil, avec quatre fils, et avec le pool de threads entièrement retiré du chemin, plus un corpus recompilé dans de nouveaux processus afin que chaque exécution ait sa propre graine de hash.

FAQ : Qu'est-ce que Vx et qu'est-ce qui le rend unique ?

Vx est un langage de programmation système pour le calcul hétérogène où les types de mémoire pour le CPU, GPU, NPU et les accélérateurs font partie du système de types. Cela évite les erreurs d'exécution comme les erreurs de segmentation en détectant la déréférencement des pointeurs périphériques à la compilation. Il traite les accélérateurs comme des composants sémantiques plutôt que comme de l'infrastructure, nécessitant des transferts de données explicites entre les espaces de mémoire même lorsque les frontières matérielles sont libres.

Source: Hacker News · Résumé par HeadlinesBriefing