HeadlinesBriefing HeadlinesBriefing.com

Vx 语言:一种语言,适用于所有芯片

Hacker News •
×

Vx 是一种系统编程语言,用于异构计算,其中 CPU、GPU、NPU 和加速器内存是类型系统的一部分。主机线程解引用设备指针是编译错误,而不是段错误。它适用于苹果硅的 macOS 和 Linux x86_64。异构性应属于类型系统,而非运行时。数据所在位置是其类型的一部分。大多数语言将加速器视为基础设施:你编写数学运算,而一个庞大的不透明运行时决定如何传输它。Vx 将其视为语义。固定在 NPU 高带宽内存中的张量与主机 DRAM 中的张量具有不同的类型,而在它们之间进行转换需要显式的 transfer() — 即使硬件边界是自由的。在苹果的统一内存上,该转换编译后几乎什么也不做。它仍然被编写出来,因为数据局部性应通过读取源代码而非通过分析二进制来证明。

编译器排除了地址空间类型化、容量准入、接缝契约、线性类型、拓扑可达性和自动求导问题。机器是被声明的,而不是被假设的。大多数编译器硬编码了成本模型。Vx 读取一个。机器文件描述了真实部件的内存层次和互连,编译器根据它来接受或拒绝放置。单位是精确的整数转换,从不使用浮点数:SI 前缀是十进制的(GB = 10^9),IEC 是二进制的(GiB = 2^30)。从供应商表格复制的数字意味着表格所指的意思。仓库附带了 H100、H200、B200、A100、MI300X、Apple M4 和多 GPU 节机器文件 — 每个都引用了其来源,并将未验证的数字标记为未验证。

它是如何编译的:面向数据的并行前端。每个符号、名义类型和单态变体都是一个平坦的 256 位标识符。名义类型系统加上对递归类型的强制装箱解耦了模块,使得流水线可以在核心之间并行运行,没有查询引擎和没有锁竞争。编译遍历平坦数组而不是指针追踪的树。无论是串行还是并行构建,相同的源代码编译得到字节相同的 MLIR。这在测试套件中被断言,而不是仅仅希望 — 在基准规模下,单线程、四线程以及线程池完全移除路径的情况下,以及在全新进程中重新编译语料库,使每次运行都有自己的哈希种子。

常见问题:什么是 Vx 以及它有什么独特之处?

Vx 是一种系统编程语言,用于异构计算,其中 CPU、GPU、NPU 和加速器的内存类型是类型系统的一部分。这通过在编译时捕获设备指针解引用来防止运行时错误,如段错误。它将加速器视为语义组件而非基础设施,即使硬件边界是自由的,也要求在内存空间之间进行显式数据传输。

来源: Hacker News · 由HeadlinesBriefing整理摘要