onednnl 0.0.1

high-level bindings to oneDNN Deep Learning library
Documentation
use onednnl_sys::dnnl_graph_op_attr_t::dnnl_graph_op_attr_epsilon;

use crate::graph::spec::{OpSpec, RequiredAttrs};

pub struct BatchNormInferenceSpec;

impl OpSpec for BatchNormInferenceSpec {
    const KIND: onednnl_sys::dnnl_graph_op_kind_t::Type =
        onednnl_sys::dnnl_graph_op_kind_t::dnnl_graph_op_batch_norm_inference;
}

pub struct BatchNormInferenceAttrs {
    pub epsilon: f32,
}

impl BatchNormInferenceSpec {
    pub const DATA_FORMAT: onednnl_sys::dnnl_graph_op_attr_t::Type =
        onednnl_sys::dnnl_graph_op_attr_t::dnnl_graph_op_attr_data_format;
}

impl From<BatchNormInferenceAttrs> for RequiredAttrs {
    fn from(attrs: BatchNormInferenceAttrs) -> Self {
        RequiredAttrs::Some(vec![(
            dnnl_graph_op_attr_epsilon,
            vec![attrs.epsilon].into(),
        )])
    }
}