【Rust日报】2024-03-30 krnl v0.1.0: 安全, 可移植, 高性能计算内核

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 内核。实现一个神经网络的示例:

代码语言:javascript
复制
#[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