struct dnnl::vanilla_rnn_backward::primitive_desc

Overview

Primitive descriptor for an RNN backward propagation primitive. More…

#include <dnnl.hpp>

struct primitive_desc: public dnnl::rnn_primitive_desc_base
{
    // methods

    primitive_desc();

    primitive_desc(
        const engine& aengine,
        prop_kind aprop_kind,
        algorithm activation,
        rnn_direction direction,
        const memory::desc& src_layer_desc,
        const memory::desc& src_iter_desc,
        const memory::desc& weights_layer_desc,
        const memory::desc& weights_iter_desc,
        const memory::desc& bias_desc,
        const memory::desc& dst_layer_desc,
        const memory::desc& dst_iter_desc,
        const memory::desc& diff_src_layer_desc,
        const memory::desc& diff_src_iter_desc,
        const memory::desc& diff_weights_layer_desc,
        const memory::desc& diff_weights_iter_desc,
        const memory::desc& diff_bias_desc,
        const memory::desc& diff_dst_layer_desc,
        const memory::desc& diff_dst_iter_desc,
        const vanilla_rnn_forward::primitive_desc& hint_fwd_pd,
        const primitive_attr& attr = default_attr(),
        bool allow_empty = false
        );

    primitive_desc(
        const engine& aengine,
        prop_kind aprop_kind,
        algorithm activation,
        rnn_direction direction,
        const memory::desc& src_layer_desc,
        const memory::desc& src_iter_desc,
        const memory::desc& weights_layer_desc,
        const memory::desc& weights_iter_desc,
        const memory::desc& bias_desc,
        const memory::desc& dst_layer_desc,
        const memory::desc& dst_iter_desc,
        const memory::desc& diff_src_layer_desc,
        const memory::desc& diff_src_iter_desc,
        const memory::desc& diff_weights_layer_desc,
        const memory::desc& diff_weights_iter_desc,
        const memory::desc& diff_bias_desc,
        const memory::desc& diff_dst_layer_desc,
        const memory::desc& diff_dst_iter_desc,
        float alpha,
        const vanilla_rnn_forward::primitive_desc& hint_fwd_pd,
        const primitive_attr& attr = default_attr(),
        bool allow_empty = false
        );

    primitive_desc(dnnl_primitive_desc_t pd);
    memory::desc src_layer_desc() const;
    memory::desc src_iter_desc() const;
    memory::desc weights_layer_desc() const;
    memory::desc weights_iter_desc() const;
    memory::desc bias_desc() const;
    memory::desc dst_layer_desc() const;
    memory::desc dst_iter_desc() const;
    memory::desc workspace_desc() const;
    memory::desc diff_src_layer_desc() const;
    memory::desc diff_src_iter_desc() const;
    memory::desc diff_weights_layer_desc() const;
    memory::desc diff_weights_iter_desc() const;
    memory::desc diff_bias_desc() const;
    memory::desc diff_dst_layer_desc() const;
    memory::desc diff_dst_iter_desc() const;
    algorithm get_cell_kind() const;
    prop_kind get_prop_kind() const;
    algorithm get_activation_kind() const;
    rnn_direction get_direction() const;
    float get_alpha() const;
    float get_beta() const;
};

Inherited Members

