rcudnn/
activation_descriptor.rs1use super::{Error, API};
7use crate::ffi::*;
8
9#[derive(Debug, Clone)]
10pub struct ActivationDescriptor {
12 id: cudnnActivationDescriptor_t,
13}
14
15impl Drop for ActivationDescriptor {
16 #[allow(unused_must_use)]
17 fn drop(&mut self) {
18 API::destroy_activation_descriptor(*self.id_c());
19 }
20}
21
22impl ActivationDescriptor {
23 pub fn new(mode: cudnnActivationMode_t) -> Result<ActivationDescriptor, Error> {
25 let generic_activation_desc = API::create_activation_descriptor()?;
26 API::set_activation_descriptor(
27 generic_activation_desc,
28 mode,
29 cudnnNanPropagation_t::CUDNN_NOT_PROPAGATE_NAN, ::std::f64::MAX, )?;
32
33 Ok(ActivationDescriptor::from_c(generic_activation_desc))
34 }
35
36 pub fn from_c(id: cudnnActivationDescriptor_t) -> ActivationDescriptor {
38 ActivationDescriptor { id }
39 }
40
41 pub fn id_c(&self) -> &cudnnActivationDescriptor_t {
43 &self.id
44 }
45}