3 个版本

使用旧的 Rust 2015

0.0.3 2016 年 3 月 2 日
0.0.2 2016 年 2 月 2 日
0.0.1 2015 年 12 月 7 日

#807 in 机器学习

Download history 160/week @ 2024-03-03 214/week @ 2024-03-10 208/week @ 2024-03-17 468/week @ 2024-03-24 533/week @ 2024-03-31 159/week @ 2024-04-07 200/week @ 2024-04-14 253/week @ 2024-04-21 468/week @ 2024-04-28 207/week @ 2024-05-05 204/week @ 2024-05-12 222/week @ 2024-05-19 187/week @ 2024-05-26 405/week @ 2024-06-02 162/week @ 2024-06-09 203/week @ 2024-06-16

1,007 每月下载量
用于 257 个 crate(2 个直接使用)

MIT/Apache

7.5MB
867

包含 (Rust 库,5MB) librustc_serialize-3c33cb2a40992011.rlib、(Rust 库,1MB) libterm-841ef31004739dda.rlib、(ELF 可执行文件/库,720KB) build-script-build、(ELF 可执行文件/库,580KB) build-script-build、(Rust 库,550KB) liblibc-adb8b8e7aaa2f93f.rlib、(Rust 库,390KB) liblibc-dd3420cb049117bb.rlib 以及其他 6 个文件。 查看更多

rust-cuDNN • 加入聊天 https://gitter.im/autumnai/collenchyma 构建状态 覆盖率状态 许可

rust-cuDNN 为 CUDA 的 cuDNN 库 提供安全的包装,因此您可以在 Rust 应用程序中舒适和安全地使用它。

由于 cuDNN 依赖于 CUDA 在 GPU 上分配内存,您还可能需要查看 rust-cuda

rust-cudnn 是在 Autumn 为 Rust 机器智能框架 Leaf 开发的。

rust-cudnn 是高性能计算框架 Collenchyma 的一部分,用于 [神经网络插件][nn]。如果您需要 cuDNN 等提供的神经网络操作的简单、统一接口,可以查看 Collenchyma

更多信息,

入门指南

如果您使用Cargo,只需将rust-cuDNN添加到您的Cargo.toml文件中

[dependencies]
cudnn = "1.3.1"

如果您使用Cargo Edit,可以调用

$ cargo add cudnn

示例

使用高级的Cudnn接口。

extern crate cudnn;
extern crate libc;
use cudnn::{Cudnn, TensorDescriptor};
use cudnn::utils::{ScalParams, DataType};
fn main() {
    // Initialize a new cuDNN context and allocates resources.
    let cudnn = Cudnn::new().unwrap();
    // Create a cuDNN Tensor Descriptor for `src` and `dest` memory.
    let src_desc = TensorDescriptor::new(&[2, 2, 2], &[4, 2, 1], DataType::Float).unwrap();
    let dest_desc = TensorDescriptor::new(&[2, 2, 2], &[4, 2, 1], DataType::Float).unwrap();
    // Obtain the `src` and memory pointer on the GPU.
    // NOTE: You wouldn't do it like that. You need to really allocate memory on the GPU with e.g. CUDA or Collenchyma.
    let src_data: *const ::libc::c_void = ::std::ptr::null();
    let dest_data: *mut ::libc::c_void = ::std::ptr::null_mut();
    // Now you can compute the forward sigmoid activation on your GPU.
    cudnn.sigmoid_forward::<f32>(&src_desc, src_data, &dest_desc, dest_data, ScalParams::default());
}

构建

rust-cudnn依赖于cuDNN运行时库,可以从NVIDIA获取。

手动配置

默认情况下,rust-cudnn的构建脚本将尝试通过pkg-config查找cudnn。在某些情况下这不会工作,例如:

  • 在没有pkg-config的系统上
  • 交叉编译时
  • cuDNN未安装在默认系统库目录(例如/usr/lib)时

因此可以通过导出以下环境变量来配置构建脚本

  • CUDNN_LIB_DIR
    如果指定,将使用该目录查找cuDNN运行时库。例如:/opt/cuda/lib

  • CUDNN_STATIC
    如果指定,cuDNN库将被静态链接而不是动态链接。

  • CUDNN_LIBS
    如果指定,将用于在具有不同名称的目录下查找cuDNN库。

如果指定了CUDNN_LIB_DIRCUDNN_INCLUDE_DIR,则构建脚本将跳过pkg-config步骤。

如果您也需要运行编译后的二进制文件,请确保它们可用

# Linux; for other platforms consult the instructions that come with cuDNN
cd <cudnn_installpath>
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH

贡献

想要贡献吗?太棒了!我们有一些帮助您开始贡献代码或文档的指导。还有我们可能需要您帮助的高优先级问题。

我们有一个主要是实时协作的文化,这在这里发生,在Github上,以及在Collenchyma Gitter频道上。您也可以联系维护者{@MJ@hobofan}。

除非您明确表示,否则根据Apache-2.0许可证定义,您有意提交给作品包含在内的任何贡献,应按以下方式双授权,不附加任何额外条款或条件。

许可证

许可以下任一项

您自行选择。


lib.rs:

定义了CUDA cuDNN API的外部函数接口。

依赖项