public:
    // methods

    handle();
    handle(const handle<T, traits>&);
    handle<T, traits>& operator = (const handle<T, traits>&);
    handle(handle<T, traits>&&);
    handle<T, traits>& operator = (handle<T, traits>&&);
    handle(T t, bool weak = false);
    void reset(T t, bool weak = false);
    T get(bool allow_empty = false) const;
    operator T () const;
    operator bool () const;
    bool operator == (const handle<T, traits>& other) const;
    bool operator != (const handle& other) const;
    primitive_desc_base();
    engine get_engine() const;
    const char* impl_info_str() const;
    memory::dim query_s64(query what) const;
    memory::dims get_strides() const;
    memory::dims get_dilations() const;
    memory::dims get_padding_l() const;
    memory::dims get_padding_r() const;
    float get_epsilon() const;

    template <typename T = unsigned>
    T get_flags() const;

    dnnl::algorithm get_algorithm() const;
    float get_alpha() const;
    float get_beta() const;
    int get_axis() const;
    memory::dim get_local_size() const;
    float get_k() const;
    float get_p() const;
    std::vector<float> get_factors() const;
    dnnl::algorithm get_cell_kind() const;
    dnnl::rnn_direction get_direction() const;
    dnnl::algorithm get_activation_kind() const;
    memory::dims get_kernel() const;
    memory::dim get_group_size() const;
    dnnl::prop_kind get_prop_kind() const;
    memory::desc query_md(query what, int idx = 0) const;
    memory::desc src_desc(int idx) const;
    memory::desc dst_desc(int idx) const;
    memory::desc weights_desc(int idx) const;
    memory::desc diff_src_desc(int idx) const;
    memory::desc diff_dst_desc(int idx) const;
    memory::desc diff_weights_desc(int idx) const;
    memory::desc src_desc() const;
    memory::desc dst_desc() const;
    memory::desc weights_desc() const;
    memory::desc diff_src_desc() const;
    memory::desc diff_dst_desc() const;
    memory::desc diff_weights_desc() const;
    memory::desc workspace_desc() const;
    memory::desc scratchpad_desc() const;
    engine scratchpad_engine() const;
    primitive_attr get_primitive_attr() const;
    dnnl::primitive::kind get_kind() const;
    std::vector<uint8_t> get_cache_blob_id() const;
    primitive_desc();
    bool next_impl();
    rnn_primitive_desc_base();

    rnn_primitive_desc_base(
        dnnl_primitive_desc_t pd,
        dnnl::prop_kind aprop_kind,
        dnnl::algorithm cell_kind
        );

    memory::desc src_layer_desc() const;
    memory::desc augru_attention_desc() const;
    memory::desc src_iter_desc() const;
    memory::desc src_iter_c_desc() const;
    memory::desc weights_layer_desc() const;
    memory::desc weights_iter_desc() const;
    memory::desc weights_peephole_desc() const;
    memory::desc weights_projection_desc() const;
    memory::desc bias_desc() const;
    memory::desc dst_layer_desc() const;
    memory::desc dst_iter_desc() const;
    memory::desc dst_iter_c_desc() const;
    memory::desc diff_src_layer_desc() const;
    memory::desc diff_augru_attention_desc() const;
    memory::desc diff_src_iter_desc() const;
    memory::desc diff_src_iter_c_desc() const;
    memory::desc diff_weights_layer_desc() const;
    memory::desc diff_weights_iter_desc() const;
    memory::desc diff_weights_peephole_desc() const;
    memory::desc diff_weights_projection_desc() const;
    memory::desc diff_bias_desc() const;
    memory::desc diff_dst_layer_desc() const;
    memory::desc diff_dst_iter_desc() const;
    memory::desc diff_dst_iter_c_desc() const;

Detailed Documentation

Primitive descriptor for an RNN backward propagation primitive.

Methods

primitive_desc()

Default constructor. Produces an empty object.

primitive_desc(
    const engine& aengine,
    prop_kind aprop_kind,
    algorithm activation,
    rnn_direction direction,
    const memory::desc& src_layer_desc,
    const memory::desc& src_iter_desc,
    const memory::desc& weights_layer_desc,
    const memory::desc& weights_iter_desc,
    const memory::desc& bias_desc,
    const memory::desc& dst_layer_desc,
    const memory::desc& dst_iter_desc,
    const memory::desc& diff_src_layer_desc,
    const memory::desc& diff_src_iter_desc,
    const memory::desc& diff_weights_layer_desc,
    const memory::desc& diff_weights_iter_desc,
    const memory::desc& diff_bias_desc,
    const memory::desc& diff_dst_layer_desc,
    const memory::desc& diff_dst_iter_desc,
    const vanilla_rnn_forward::primitive_desc& hint_fwd_pd,
    const primitive_attr& attr = default_attr(),
    bool allow_empty = false
    )

Constructs a primitive descriptor for a vanilla RNN backward propagation primitive.

The following arguments may 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.

Note

All the memory descriptors may be initialized with the dnnl::memory::format_tag::any value of format_tag.

Parameters:

aengine

Engine to use.

aprop_kind

Propagation kind. Must be dnnl::prop_kind::backward.

activation

Activation kind. Possible values are dnnl::algorithm::eltwise_relu, dnnl::algorithm::eltwise_tanh, or dnnl::algorithm::eltwise_logistic.

direction

RNN direction. See dnnl::rnn_direction 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.

hint_fwd_pd

Primitive descriptor for a vanilla RNN forward propagation primitive. It is used as a hint for deciding which memory format to use.

attr

Primitive attributes to use. Attributes are optional and default to empty attributes.

allow_empty

A flag signifying whether construction is allowed to fail without throwing an exception. In this case an empty object will be produced. This flag is optional and defaults to false.

primitive_desc(
    const engine& aengine,
    prop_kind aprop_kind,
    algorithm activation,
    rnn_direction direction,
    const memory::desc& src_layer_desc,
    const memory::desc& src_iter_desc,
    const memory::desc& weights_layer_desc,
    const memory::desc& weights_iter_desc,
    const memory::desc& bias_desc,
    const memory::desc& dst_layer_desc,
    const memory::desc& dst_iter_desc,
    const memory::desc& diff_src_layer_desc,
    const memory::desc& diff_src_iter_desc,
    const memory::desc& diff_weights_layer_desc,
    const memory::desc& diff_weights_iter_desc,
    const memory::desc& diff_bias_desc,
    const memory::desc& diff_dst_layer_desc,
    const memory::desc& diff_dst_iter_desc,
    float alpha,
    const vanilla_rnn_forward::primitive_desc& hint_fwd_pd,
    const primitive_attr& attr = default_attr(),
    bool allow_empty = false
    )

