3 个版本
使用旧的 Rust 2015
0.0.3 | 2016 年 3 月 2 日 |
---|---|
0.0.2 | 2016 年 2 月 2 日 |
0.0.1 | 2015 年 12 月 7 日 |
#807 in 机器学习
1,007 每月下载量
用于 257 个 crate(2 个直接使用)
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 •
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_DIR
或CUDNN_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许可证定义,您有意提交给作品包含在内的任何贡献,应按以下方式双授权,不附加任何额外条款或条件。
许可证
许可以下任一项
- Apache许可证,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
您自行选择。
lib.rs
:
定义了CUDA cuDNN API的外部函数接口。