tracel-ai/cubecl

Multi-platform high-performance compute language extension for Rust.

解决的问题

CubeCL 解决了在多种硬件上编写高性能计算内核的困难。传统上,开发者必须为不同的 GPU(NVIDIA 的 CUDA、AMD 的 HIP、Apple 的 Metal)和 CPU 分别编写代码,或者使用可能牺牲峰值性能的高级抽象。CubeCL 允许开发者用 Rust 编写单一内核,该内核会被转换为在多个后端上最优运行的代码。

工作原理

CubeCL 作为一个 Rust 语言扩展和即时(JIT)编译器。它使用 #[cube] 宏将 Rust 函数重写为一种名为 pliron 的中间表示(IR),然后将其编译为 PTX、MSL、SPIR-V 或 WGSL 等平台特定语言。

它将硬件并行性组织为四个层级:

  • Unit:单个寄存器(线程/调用)。
  • Plane:同步指令(瓦片/子组)。
  • Cube:共享内存(块/工作组)。
  • Hypercube:跨多个立方体的全局内存。

适用人群

专为开发底层计算内核、科学计算库和深度学习框架(如 Burn)的开发者设计,他们希望在不维护多个独立代码库的情况下,实现对不同 GPU/CPU 供应商的最大硬件性能。

主要亮点

  • 单一代码库:用 Rust 编写内核,并部署到 CUDA、HIP、Metal、Vulkan、WebGPU 和 CPU。
  • 自动向量化:使用 Vector<F, N> 类型,宽度 N 在运行时确定,自动降级为原生 SIMD 指令。
  • Comptime:允许在首次编译时修改编译器 IR,以针对特定硬件指令、形状或循环展开对内核进行专门化。
  • 自动调优:在运行时对不同内核配置进行基准测试,自动选择当前设备上性能最佳的版本。
  • Rust 集成:内核由 Rust 编译器进行类型检查和借用检查,并可使用 cargo test 在 CPU 上进行测试。

相关

  • 项目
  • Dispatch
  • Dispatch
  • 项目
  • 项目