Hasty Briefsbeta

双语

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项目并持续完善