struct dnnl::primitive_desc¶
Overview¶
A base class for descriptors of all primitives that have an operation descriptor and that support iteration over multiple implementations. More…
#include <dnnl.hpp> struct primitive_desc: public dnnl::primitive_desc_base { // construction primitive_desc(); primitive_desc( const_dnnl_op_desc_t desc, const primitive_attr* attr, const engine& aengine, const_dnnl_primitive_desc_t hint_fwd_pd, bool allow_empty = false ); // methods bool next_impl(); primitive_desc_base(); primitive_desc_base(); primitive_desc_base(); primitive_desc_base(); }; // direct descendants struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct rnn_primitive_desc_base; struct primitive_desc; struct primitive_desc; struct primitive_desc; struct primitive_desc;
Inherited Members¶
public: // methods handle<T, traits>& operator = (const handle<T, traits>&); handle<T, traits>& operator = (handle<T, traits>&&); 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; engine get_engine() const; const char* impl_info_str() const; memory::dim query_s64(query what) 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;
Detailed Documentation¶
A base class for descriptors of all primitives that have an operation descriptor and that support iteration over multiple implementations.
Construction¶
primitive_desc( const_dnnl_op_desc_t desc, const primitive_attr* attr, const engine& aengine, const_dnnl_primitive_desc_t hint_fwd_pd, bool allow_empty = false )
Constructs a primitive descriptor.
Note
If allow_empty
is true, the constructor does not throw if a primitive descriptor cannot be created. But calling next_impl() in this case will throw.
Note
This is a low-level implementation detail that is typically not needed in application code.
Parameters:
desc |
Constant C API operation descriptor. |
attr |
Pointer to primitive attributes. It is safe to pass nullptr to indicate absence of attributes. |
aengine |
Engine to use. |
hint_fwd_pd |
C API primitive descriptor for a forward propagation primitive. It is used as a hint for deciding which memory format to use for backward propagation or weights gradient. |
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. |
Methods¶
bool next_impl()
Advances the primitive iterator to the next implementation.
Returns:
true
on success, and false
if the last implementation reached, and the primitive descriptor itself is kept unchanged
primitive_desc_base()
Default constructor. Produces an empty object.
primitive_desc_base()
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after verifying that it is what the caller expects.
Note
The prim_kind
should map to a primitive that does not have different values of propagation kind (e.g. dnnl::binary).
Note
Primitive descriptor base constructed this way does not support next_impl() (will throw).
Parameters:
pd |
C API primitive descriptor to clone. |
prim_kind |
Expected primitive kind. |
primitive_desc_base()
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after verifying that it is what the caller expects.
Note
Primitive descriptor base constructed this way does not support next_impl() (will throw).
Parameters:
pd |
C API primitive descriptor to clone. |
prim_kind |
Expected primitive kind. |
aprop_kind |
Expected propagation kind. |
primitive_desc_base()
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after verifying that it is what the caller expects.
Note
Primitive descriptor base constructed this way does not support next_impl() (will throw).
Parameters:
pd |
C API primitive descriptor to clone. |
prim_kind |
Expected primitive kind. |
prop_kind1 |
Expected propagation kind (option 1). |
prop_kind2 |
Expected propagation kind (option 2). This value is checked if the check with |