Intel® oneAPI Deep Neural Network Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
RNN
Overview
A primitive to compute recurrent neural network layers. More…
// enums
enum dnnl_rnn_direction_t;
enum dnnl_rnn_flags_t;
enum dnnl::rnn_direction;
enum dnnl::rnn_flags;
// structs
struct dnnl::augru_backward;
struct dnnl::augru_forward;
struct dnnl::gru_backward;
struct dnnl::gru_forward;
struct dnnl::lbr_augru_backward;
struct dnnl::lbr_augru_forward;
struct dnnl::lbr_gru_backward;
struct dnnl::lbr_gru_forward;
struct dnnl::lstm_backward;
struct dnnl::lstm_forward;
struct dnnl::rnn_primitive_desc_base;
struct dnnl::vanilla_rnn_backward;
struct dnnl::vanilla_rnn_forward;
// global functions
dnnl_rnn_flags_t dnnl::convert_to_c(rnn_flags flags);
dnnl_rnn_direction_t dnnl::convert_to_c(rnn_direction dir);
dnnl_status_t DNNL_API dnnl_vanilla_rnn_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    const dnnl_alg_kind_t activation,
    const dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    float alpha,
    float beta,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_vanilla_rnn_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    const dnnl_alg_kind_t activation,
    const dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    float alpha,
    float beta,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lstm_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t src_iter_c_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t weights_peephole_desc,
    const_dnnl_memory_desc_t weights_projection_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t dst_iter_c_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lstm_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t src_iter_c_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t weights_peephole_desc,
    const_dnnl_memory_desc_t weights_projection_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t dst_iter_c_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_src_iter_c_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_weights_peephole_desc,
    const_dnnl_memory_desc_t diff_weights_projection_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    const_dnnl_memory_desc_t diff_dst_iter_c_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_gru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_gru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lbr_gru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lbr_gru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_augru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_augru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_attention_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lbr_augru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    );
dnnl_status_t DNNL_API dnnl_lbr_augru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_attention_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );Detailed Documentation
A primitive to compute recurrent neural network layers.
See also:
RNN in developer guide
Global Functions
dnnl_rnn_flags_t dnnl::convert_to_c(rnn_flags flags)Converts RNN cell flags enum value from C++ API to C API type.
Parameters:
| flags | C++ API RNN cell flags enum value. | 
Returns:
Corresponding C API RNN cell flags enum value.
dnnl_rnn_direction_t dnnl::convert_to_c(rnn_direction dir)Converts RNN direction enum value from C++ API to C API type.
Parameters:
| dir | C++ API RNN direction enum value. | 
Returns:
Corresponding C API RNN direction enum value.
dnnl_status_t DNNL_API dnnl_vanilla_rnn_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    const dnnl_alg_kind_t activation,
    const dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    float alpha,
    float beta,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for vanilla RNN forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc, 
- bias_desc, 
- dst_iter_desc. 
This would then indicate that the RNN forward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| activation | Activation kind. Possible values are dnnl_eltwise_relu, dnnl_eltwise_tanh or dnnl_eltwise_logistic. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| flags | Unused. | 
| alpha | Negative slope if activation is dnnl_eltwise_relu. | 
| beta | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_vanilla_rnn_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    const dnnl_alg_kind_t activation,
    const dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    float alpha,
    float beta,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for vanilla RNN backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with diff_src_iter_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with diff_dst_iter_desc. 
This would then indicate that the RNN backward propagation primitive should not use the respective data and should use zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| activation | Activation kind. Possible values are dnnl_eltwise_relu, dnnl_eltwise_tanh or dnnl_eltwise_logistic. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| flags | Unused. | 
| alpha | Negative slope if activation is dnnl_eltwise_relu. | 
| beta | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lstm_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t src_iter_c_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t weights_peephole_desc,
    const_dnnl_memory_desc_t weights_projection_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t dst_iter_c_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for an LSTM forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with src_iter_c_desc, 
- weights_peephole_desc, 
- bias_desc, 
- dst_iter_desc together with dst_iter_c_desc. 
This would then indicate that the LSTM forward propagation primitive should not use them and should default to zero values instead.
The weights_projection_desc could either be NULL or point to a zero memory descriptor. This would then indicate that the LSTM doesn’t have recurrent projection layer.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| src_iter_c_desc | Memory descriptor for the input recurrent cell state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| weights_peephole_desc | Memory descriptor for the weights applied to the cell states (according to the Peephole LSTM formula). | 
| weights_projection_desc | Memory descriptor for the weights applied to the hidden states to get the recurrent projection (according to the Projection LSTM formula). | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| dst_iter_c_desc | Memory descriptor for the output recurrent cell state vector. | 
| flags | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lstm_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t src_iter_c_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t weights_peephole_desc,
    const_dnnl_memory_desc_t weights_projection_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t dst_iter_c_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_src_iter_c_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_weights_peephole_desc,
    const_dnnl_memory_desc_t diff_weights_projection_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    const_dnnl_memory_desc_t diff_dst_iter_c_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for an LSTM backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with src_iter_c_desc, diff_src_iter_desc, and diff_src_iter_c_desc, 
