
xc 编译器发布:同一份源码可编译到 GPU 和 CPU
来源标题:Xc: Compile the same source for GPUs and CPUs
xc 是一种异构数据并行语言,xcc 编译器能把同一份源码编译到多核 CPU、GPU(Metal、CUDA、Vulkan、WebGPU)乃至多台不同厂商的 GPU 上运行,并自动保留最快的结果。内核由 xcc 自行生成并打包进可执行文件,因此构建时不需要 GPU 工具包。文档、基准测试和下载见 compile-xc.org。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
xc 是一门异构数据并行语言。用 xc 或 C 写一个普通的循环,xcc 就会把它跑遍每个 CPU 核心,通过 Metal、CUDA、Vulkan 或 WebGPU 跑在 GPU 上,同时跑在多块来自不同厂商的 GPU 上,或者跑在另一台机器的 GPU 上,并保留其中最快的那一个。这些 kernel 由 xcc 自己生成,并随可执行文件一起携带,所以构建时不需要 GPU 工具链。文档、基准测试和下载地址在 https://compile-xc.org。本仓库包含编译器、它的 GUI 框架,以及用它们构建的工具和应用程序。
这是一个仓库,但它是按几条相互独立的流来推进的,每条流都待在自己的目录树里。无论是来自外部贡献者还是来自各条流的 pull request,都让 main 始终保持门禁:private/ 不属于仓库的一部分。它被 git 忽略,存放着工作规则、关于未修复和已修复 bug 的笔记,以及其他从不公开的材料。它下面的任何内容都不会被提交。
先构建并安装编译器(见 compiler/USAGE.md),然后针对它构建你正在处理的任何其他目录树。依赖于你机器的设置,比如 Linux 测试主机或 GEM 桌面源码的位置,放在仓库根目录的 build.env 里。把 build.env.template 复制为 build.env,并填入你需要的值。build.env 被 git 忽略。留空的变量会关闭需要它的那一步。
欢迎 pull request。CONTRIBUTING.md 说明了变更如何进入 main:你只需签署一次的贡献者许可协议、变更放在哪里,以及如何用已安装的发行版进行构建和测试。所有参与者都同意遵守行为准则。安全问题按 SECURITY.md 所述私下报告。
网站上的每一个基准测试数字都是在项目购买的硬件上测得的,而对数据并行工作最重要的机器都很昂贵。借用或捐赠会直接投入到编译器中:一个在该设备上调优的后端和运行时,通过每次发布都在该设备上测试来保持可用,其数字与其他数字一起公布。我们最希望得到的是:如果你制造或销售这类硬件,并希望 xc 在其上运行良好,请写信到 xc@oobergeek.net。
很抱歉,我在走到这一步的大约 3000 次 checkin 中没能很好地避免混入私人细节,而回头修改一切的想法实在没什么吸引力。所以,重新开始,从现在起我会更加谨慎……
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。