11个版本 (7个稳定版)
使用旧的Rust 2015
1.3.1 | 2016年3月2日 |
---|---|
1.3.0 | 2016年3月1日 |
1.2.1 | 2016年2月22日 |
1.0.1 | 2015年12月21日 |
0.1.3 | 2015年12月14日 |
#611 在 机器学习
1,028 每月下载
用于 256 个crate (2个直接使用)
120KB
2K SLoC
为CUDA cuDNN API提供安全且方便的封装。
此crate(1.0.0)是针对cuDNN v3开发的。
架构
此crate提供三个级别的入口。
FFIffi
模块暴露了外部函数接口和cuDNN特定类型。通常情况下,如果您只想在应用程序中使用cuDNN,则不需要触摸此ffi模块。该ffi模块由rust-cudnn-sys
crate提供,并在此处重新导出。
低级api
模块暴露了一个完整的、安全的cuDNN API封装,包括适当的Rust错误。通常,您不需要直接使用API
,因为Cudnn
模块(如下一部分所述)提供了所有API功能,但提供了更方便的接口。
高级cudnn
模块暴露了Cudnn
结构体,它为cuDNN API提供了一种非常方便、易于理解的接口。通常不需要获取和阅读cuDNN手册。初始化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是在Autumn为Rust机器智能框架Leaf开发的。
rust-cudnn是高性能计算框架Collenchyma的一部分,用于神经网络插件。对于cuDNN等NN操作的简单、统一接口,您可以查看Collenchyma。
依赖关系
~190KB