HeadlinesBriefing HeadlinesBriefing.com

Vx Lenguaje: Un Lenguaje, Cada Chip

Hacker News •
×

Vx es un lenguaje de programación de sistemas para computación heterogénea donde la memoria de CPU, GPU, NPU y aceleradores es parte del sistema de tipos. Un subproceso de host que desreferencia un puntero de dispositivo es un error de compilación, no una falla de segmentación. Está disponible para macOS en Apple Silicon y Linux x86_64. La heterogeneidad pertenece al sistema de tipos, no al tiempo de ejecución. Dónde viven los datos es parte de su tipo. La mayoría de los lenguajes tratan al acelerador como infraestructura: escribes matemáticas, y un tiempo de ejecución grande y opaco decide cómo enviarlo. Vx lo trata como semántica. Un tensor fijado en la memoria de alto ancho de banda de NPU tiene un tipo diferente de uno en la memoria DRAM del host, y cruzar entre ellos requiere un transfer() explícito — incluso cuando el límite de hardware es gratuito. En la memoria unificada de Apple, esa transferencia se compila en casi nada. Todavía se escribe abajo, porque la localidad de datos debería ser demostrable leyendo el código fuente en lugar de perfilando el binario.

El compilador descarta la tipificación de espacio de direcciones, la admisión de capacidad, los contratos de costura, los tipos lineales, la alcanzabilidad de topología y los problemas de autodiferenciación. La máquina se declara, no se asume. La mayoría de los compiladores codifican rígidamente un modelo de costo. Vx lee uno. Un archivo de máquina describe la jerarquía de memoria y la interconexión de una pieza real, y el compilador admite o rechaza colocaciones en función de él. Las unidades son conversiones enteras exactas, nunca flotantes: los prefijos SI son decimales (GB = 10^9), los IEC son binarios (GiB = 2^30). Una cifra copiada de una hoja de especificaciones de un proveedor significa lo que la hoja quiso decir. El repositorio incluye archivos de máquina para H100, H200, B200, A100, MI300X, Apple M4 y nodos de múltiples GPU — cada uno citando sus fuentes y marcando las cifras no verificadas como no verificadas.

Cómo se compila: Un frontend paralelo orientado a datos. Cada símbolo, tipo nominal y variante monomorfizada es un identificador plano de 256 bits. Un sistema de tipos nominales más el boxeo obligatorio para tipos recursivos desacopla los módulos, de modo que la canalización se ejecuta en paralelo entre núcleos sin motor de consultas y sin contención de bloqueos. La compilación recorre arreglos planos en lugar de árboles perseguidos por punteros. El mismo origen compila a MLIR idéntico a nivel de byte ya sea que se construya en serie o en paralelo. Esto se afirma en el conjunto de pruebas plutôt que esperarse — a escala de referencia, en un hilo, en cuatro, y con el grupo de hilos completamente eliminado del camino, además de un corpus recompilado en procesos nuevos para que cada ejecución obtenga su propia semilla de hash.

Preguntas frecuentes: ¿Qué es Vx y qué lo hace único?

Vx es un lenguaje de programación de sistemas para computación heterogénea donde los tipos de memoria para CPU, GPU, NPU y aceleradores son parte del sistema de tipos. Esto previene errores en tiempo de ejecución como fallos de segmentación al capturar desreferencias de punteros de dispositivo en tiempo de compilación. Trata a los aceleradores como componentes semánticos en lugar de infraestructura, requiriendo transferencias explícitas de datos entre espacios de memoria incluso cuando los límites de hardware son gratuitos.

Fuente: Hacker News · Resumido por HeadlinesBriefing