- weights_peephole_desc together with diff_weights_peephole_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with dst_iter_c_desc, diff_dst_iter_desc, and diff_dst_iter_c_desc. 
This would then indicate that the LSTM backward propagation primitive should not use them and should default to zero values instead.
The weights_projection_desc together with diff_weights_projection_desc could either be NULL or point to a zero memory descriptor. This would then indicate that the LSTM doesn’t have recurrent projection layer.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| src_iter_c_desc | Memory descriptor for the input recurrent cell state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| weights_peephole_desc | Memory descriptor for the weights applied to the cell states (according to the Peephole LSTM formula). | 
| weights_projection_desc | Memory descriptor for the weights applied to the hidden states to get the recurrent projection (according to the Projection LSTM formula). | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| dst_iter_c_desc | Memory descriptor for the output recurrent cell state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_src_iter_c_desc | Memory descriptor for the diff of input recurrent cell state vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_weights_peephole_desc | Memory descriptor for the diff of weights applied to the cell states (according to the Peephole LSTM formula). | 
| diff_weights_projection_desc | Memory descriptor for the diff of weights applied to the hidden states to get the recurrent projection (according to the Projection LSTM formula). | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| diff_dst_iter_c_desc | Memory descriptor for the diff of output recurrent cell state vector. | 
| flags | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_gru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for GRU forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc, 
- bias_desc, 
- dst_iter_desc. 
This would then indicate that the GRU forward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| flags | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_gru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for GRU backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with diff_src_iter_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with diff_dst_iter_desc. 
This would then indicate that the GRU backward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| flags | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lbr_gru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    )Creates a descriptor for LBR GRU forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc, 
- bias_desc, 
- dst_iter_desc. 
This would then indicate that the LBR GRU forward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| flags | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lbr_gru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for LBR GRU backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with diff_src_iter_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with diff_dst_iter_desc. 
This would then indicate that the LBR GRU backward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| flags | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_augru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for AUGRU forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc, 
- bias_desc, 
- dst_iter_desc. 
This would then indicate that the AUGRU forward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| attention_desc | Memory descriptor for the attention vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| flags | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_augru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_attention_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for AUGRU backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with diff_src_iter_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with diff_dst_iter_desc. 
This would then indicate that the AUGRU backward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| attention_desc | Memory descriptor for the attention vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_attention_desc | Memory descriptor for the diff of attention vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| flags | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lbr_augru_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for LBR AUGRU forward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc, 
- bias_desc, 
- dst_iter_desc. 
This would then indicate that the LBR AUGRU forward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| attention_desc | Memory descriptor for the attention vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| flags | Unused. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_lbr_augru_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_rnn_direction_t direction,
    const_dnnl_memory_desc_t src_layer_desc,
    const_dnnl_memory_desc_t src_iter_desc,
    const_dnnl_memory_desc_t attention_desc,
    const_dnnl_memory_desc_t weights_layer_desc,
    const_dnnl_memory_desc_t weights_iter_desc,
    const_dnnl_memory_desc_t bias_desc,
    const_dnnl_memory_desc_t dst_layer_desc,
    const_dnnl_memory_desc_t dst_iter_desc,
    const_dnnl_memory_desc_t diff_src_layer_desc,
    const_dnnl_memory_desc_t diff_src_iter_desc,
    const_dnnl_memory_desc_t diff_attention_desc,
    const_dnnl_memory_desc_t diff_weights_layer_desc,
    const_dnnl_memory_desc_t diff_weights_iter_desc,
    const_dnnl_memory_desc_t diff_bias_desc,
    const_dnnl_memory_desc_t diff_dst_layer_desc,
    const_dnnl_memory_desc_t diff_dst_iter_desc,
    unsigned flags,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )Creates a primitive descriptor for LBR AUGRU backward propagation primitive.
The following arguments may either be NULL or point to a zero memory descriptor:
- src_iter_desc together with diff_src_iter_desc, 
- bias_desc together with diff_bias_desc, 
- dst_iter_desc together with diff_dst_iter_desc. 
This would then indicate that the LBR AUGRU backward propagation primitive should not use them and should default to zero values instead.
Parameters:
| primitive_desc | Output primitive descriptor. | 
| engine | Engine to use. | 
| prop_kind | Propagation kind. Must be dnnl_backward. | 
| direction | RNN direction. See dnnl_rnn_direction_t for more info. | 
| src_layer_desc | Memory descriptor for the input vector. | 
| src_iter_desc | Memory descriptor for the input recurrent hidden state vector. | 
| attention_desc | Memory descriptor for the attention vector. | 
| weights_layer_desc | Memory descriptor for the weights applied to the layer input. | 
| weights_iter_desc | Memory descriptor for the weights applied to the recurrent input. | 
| bias_desc | Bias memory descriptor. | 
| dst_layer_desc | Memory descriptor for the output vector. | 
| dst_iter_desc | Memory descriptor for the output recurrent hidden state vector. | 
| diff_src_layer_desc | Memory descriptor for the diff of input vector. | 
| diff_src_iter_desc | Memory descriptor for the diff of input recurrent hidden state vector. | 
| diff_attention_desc | Memory descriptor for the diff of attention vector. | 
| diff_weights_layer_desc | Memory descriptor for the diff of weights applied to the layer input. | 
| diff_weights_iter_desc | Memory descriptor for the diff of weights applied to the recurrent input. | 
| diff_bias_desc | Diff bias memory descriptor. | 
| diff_dst_layer_desc | Memory descriptor for the diff of output vector. | 
| diff_dst_iter_desc | Memory descriptor for the diff of output recurrent hidden state vector. | 
| flags | Unused. | 
| hint_fwd_pd | Primitive descriptor for a respective forward propagation primitive. | 
| attr | Primitive attributes (can be NULL). | 
Returns:
dnnl_success on success and a status describing the error otherwise.