< 返回版块

binarytom 发表于 2024-03-30 17:20

krnl v0.1.0: 安全, 可移植, 高性能计算内核

一个安全,可移植且高兴能的计算内核。为了autograph开发的。

  • 与 CUDA 和 OpenCL 类似的功能。
  • 支持 GPU 和其他 Vulkan 1.2设备。
  • 通过 MoltenVK 支持 MacOS/iOS。
  • 内核是内联编写的,完全使用 Rust。
  • 主机上的缓冲区可以使用 Vecs 和slices访问。

文章链接,https://www.reddit.com/r/rust/comments/1bra5ep/krnl_v010_safe_portable_high_performance_compute/

Github 链接,https://github.com/charles-r-earp/krnl

autograph v0.2.0: 一个rust的机器学习库

用 krnl 实现的 GPGPU 内核。实现一个神经网络的示例:

#[derive(Layer, Forward)]
#[autograph(forward(Variable4, Output=Variable2))]
struct LeNet5 {
    conv1: Conv2,
    relu1: Relu,
    pool1: MaxPool2,
    conv2: Conv2,
    relu2: Relu,
    pool2: MaxPool2,
    flatten: Flatten,
    dense1: Dense,
    relu3: Relu,
    dense2: Dense,
    relu4: Relu,
    dense3: Dense,
}

impl LeNet5 {
    fn new(device: Device, scalar_type: ScalarType) -> Result<Self> {
        let conv1 = Conv2::builder()
            .device(device.clone())
            .scalar_type(scalar_type)
            .inputs(1)
            .outputs(6)
            .filter([5, 5])
            .build()?;
        let relu1 = Relu;
        let pool1 = MaxPool2::builder().filter([2, 2]).build();
        let conv2 = Conv2::builder()
            .device(device.clone())
            .scalar_type(scalar_type)
            .inputs(6)
            .outputs(16)
            .filter([5, 5])
            .build()?;
        let relu2 = Relu;
        let pool2 = MaxPool2::builder().filter([2, 2]).build();
        let flatten = Flatten;
        let dense1 = Dense::builder()
            .device(device.clone())
            .scalar_type(scalar_type)
            .inputs(16 * 4 * 4)
            .outputs(128)
            .build()?;
        let relu3 = Relu;
        let dense2 = Dense::builder()
            .device(device.clone())
            .scalar_type(scalar_type)
            .inputs(128)
            .outputs(84)
            .build()?;
        let relu4 = Relu;
        let dense3 = Dense::builder()
            .device(device.clone())
            .scalar_type(scalar_type)
            .inputs(84)
            .outputs(10)
            .bias(true)
            .build()?;
        Ok(Self {
            conv1,
            relu1,
            pool1,
            conv2,
            relu2,
            pool2,
            flatten,
            dense1,
            relu3,
            dense2,
            relu4,
            dense3,
        })
    }
}

let mut model = LeNet5::new(device.clone(), ScalarType::F32)?;
model.init_parameter_grads()?;
let y = model.forward(x)?;
let loss = y.cross_entropy_loss(t)?;
loss.backward()?;
model.update(learning_rate, &optimizer)?;

文章链接,https://www.reddit.com/r/rust/comments/1bra88r/autograph_v020_a_machine_learning_library_for_rust/

Github 链接,https://github.com/charles-r-earp/autograph

str0m 0.5.0 released

我们很高兴地宣布str0m 的0.5.0版本。这个版本是 str0m 日益成熟的证明,包含内部代码改进、 bug 修复和性能改进。

非常感谢来自社区的所有贡献者

文章链接,https://www.reddit.com/r/rust/comments/1bquf2v/str0m_version_050_has_been_released/

Github 链接,https://crates.io/crates/str0m


From 日报小组 TOM

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页