.. index:: pair: struct; dnnl::rnn_primitive_desc_base
.. _doxid-structdnnl_1_1rnn__primitive__desc__base:

struct dnnl::rnn_primitive_desc_base
====================================

.. toctree::
	:hidden:

Overview
~~~~~~~~

Base class for primitive descriptors for RNN primitives. :ref:`More...<details-structdnnl_1_1rnn__primitive__desc__base>`


.. ref-code-block:: cpp
	:class: doxyrest-overview-code-block

	#include <dnnl.hpp>
	
	struct rnn_primitive_desc_base: public :ref:`dnnl::primitive_desc<doxid-structdnnl_1_1primitive__desc>`
	{
		// construction
	
		:ref:`rnn_primitive_desc_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1a5f08b3113b2f2b4b67d9348ef7046251>`();
	
		:ref:`rnn_primitive_desc_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1a91be3d723ce87dc5498d061f269f9705>`(
			:ref:`dnnl_primitive_desc_t<doxid-group__dnnl__api__primitives__common_1gaabde3e27edf071b62b39f47bace7efd6>` pd,
			:ref:`dnnl::prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` aprop_kind,
			:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` cell_kind
			);

		// methods
	
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`src_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ae49709b806f2cb108affe1ec5aebb504>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`augru_attention_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a392b10f6a2c15be9e8c37a53d3aed786>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`src_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ab73a02922a9a7d2f0d6066572d5c6a09>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`src_iter_c_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ab37877634785901c8d8850d1a928c9b2>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a20737480e3672640657a34afd631f11f>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a2464426ea23b9d026fd5d2c8d92c942a>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_peephole_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a1d634c656c92e69393cd52a4551c951b>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_projection_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ac42d2cf801857a02db5c23e4a4d4eba1>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`bias_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ac2045ddda996b5e3ac2c0974ca70bfa1>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`dst_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1aa9a4652f8f5c8d1b32d2f26deac70f92>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`dst_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1af82a946c412df434d8842292d77a496c>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`dst_iter_c_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a1d56829ac12568aea3a7203631e7c202>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_src_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1afbf93e3cf53b5ef7d04a0b2fcb41f77b>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_augru_attention_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a6d15e90406d096ea3df0233bf164114c>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_src_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a248bcc0f5bec8d76eda24ad391693fa2>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_src_iter_c_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a6f3d6865c312c3231ff7dec8df561ecb>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a1df1f7cb00c68c73bc4320d7b5fda7bb>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a4243bb55a8d07fa66a3c44633996e73b>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_peephole_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1af8f947d6baeee3cded8f178c0d87532a>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_projection_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1aab56611714a0496cfe15a36e68b2c495>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_bias_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1aa81c0dbda6447fe83d1d37122fdc708c>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_dst_layer_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1aeb8d331bd2bcb80bd06ec729175e4314>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_dst_iter_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a4a5eceabe7b1ffd9f181376192f5d397>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_dst_iter_c_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1a33e735717f2dffa22cc28e90e20bd344>`() const;
		:target:`primitive_desc<doxid-structdnnl_1_1rnn__primitive__desc__base_1ae5452031cfd89bda919543dace0ff7bd>`();

	protected:
		// typedefs
	
		typedef rnn_primitive_desc_base :target:`rnn_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1a57d29d99ae02b882ee928a959ea043a9>`;

		// construction
	
		:target:`rnn_primitive_desc_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1a2569ff6cfaa8c4aff30b0d527772b54b>`(
			:ref:`dnnl_primitive_desc_t<doxid-group__dnnl__api__primitives__common_1gaabde3e27edf071b62b39f47bace7efd6>` pd,
			:ref:`dnnl::prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` prop_kind1,
			:ref:`dnnl::prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` prop_kind2,
			:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` cell_kind
			);
	
		:target:`rnn_primitive_desc_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1abab19f9beba26d3d77e3674e6fc59173>`(
			const :ref:`engine<doxid-structdnnl_1_1engine>`& aengine,
			:ref:`algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` cell_kind,
			:ref:`prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` aprop_kind,
			:ref:`algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` activation,
			:ref:`rnn_direction<doxid-group__dnnl__api__rnn_1ga33315cf335d1cbe26fd6b70d956e23d5>` direction,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& src_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& src_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* src_iter_c_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* attention_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& weights_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& weights_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* weights_peephole_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* weights_projection_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& bias_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& dst_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& dst_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* dst_iter_c_desc,
			:ref:`rnn_flags<doxid-group__dnnl__api__rnn_1gad27d0db2a86ae3072207769f5c2ddd1e>` flags,
			float alpha,
			float beta,
			const :ref:`primitive_attr<doxid-structdnnl_1_1primitive__attr>`& attr,
			bool allow_empty
			);
	
		:target:`rnn_primitive_desc_base<doxid-structdnnl_1_1rnn__primitive__desc__base_1a27c8ca87b6e12a65767909dccab1f934>`(
			const :ref:`engine<doxid-structdnnl_1_1engine>`& aengine,
			:ref:`algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` cell_kind,
			:ref:`prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` aprop_kind,
			:ref:`algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` activation,
			:ref:`rnn_direction<doxid-group__dnnl__api__rnn_1ga33315cf335d1cbe26fd6b70d956e23d5>` direction,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& src_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& src_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* src_iter_c_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* attention_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& weights_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& weights_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* weights_peephole_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* weights_projection_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& bias_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& dst_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& dst_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* dst_iter_c_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_src_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_src_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* diff_src_iter_c_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* diff_attention_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_weights_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_weights_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* diff_weights_peephole_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* diff_weights_projection_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_bias_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_dst_layer_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`& diff_dst_iter_desc,
			const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* diff_dst_iter_c_desc,
			:ref:`rnn_flags<doxid-group__dnnl__api__rnn_1gad27d0db2a86ae3072207769f5c2ddd1e>` flags,
			float alpha,
			float beta,
			const rnn_primitive_desc_base& hint_fwd_pd,
			const :ref:`primitive_attr<doxid-structdnnl_1_1primitive__attr>`& attr,
			bool allow_empty
			);
	};

	// direct descendants

	struct :ref:`primitive_desc<doxid-structdnnl_1_1augru__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1augru__forward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1gru__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1gru__forward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lbr__augru__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lbr__augru__forward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lbr__gru__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lbr__gru__forward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lstm__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1lstm__forward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1vanilla__rnn__backward_1_1primitive__desc>`;
	struct :ref:`primitive_desc<doxid-structdnnl_1_1vanilla__rnn__forward_1_1primitive__desc>`;

Inherited Members
-----------------

.. ref-code-block:: cpp
	:class: doxyrest-overview-inherited-code-block

	public:
		// methods
	
		:ref:`handle<doxid-structdnnl_1_1handle>`<T, traits>& :ref:`operator =<doxid-structdnnl_1_1handle_1a4ad1ff54e4aafeb560a869c49aa20b52>` (const :ref:`handle<doxid-structdnnl_1_1handle>`<T, traits>&);
		:ref:`handle<doxid-structdnnl_1_1handle>`<T, traits>& :ref:`operator =<doxid-structdnnl_1_1handle_1af3f85524f3d83abdd4917b46ce23e727>` (:ref:`handle<doxid-structdnnl_1_1handle>`<T, traits>&&);
		void :ref:`reset<doxid-structdnnl_1_1handle_1a8862ef3d31c3b19bd88395e0b1373909>`(T t, bool weak = false);
		T :ref:`get<doxid-structdnnl_1_1handle_1a2208243e1d147a0be9da87fff46ced7e>`(bool allow_empty = false) const;
		:ref:`operator T<doxid-structdnnl_1_1handle_1a498e45a0937a32367b400b09dbc3dac3>` () const;
		:ref:`operator bool<doxid-structdnnl_1_1handle_1ad14e2635ad97d873f0114ed77c1f55d5>` () const;
		bool :ref:`operator ==<doxid-structdnnl_1_1handle_1a069b5ea2a2c13fc4ebefd4fb51d0899e>` (const :ref:`handle<doxid-structdnnl_1_1handle>`<T, traits>& other) const;
		bool :ref:`operator !=<doxid-structdnnl_1_1handle_1a1895f4cd3fc3eca7560756c0c508e5ab>` (const :ref:`handle<doxid-structdnnl_1_1handle>`& other) const;
		:ref:`engine<doxid-structdnnl_1_1engine>` :ref:`get_engine<doxid-structdnnl_1_1primitive__desc__base_1a32f7477c79e715a341bb9127df521fbc>`() const;
		const char* :ref:`impl_info_str<doxid-structdnnl_1_1primitive__desc__base_1ae680492d4e4b16a938cfc051e5c906be>`() const;
		:ref:`memory::dim<doxid-structdnnl_1_1memory_1a281426f169daa042dcf5379c8fce21a9>` :ref:`query_s64<doxid-structdnnl_1_1primitive__desc__base_1acbedc4257eaa26f868356f9f594a856a>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what) const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`get_strides<doxid-structdnnl_1_1primitive__desc__base_1ab15fa4e08b75652e106ec7b7d6b13e8f>`() const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`get_dilations<doxid-structdnnl_1_1primitive__desc__base_1a0f2ef952e57da908a074422822e6dbaf>`() const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`get_padding_l<doxid-structdnnl_1_1primitive__desc__base_1aa21112a5d3d0d38a47b9bb74024c5904>`() const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`get_padding_r<doxid-structdnnl_1_1primitive__desc__base_1a004d4371015dc3ba06d57752b4ec1bb6>`() const;
		float :ref:`get_epsilon<doxid-structdnnl_1_1primitive__desc__base_1ab8c5aaea19030d62c667d4b79eb0d680>`() const;
	
		template <typename T = unsigned>
		T :ref:`get_flags<doxid-structdnnl_1_1primitive__desc__base_1a8081d18d2289f5b58634a2b902bea264>`() const;
	
		:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` :ref:`get_algorithm<doxid-structdnnl_1_1primitive__desc__base_1ae220e7adee4466f48e9a4781f0754461>`() const;
		float :ref:`get_alpha<doxid-structdnnl_1_1primitive__desc__base_1a73f6fcc68fd45166146a3c3d5eb49821>`() const;
		float :ref:`get_beta<doxid-structdnnl_1_1primitive__desc__base_1a29619c9f1308414bfdc8eb89fae7bd9d>`() const;
		int :ref:`get_axis<doxid-structdnnl_1_1primitive__desc__base_1af3b18a5a286f3b46e98b6fe8f45d60ac>`() const;
		:ref:`memory::dim<doxid-structdnnl_1_1memory_1a281426f169daa042dcf5379c8fce21a9>` :ref:`get_local_size<doxid-structdnnl_1_1primitive__desc__base_1a00e6f182172077df46fc6f614e309592>`() const;
		float :ref:`get_k<doxid-structdnnl_1_1primitive__desc__base_1ad28f7f1c59d2fde215d71483daaaa632>`() const;
		float :ref:`get_p<doxid-structdnnl_1_1primitive__desc__base_1acfde33696840f499f6e790e415bd65ba>`() const;
		std::vector<float> :ref:`get_factors<doxid-structdnnl_1_1primitive__desc__base_1a18ce555604ee8680353bb95aeca08665>`() const;
		:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` :ref:`get_cell_kind<doxid-structdnnl_1_1primitive__desc__base_1a940546a82d1381597863ecc7036b9c22>`() const;
		:ref:`dnnl::rnn_direction<doxid-group__dnnl__api__rnn_1ga33315cf335d1cbe26fd6b70d956e23d5>` :ref:`get_direction<doxid-structdnnl_1_1primitive__desc__base_1a7b9b95f2e16e3d2a9644df7ad5436f63>`() const;
		:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` :ref:`get_activation_kind<doxid-structdnnl_1_1primitive__desc__base_1acc309d5adeb8dbe8a88a18105082d566>`() const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`get_kernel<doxid-structdnnl_1_1primitive__desc__base_1a3c9a39d1d0375518b18cf762fdd04b7e>`() const;
		:ref:`memory::dim<doxid-structdnnl_1_1memory_1a281426f169daa042dcf5379c8fce21a9>` :ref:`get_group_size<doxid-structdnnl_1_1primitive__desc__base_1a03ad4fc755ae405a8a13d2c238266a15>`() const;
		:ref:`dnnl::prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` :ref:`get_prop_kind<doxid-structdnnl_1_1primitive__desc__base_1a9adba18a967c92b205e939ba34de3542>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`query_md<doxid-structdnnl_1_1primitive__desc__base_1a35d24b553ba6aa807516e9470fdd7d16>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what, int idx = 0) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`src_desc<doxid-structdnnl_1_1primitive__desc__base_1af42e791f493e636c086e13c6d4c06b43>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`dst_desc<doxid-structdnnl_1_1primitive__desc__base_1a495ee7c8e1ec3eab35f6329fdcd352bb>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_desc<doxid-structdnnl_1_1primitive__desc__base_1acb13d08987cca8d8f05ec4858fa61fb4>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_src_desc<doxid-structdnnl_1_1primitive__desc__base_1a733e6ff4e78a758e69ae6232e8955871>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_dst_desc<doxid-structdnnl_1_1primitive__desc__base_1a60f17d04c493c42e4a50ad5feff5c8ca>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_desc<doxid-structdnnl_1_1primitive__desc__base_1a192f7b334efac9a5ac20344a76d4d552>`(int idx) const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`src_desc<doxid-structdnnl_1_1primitive__desc__base_1af48dcff294cadb2916fd784b8474d221>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`dst_desc<doxid-structdnnl_1_1primitive__desc__base_1addbec977643a7900f4156f7aab3fb4db>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`weights_desc<doxid-structdnnl_1_1primitive__desc__base_1a93f0904566b399874c47b3b1ad3d1495>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_src_desc<doxid-structdnnl_1_1primitive__desc__base_1ab4268c6bb70dd6c22de43141cc301b77>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_dst_desc<doxid-structdnnl_1_1primitive__desc__base_1a6b9fb7da987329256c04db6ecbb9dc36>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`diff_weights_desc<doxid-structdnnl_1_1primitive__desc__base_1af51378982968e2b4f7abb6a32acfb0af>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`workspace_desc<doxid-structdnnl_1_1primitive__desc__base_1ad26f416a149cb44cc5cfc130012c614e>`() const;
		:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` :ref:`scratchpad_desc<doxid-structdnnl_1_1primitive__desc__base_1a6238358ec03afd57fb20dffa65b48d2f>`() const;
		:ref:`engine<doxid-structdnnl_1_1engine>` :ref:`scratchpad_engine<doxid-structdnnl_1_1primitive__desc__base_1ad4079e0891373bd2dc841f3f94cf47ed>`() const;
		:ref:`primitive_attr<doxid-structdnnl_1_1primitive__attr>` :ref:`get_primitive_attr<doxid-structdnnl_1_1primitive__desc__base_1a0ef600ea3666f0fd93c9c5d112aaf05c>`() const;
		:ref:`dnnl::primitive::kind<doxid-structdnnl_1_1primitive_1ad1ec93215a0cf3aa0a32bae0c2cd9169>` :ref:`get_kind<doxid-structdnnl_1_1primitive__desc__base_1a663f3511855bfc2625476019321c909d>`() const;
		std::vector<uint8_t> :ref:`get_cache_blob_id<doxid-structdnnl_1_1primitive__desc__base_1a435862df4d543eb8296424880212b22d>`() const;
		bool :ref:`next_impl<doxid-structdnnl_1_1primitive__desc_1a841df469ca54c3de2d233e46f48322b2>`();
		:ref:`primitive_desc_base<doxid-structdnnl_1_1primitive__desc_1a27780142d0880bb0ca678f7c5a1845b9>`();
		:ref:`primitive_desc_base<doxid-structdnnl_1_1primitive__desc_1aae07f2f06d74537546c3056bd305dfbe>`();
		:ref:`primitive_desc_base<doxid-structdnnl_1_1primitive__desc_1af4eac2eea0fd4eb37c0c90ead14ad52b>`();
		:ref:`primitive_desc_base<doxid-structdnnl_1_1primitive__desc_1aa4853f3190cac45b653e510b6eeed97a>`();

	protected:
		// typedefs
	
		typedef :ref:`primitive_desc_base<doxid-structdnnl_1_1primitive__desc__base>` :ref:`base<doxid-structdnnl_1_1primitive__desc__base_1ac95cb474ef20402d120d3a253225efeb>`;

		// methods
	
		bool :ref:`operator ==<doxid-structdnnl_1_1handle_1aa0e0e2a9e13dea0d3263895d05e85651>` (const T other) const;
		bool :ref:`operator !=<doxid-structdnnl_1_1handle_1a5ce52e316db91b7bf81ded1067324d27>` (const T other) const;
		float :ref:`query_f32<doxid-structdnnl_1_1primitive__desc__base_1aac2d65e11e31277bdcd8c45c535f4904>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what) const;
		:ref:`algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` :ref:`query_alg<doxid-structdnnl_1_1primitive__desc__base_1a8900dd626600d817448cd817842386fe>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what) const;
		:ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>` :ref:`query_dims<doxid-structdnnl_1_1primitive__desc__base_1a80fccdba1716378a8bf76db2134e3d8b>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what) const;
		:ref:`engine<doxid-structdnnl_1_1engine>` :ref:`query_engine<doxid-structdnnl_1_1primitive__desc__base_1a6aa3cf6000aabcf202fda2197a0b8e70>`(:ref:`query<doxid-group__dnnl__api__primitives__common_1ga94efdd650364f4d9776cfb9b711cbdc1>` what) const;
		void :ref:`reset_with_clone<doxid-structdnnl_1_1primitive__desc__base_1a657087d16749edfbf21f557377f1e55f>`(:ref:`const_dnnl_primitive_desc_t<doxid-group__dnnl__api__primitives__common_1gab604e76e39a791e855bc6bb4ee13c63f>` pd);
		:ref:`const_dnnl_memory_desc_t<doxid-group__dnnl__api__memory_1ga402f0cb4399cd56445803cfa433aac6d>` :ref:`optional_arg<doxid-structdnnl_1_1primitive__desc__base_1ae29cd9236aa435d960142e353d8da660>`(const :ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>`* md);
		const :ref:`dnnl_dim_t<doxid-group__dnnl__api__data__types_1ga872631b12a112bf43fba985cba24dd20>`* :ref:`optional_arg<doxid-structdnnl_1_1primitive__desc__base_1a48cd2ea7a79b161431e1cc62b1a9e016>`(const :ref:`memory::dims<doxid-structdnnl_1_1memory_1a7d9f4b6ad8caf3969f436cd9ff27e9bb>`* dims);
		const float* :ref:`optional_arg<doxid-structdnnl_1_1primitive__desc__base_1afa67a476673d6157b215ecd2ec021c73>`(const std::vector<float>* arg);
		static const :ref:`primitive_attr<doxid-structdnnl_1_1primitive__attr>`& :ref:`default_attr<doxid-structdnnl_1_1primitive__desc__base_1a11b068a79808c04e4f9bcaffb0e34bb2>`();

.. _details-structdnnl_1_1rnn__primitive__desc__base:

Detailed Documentation
~~~~~~~~~~~~~~~~~~~~~~

Base class for primitive descriptors for RNN primitives.

Construction
------------

.. index:: pair: function; rnn_primitive_desc_base
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a5f08b3113b2f2b4b67d9348ef7046251:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	rnn_primitive_desc_base()

Default constructor. Produces an empty object.

.. index:: pair: function; rnn_primitive_desc_base
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a91be3d723ce87dc5498d061f269f9705:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	rnn_primitive_desc_base(
		:ref:`dnnl_primitive_desc_t<doxid-group__dnnl__api__primitives__common_1gaabde3e27edf071b62b39f47bace7efd6>` pd,
		:ref:`dnnl::prop_kind<doxid-group__dnnl__api__attributes_1gac7db48f6583aa9903e54c2a39d65438f>` aprop_kind,
		:ref:`dnnl::algorithm<doxid-group__dnnl__api__attributes_1ga00377dd4982333e42e8ae1d09a309640>` cell_kind
		)

Constructs an RNN primitive descriptor base from a C API primitive descriptor while checking that it actually describes the expected primitive by comparing propagation and primitive kinds.



.. rubric:: Parameters:

.. list-table::
	:widths: 20 80

	*
		- pd

		- C API primitive descriptor.

	*
		- aprop_kind

		- Expected propagation kind.

	*
		- cell_kind

		- Expected cell kind.

Methods
-------

.. index:: pair: function; src_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1ae49709b806f2cb108affe1ec5aebb504:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` src_layer_desc() const

Returns source layer memory descriptor.



.. rubric:: Returns:

Source layer memory descriptor.

.. index:: pair: function; augru_attention_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a392b10f6a2c15be9e8c37a53d3aed786:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` augru_attention_desc() const

Returns AUGRU attention memory descriptor.



.. rubric:: Returns:

AUGRU attention memory descriptor.

.. index:: pair: function; src_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1ab73a02922a9a7d2f0d6066572d5c6a09:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` src_iter_desc() const

Returns source iteration memory descriptor.



.. rubric:: Returns:

Source iteration memory descriptor.

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

.. index:: pair: function; src_iter_c_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1ab37877634785901c8d8850d1a928c9b2:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` src_iter_c_desc() const

Returns source recurrent cell state memory descriptor.



.. rubric:: Returns:

Source recurrent cell state memory descriptor.

.. index:: pair: function; weights_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a20737480e3672640657a34afd631f11f:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` weights_layer_desc() const

Returns weights layer memory descriptor.



.. rubric:: Returns:

Weights layer memory descriptor.

.. index:: pair: function; weights_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a2464426ea23b9d026fd5d2c8d92c942a:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` weights_iter_desc() const

Returns weights iteration memory descriptor.



.. rubric:: Returns:

Weights iteration memory descriptor.

.. index:: pair: function; weights_peephole_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a1d634c656c92e69393cd52a4551c951b:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` weights_peephole_desc() const

Returns weights peephole memory descriptor.



.. rubric:: Returns:

Weights peephole memory descriptor.

.. index:: pair: function; weights_projection_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1ac42d2cf801857a02db5c23e4a4d4eba1:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` weights_projection_desc() const

Returns weights projection memory descriptor.



.. rubric:: Returns:

Weights projection memory descriptor.

.. index:: pair: function; bias_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1ac2045ddda996b5e3ac2c0974ca70bfa1:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` bias_desc() const

Returns bias memory descriptor.



.. rubric:: Returns:

Bias memory descriptor.

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

.. index:: pair: function; dst_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1aa9a4652f8f5c8d1b32d2f26deac70f92:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` dst_layer_desc() const

Returns destination layer memory descriptor.



.. rubric:: Returns:

Destination layer memory descriptor.

.. index:: pair: function; dst_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1af82a946c412df434d8842292d77a496c:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` dst_iter_desc() const

Returns destination iteration memory descriptor.



.. rubric:: Returns:

Destination iteration memory descriptor.

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

.. index:: pair: function; dst_iter_c_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a1d56829ac12568aea3a7203631e7c202:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` dst_iter_c_desc() const

Returns destination recurrent cell state memory descriptor.



.. rubric:: Returns:

Destination recurrent cell state memory descriptor.

.. index:: pair: function; diff_src_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1afbf93e3cf53b5ef7d04a0b2fcb41f77b:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_src_layer_desc() const

Returns diff source layer memory descriptor.



.. rubric:: Returns:

Diff source layer memory descriptor.

.. index:: pair: function; diff_augru_attention_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a6d15e90406d096ea3df0233bf164114c:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_augru_attention_desc() const

Returns diff AUGRU attention memory descriptor.



.. rubric:: Returns:

Diff AUGRU attention memory descriptor.

.. index:: pair: function; diff_src_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a248bcc0f5bec8d76eda24ad391693fa2:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_src_iter_desc() const

Returns diff source iteration memory descriptor.



.. rubric:: Returns:

Diff source iteration memory descriptor.

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

.. index:: pair: function; diff_src_iter_c_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a6f3d6865c312c3231ff7dec8df561ecb:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_src_iter_c_desc() const

Returns diff source recurrent cell state memory descriptor.



.. rubric:: Returns:

Diff source recurrent cell state memory descriptor.

.. index:: pair: function; diff_weights_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a1df1f7cb00c68c73bc4320d7b5fda7bb:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_weights_layer_desc() const

Returns diff weights layer memory descriptor.



.. rubric:: Returns:

Diff weights layer memory descriptor.

.. index:: pair: function; diff_weights_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a4243bb55a8d07fa66a3c44633996e73b:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_weights_iter_desc() const

Returns diff weights iteration memory descriptor.



.. rubric:: Returns:

Diff weights iteration memory descriptor.

.. index:: pair: function; diff_weights_peephole_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1af8f947d6baeee3cded8f178c0d87532a:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_weights_peephole_desc() const

Returns diff weights peephole memory descriptor.



.. rubric:: Returns:

Diff weights peephole memory descriptor.

.. index:: pair: function; diff_weights_projection_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1aab56611714a0496cfe15a36e68b2c495:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_weights_projection_desc() const

Returns diff weights projection memory descriptor.



.. rubric:: Returns:

Diff weights projection memory descriptor.

.. index:: pair: function; diff_bias_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1aa81c0dbda6447fe83d1d37122fdc708c:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_bias_desc() const

Returns diff bias memory descriptor.



.. rubric:: Returns:

Diff bias memory descriptor.

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

.. index:: pair: function; diff_dst_layer_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1aeb8d331bd2bcb80bd06ec729175e4314:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_dst_layer_desc() const

Returns diff destination layer memory descriptor.



.. rubric:: Returns:

Diff destination layer memory descriptor.

.. index:: pair: function; diff_dst_iter_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a4a5eceabe7b1ffd9f181376192f5d397:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_dst_iter_desc() const

Returns diff destination iteration memory descriptor.



.. rubric:: Returns:

Diff destination iteration memory descriptor.

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

.. index:: pair: function; diff_dst_iter_c_desc
.. _doxid-structdnnl_1_1rnn__primitive__desc__base_1a33e735717f2dffa22cc28e90e20bd344:

.. ref-code-block:: cpp
	:class: doxyrest-title-code-block

	:ref:`memory::desc<doxid-structdnnl_1_1memory_1_1desc>` diff_dst_iter_c_desc() const

Returns diff destination recurrent cell state memory descriptor.



.. rubric:: Returns:

Diff destination recurrent cell state memory descriptor.

