4个稳定版本

1.8.0 2021年11月21日
1.7.0 2020年6月11日
1.6.0 2017年10月29日
1.5.0 2017年6月12日

#101机器学习

Download history 21/week @ 2024-04-22 18/week @ 2024-04-29 18/week @ 2024-05-06 20/week @ 2024-05-13 27/week @ 2024-05-20 24/week @ 2024-05-27 14/week @ 2024-06-03 20/week @ 2024-06-10 15/week @ 2024-06-17 19/week @ 2024-06-24 5/week @ 2024-07-08 22/week @ 2024-07-15 3/week @ 2024-07-22 42/week @ 2024-07-29 19/week @ 2024-08-05

每月 86 次下载
6 个crate中使用 (3 直接)

MIT/Apache

1MB
26K SLoC

rust-cuDNN • Join the chat at https://gitter.im/spearow/juice Build Status Crates.io License

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

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

rust-cudnn是在已停运的Autumnai为Rust机器智能框架Leaf开发的。

rust-cudnn是高性能计算框架Coaster的一部分。对于NN操作(如cuDNN提供的操作)的简单、统一接口,您可以检查Coaster

更多信息,

入门

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

[dependencies]
cudnn = "1.5.0"

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

$ cargo add cudnn

示例

使用高级的Cudnn接口。

extern crate rcudnn as 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();
    let acti = cudnn.init_activation().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>(&acti, &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和Gitter频道

除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证的定义,应以下列方式双许可,不附加任何其他条款或条件。

许可证

以下任一许可证下授权

任选其一。

依赖

~0.7–1.2MB
~27K SLoC