Constructs a primitive descriptor for a vanilla RNN backward propagation primitive with an alpha parameter.

The following arguments may 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.

Note

All the memory descriptors may be initialized with the dnnl::memory::format_tag::any value of format_tag.

Parameters:

aengine

Engine to use.

aprop_kind

Propagation kind. Must be dnnl::prop_kind::backward.

activation

Activation kind. Possible values are dnnl::algorithm::eltwise_relu, dnnl::algorithm::eltwise_tanh, or dnnl::algorithm::eltwise_logistic.

direction

RNN direction. See dnnl::rnn_direction 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.

alpha

Negative slope if activation is dnnl::algorithm::eltwise_relu.

hint_fwd_pd

Primitive descriptor for a vanilla RNN forward propagation primitive. It is used as a hint for deciding which memory format to use.

attr

Primitive attributes to use. Attributes are optional and default to empty attributes.

allow_empty

A flag signifying whether construction is allowed to fail without throwing an exception. In this case an empty object will be produced. This flag is optional and defaults to false.

primitive_desc(dnnl_primitive_desc_t pd)

Constructs a primitive descriptor for a vanilla RNN backward propagation primitive from a C API primitive descriptor that must have a matching kind.

Parameters:

pd

C API primitive descriptor for a vanilla RNN backward propagation primitive.

memory::desc src_layer_desc() const

Returns source layer memory descriptor.

Returns:

Source layer memory descriptor.

memory::desc src_iter_desc() const

Returns source iteration memory descriptor.

Returns:

Source iteration memory descriptor.

A zero memory descriptor if the primitive does not have a source iteration parameter.

memory::desc weights_layer_desc() const

Returns weights layer memory descriptor.

Returns:

Weights layer memory descriptor.

memory::desc weights_iter_desc() const

Returns weights iteration memory descriptor.

Returns:

Weights iteration memory descriptor.

memory::desc bias_desc() const

Returns bias memory descriptor.

Returns:

Bias memory descriptor.

A zero memory descriptor if the primitive does not have a bias parameter.

memory::desc dst_layer_desc() const

Returns destination layer memory descriptor.

Returns:

Destination layer memory descriptor.

memory::desc dst_iter_desc() const

Returns destination iteration memory descriptor.

Returns:

Destination iteration memory descriptor.

A zero memory descriptor if the primitive does not have a destination iteration parameter.

memory::desc workspace_desc() const

Returns the workspace memory descriptor.

Returns:

Workspace memory descriptor.

A zero memory descriptor if the primitive does not require workspace parameter.

memory::desc diff_src_layer_desc() const

Returns diff source layer memory descriptor.

Returns:

Diff source layer memory descriptor.

memory::desc diff_src_iter_desc() const

Returns diff source iteration memory descriptor.

Returns:

Diff source iteration memory descriptor.

A zero memory descriptor if the primitive does not have a diff source iteration parameter.

memory::desc diff_weights_layer_desc() const

Returns diff weights layer memory descriptor.

Returns:

Diff weights layer memory descriptor.

memory::desc diff_weights_iter_desc() const

Returns diff weights iteration memory descriptor.

Returns:

Diff weights iteration memory descriptor.

memory::desc diff_bias_desc() const

Returns diff bias memory descriptor.

Returns:

Diff bias memory descriptor.

A zero memory descriptor if the primitive does not have a diff bias parameter.

memory::desc diff_dst_layer_desc() const

Returns diff destination layer memory descriptor.

Returns:

Diff destination layer memory descriptor.

memory::desc diff_dst_iter_desc() const

Returns diff destination iteration memory descriptor.

Returns:

Diff destination iteration memory descriptor.

A zero memory descriptor if the primitive does not have a diff destination iteration parameter.

algorithm get_cell_kind() const

Returns an RNN cell kind parameter.

Returns:

An RNN cell kind parameter.

dnnl::algorithm::undef if the primitive does not have an RNN cell kind parameter.

prop_kind get_prop_kind() const

Returns a propagation kind.

Returns:

A propagation kind.

dnnl::prop_kind::undef if the primitive does not have a propagation parameter.

algorithm get_activation_kind() const

Returns an RNN activation kind parameter.

Returns:

An RNN activation kind parameter.

dnnl::algorithm::undef if the primitive does not have an RNN activation kind parameter.

rnn_direction get_direction() const

Returns an RNN direction parameter.

Returns:

An RNN direction parameter.

dnnl::rnn_direction::undef if the primitive does not have an RNN direction parameter.

float get_alpha() const

Returns an alpha.

Returns:

An alpha.

Zero if the primitive does not have an alpha parameter.

float get_beta() const

Returns a beta.

Returns:

A beta.

Zero if the primitive does not have a beta parameter.