Vx é uma linguagem de programação de sistemas para computação heterogênea onde a memória de CPU, GPU, NPU e aceleradores faz parte do sistema de tipos. Uma thread de host que desreferencia um ponteiro de dispositivo é um erro de compilação, não uma falha de segmentação. Está disponível para macOS no Apple Silicon e Linux x86_64. A heterogeneidade pertence ao sistema de tipos, não ao tempo de execução. Onde os dados estão localizados faz parte do seu tipo. A maioria das linguagens trata o acelerador como infraestrutura: você escreve matemática, e um grande tempo de execução opaco decide como enviá-lo. Vx o trata como semântica. Um tensor fixado na memória de alta largura de banda do NPU tem um tipo diferente de um na memória DRAM do host, e a travessia entre eles requer um transfer() explícito — mesmo quando a fronteira de hardware é livre. Na memória unificada da Apple, essa transferência compila para quase nada. Ainda assim, é escrito, pois a localidade de dados deve ser provável pela leitura do código-fonte, e não pela análise do binário.
O compilador elimina a tipagem de espaço de endereços, a admissão de capacidade, os contratos de costura, os tipos lineares, a alcançabilidade de topologia e os problemas de diferenciação automática. A máquina é declarada, não assumida. A maioria dos compiladores codifica rigidamente um modelo de custo. Vx lê um. Um arquivo de máquina descreve a hierarquia de memória e a interconexão de uma peça real, e o compilador admite ou rejeita colocações com base nele. As unidades são conversões inteiras exatas, nunca de ponto flutuante: os prefixos SI são decimais (GB = 10^9), os prefixos IEC são binários (GiB = 2^30). Um número copiado de uma folha de especificações de um fornecedor significa o que a folha pretendia. O repositório fornece arquivos de máquina para H100, H200, B200, A100, MI300X, Apple M4 e nós de múltiplos GPUs — cada um citando suas fontes e marcando os números não verificados como não verificados.
Como é compilado: Uma interface frontal paralela orientada a dados. Cada símbolo, tipo nominal e variante monomorfizada é um identificador plano de 256 bits. Um sistema de tipos nominais mais o boxing obrigatório para tipos recursivos desacopla os módulos, de modo que o pipeline seja executado em paralelo nos núcleos sem mecanismo de consulta e sem contenção de bloqueio. A compilação percorre arrays planos em vez de árvores perseguidas por ponteiros. A mesma fonte compila para MLIR idêntico no nível de byte, seja construída sequencialmente ou em paralelo. Isso é afirmado na suíte de testes em vez de ser esperado — em escala de referência, com um thread, com quatro threads, e com o pool de threads totalmente removido do caminho, além de um corpus recompilado em processos novos para que cada execução obtenha sua própria semente de hash.
Perguntas frequentes: O que é Vx e o que o torna único?
Vx é uma linguagem de programação de sistemas para computação heterogênea onde os tipos de memória para CPU, GPU, NPU e aceleradores fazem parte do sistema de tipos. Isso evita erros em tempo de execução como falhas de segmentação ao detectar a desreferência de ponteiros de dispositivo em tempo de compilação. Ele trata os aceleradores como componentes semânticos em vez de infraestrutura, exigindo transferências explícitas de dados entre espaços de memória mesmo quando as fronteiras de hardware são livres.
Fonte: Hacker News · Resumido por HeadlinesBriefing