#tensor #gpu #compute

tensor_compute

Rust 的张量计算库

1 个不稳定版本

0.1.0 2020年8月19日

#102 in #tensor

MIT/Apache

2MB
2.5K SLoC

Rust 2.5K SLoC // 0.1% comments GLSL 278 SLoC // 0.1% comments

包含 (Mach-o exe, 8.5MB) src/glslc

Rust 张量计算

这是一个个人项目,旨在学习 WebGPU 计算,专注于
机器学习应用。

目前功能

  • 选择使用哪个 GPU(如果系统中有多个)
  • 克隆
  • (批处理) 矩阵乘法
  • ReLU
  • 转置
  • 填充
  • 比较
  • 使连续
  • 切片(需要更多设计/工作)
  • 索引(需要更多设计/工作)
  • 创建视图张量

进行中

逐元素张量 - 张量操作

  • 加法
  • 减法
  • 乘法

标量 - 张量操作

  • 加法
  • 减法
  • 乘法

工作示例

fn main() {
    println!("Running in {:?}", GpuStore::get_default().info());
    let ma = Tensor::from_data_and_shape(vec![1., 2., 3., 4., 5., 6., 7., 8.], vec![2, 2, 2]);
    let mb = Tensor::from_data_and_shape(vec![2., 3., 4., 5.], vec![2, 2]);
    let result = ma.matmul(&mb);
    println!("{:?}", result);
    /*
    Running in AdapterInfo { name: "AMD Radeon Pro 560", vendor: 0, device: 0, device_type: DiscreteGpu, backend: Metal }
    Shape: [2, 2, 2]
    [[[ 10  13 ]
      [ 22  29 ]]

     [[ 34  45 ]
      [ 46  61 ]]]
    */
}

短期目标

  • 索引和赋值应该如何工作?
  • 完成公共 API 文档
  • 更多测试

依赖项

~10–25MB
~373K SLoC