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 在 机器学习
每月 86 次下载
在 6 个crate中使用 (3 直接)
1MB
26K SLoC
rust-cuDNN •

rust-cuDNN为CUDA的cuDNN库提供安全的封装,因此您可以在Rust应用程序中舒适且安全地使用它。
由于cuDNN依赖于CUDA在GPU上分配内存,您也可能需要查看rust-cuda。
rust-cudnn是在已停运的Autumnai为Rust机器智能框架Leaf开发的。
rust-cudnn是高性能计算框架Coaster的一部分。对于NN操作(如cuDNN提供的操作)的简单、统一接口,您可以检查Coaster。
更多信息,
- 在Gitter上联系
入门
如果您使用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_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和Gitter频道。
除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证的定义,应以下列方式双许可,不附加任何其他条款或条件。
许可证
以下任一许可证下授权
- Apache许可证,版本2.0(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
任选其一。
依赖
~0.7–1.2MB
~27K SLoC