CubeCL: GPU Kernels in Rust for CUDA, ROCm, and WGPU
a year ago
- #High Performance Computing
- #Rust
- #GPU Programming
- CubeCL允许在Rust中进行GPU编程,通过零成本抽象实现高效计算内核
- 支持函数、泛型、结构体,以及对特征(trait)和方法的部分支持
- 内核通过`#[cube]`属性标注以实现GPU执行
- 提供了在GPU上计算GELU(高斯误差线性单元)的示例
- 支持多种GPU运行时:WGPU(跨平台)、CUDA(NVIDIA)、ROCm/HIP(AMD - 开发中)
- 计划通过Cranelift实现支持SIMD的JIT CPU运行时
- 自动向量化、编译时优化和自动调优以提升性能
- 针对吞吐量优化的内存管理,支持缓冲区复用
- 包含线性代数组件(如优化矩阵乘法)
- 未来计划支持卷积、随机数生成和快速傅里叶变换(FFT)
- 两步编译流程:使用`syn`库解析 + 中间代码(IR)生成
- 基于立方体(cuboid)的拓扑结构,通过3D表示映射硬件
- 对比CubeCL变量与CUDA、WebGPU、Metal的等效概念
- 编译时特性支持运行时IR修改以实现优化
- 自动调优在运行时对内核进行基准测试以获得最佳性能
- CubeCL目前处于Alpha阶段,应用于Burn项目并持续完善