|
Intel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN)
0.17
Performance library for Deep Learning
|
A primitive to describe and store data. More...
Functions | |
| mkldnn_status_t MKLDNN_API | mkldnn_memory_desc_init (mkldnn_memory_desc_t *memory_desc, int ndims, const mkldnn_dims_t dims, mkldnn_data_type_t data_type, mkldnn_memory_format_t format) |
Initializes a memory_desc memory descriptor using ndims, dims, data_type, and data format. More... | |
| mkldnn_status_t MKLDNN_API | mkldnn_memory_primitive_desc_create (mkldnn_primitive_desc_t *memory_primitive_desc, const mkldnn_memory_desc_t *memory_desc, mkldnn_engine_t engine) |
Creates a memory_primitive_desc memory primitive descriptor using memory_desc and engine. More... | |
| mkldnn_status_t MKLDNN_API | mkldnn_view_primitive_desc_create (mkldnn_primitive_desc_t *view_primitive_desc, const_mkldnn_primitive_desc_t memory_primitive_desc, const mkldnn_dims_t dims, const mkldnn_dims_t offsets) |
Creates a view_primitive_desc for a given memory_primitive_desc, with dims sizes and offset offsets. More... | |
| int MKLDNN_API | mkldnn_memory_primitive_desc_equal (const_mkldnn_primitive_desc_t lhs, const_mkldnn_primitive_desc_t rhs) |
| Compares two descriptors of memory primitives. More... | |
| size_t MKLDNN_API | mkldnn_memory_primitive_desc_get_size (const_mkldnn_primitive_desc_t memory_primitive_desc) |
Returns the size (in bytes) that is required for given memory_primitive_desc. More... | |
| mkldnn_status_t MKLDNN_API | mkldnn_memory_get_data_handle (const_mkldnn_primitive_t memory, void **handle) |
For a memory primitive, returns the data handle. More... | |
| mkldnn_status_t MKLDNN_API | mkldnn_memory_set_data_handle (mkldnn_primitive_t memory, void *handle) |
For a memory primitive, sets the data handle. More... | |
A primitive to describe and store data.
The library supports various data types and formats. Memory hierarchy consists of three levels of abstraction:
void*). The data handle can be queried using mkldnn_memory_get_data_handle() and be set using mkldnn_memory_set_data_handle(). The latter function always sets the memory in the padding region to zero which is the invariant maintained by all the primitives in Intel MKL-DNN. See Understanding Memory Formats for more details. A memory primitive can be created using mkldnn_primitive_create() with empty inputs and outputs. In this case, the memory primitive's data handle needs to be set manually using mkldnn_memory_set_data_handle().Along with ordinary memory with all dimensions being positive, Intel MKL-DNN supports zero-volume memory with one or more dimensions set to zero. This is to support NumPy* convention. If a zero-volume memory is passed to a primitive, the primitive would not perform any computations on this memory. For example:
(0 batch, 3 input channels, 13 height, 13 width) source and (16 output channels, 3 inputs, channel, 3 height, 3 width) weights would produce (0 batch, 16 ouput channels, 11 height, 11 width) destination (assuming strides are 1 and paddings are zero) and perform zero multiply-add operations.(3, 4, 13, 13), (3, 0, 13, 13), and (3, 1, 13, 13) along the second axis would produce the output of the shape (3, 5, 13, 13), effectively ignoring the second input (however if user created a concatenation primitive descriptor with 3 inputs they should also provide all 3 memories to the concatenation primitive, including the one with zero second dimension).Data handle of zero-volume memory is never accessed and hence can be unset (NULL in case of CPU engine).
| mkldnn_status_t MKLDNN_API mkldnn_memory_desc_init | ( | mkldnn_memory_desc_t * | memory_desc, |
| int | ndims, | ||
| const mkldnn_dims_t | dims, | ||
| mkldnn_data_type_t | data_type, | ||
| mkldnn_memory_format_t | format | ||
| ) |
Initializes a memory_desc memory descriptor using ndims, dims, data_type, and data format.
format can be mkldnn_any, which means that specific data layouts are not permitted.
| mkldnn_status_t MKLDNN_API mkldnn_memory_primitive_desc_create | ( | mkldnn_primitive_desc_t * | memory_primitive_desc, |
| const mkldnn_memory_desc_t * | memory_desc, | ||
| mkldnn_engine_t | engine | ||
| ) |
Creates a memory_primitive_desc memory primitive descriptor using memory_desc and engine.
memory_desc cannot be uncertain, that is, initialized with mkldnn_any.
| mkldnn_status_t MKLDNN_API mkldnn_view_primitive_desc_create | ( | mkldnn_primitive_desc_t * | view_primitive_desc, |
| const_mkldnn_primitive_desc_t | memory_primitive_desc, | ||
| const mkldnn_dims_t | dims, | ||
| const mkldnn_dims_t | offsets | ||
| ) |
Creates a view_primitive_desc for a given memory_primitive_desc, with dims sizes and offset offsets.
May fail if layout used does not allow obtain desired view. In this case consider using extract primitive
| int MKLDNN_API mkldnn_memory_primitive_desc_equal | ( | const_mkldnn_primitive_desc_t | lhs, |
| const_mkldnn_primitive_desc_t | rhs | ||
| ) |
Compares two descriptors of memory primitives.
Use this function to identify whether a reorder is required for the memory primitives. lhs and rhs must be either memory or view primitive descriptors.
| size_t MKLDNN_API mkldnn_memory_primitive_desc_get_size | ( | const_mkldnn_primitive_desc_t | memory_primitive_desc | ) |
Returns the size (in bytes) that is required for given memory_primitive_desc.
| mkldnn_status_t MKLDNN_API mkldnn_memory_get_data_handle | ( | const_mkldnn_primitive_t | memory, |
| void ** | handle | ||
| ) |
For a memory primitive, returns the data handle.
For the CPU engine, the data handle is a pointer to the actual data.
| mkldnn_status_t MKLDNN_API mkldnn_memory_set_data_handle | ( | mkldnn_primitive_t | memory, |
| void * | handle | ||
| ) |
For a memory primitive, sets the data handle.
1.8.13