Intel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN)  1.0.4
Performance library for Deep Learning
Modules | Functions

An extension for controlling primitive behavior. More...

Modules

 Sequence of post operations
 An extension for performing extra operations after a base operation.
 

Functions

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_create (mkldnn_primitive_attr_t *attr)
 Creates an empty (default) attr attribute. More...
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_clone (mkldnn_primitive_attr_t *attr, const_mkldnn_primitive_attr_t existing_attr)
 Makes a copy of an existing_attr.
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_destroy (mkldnn_primitive_attr_t attr)
 Deletes an attr.
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_get_scratchpad_mode (const_mkldnn_primitive_attr_t attr, mkldnn_scratchpad_mode_t *mode)
 Returns the scratchpad mode set in the attribute attr.
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_scratchpad_mode (mkldnn_primitive_attr_t attr, mkldnn_scratchpad_mode_t mode)
 Sets scratchpad mode. More...
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_get_output_scales (const_mkldnn_primitive_attr_t attr, mkldnn_dim_t *count, int *mask, const float **scales)
 Returns count, correspondence scale mask, and a pointer to a constant floating point array of output scales for given attr, previously set by mkldnn_primitive_attr_set_output_scales. More...
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_output_scales (mkldnn_primitive_attr_t attr, mkldnn_dim_t count, int mask, const float *scales)
 Sets output scales for primitive operations. More...
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_get_post_ops (const_mkldnn_primitive_attr_t attr, const_mkldnn_post_ops_t *post_ops)
 Returns post_ops for given attr. More...
 
mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_post_ops (mkldnn_primitive_attr_t attr, const_mkldnn_post_ops_t post_ops)
 Sets configured post_ops to an attribute attr for future use (when primitive descriptor is being created). More...
 

Detailed Description

An extension for controlling primitive behavior.

Function Documentation

◆ mkldnn_primitive_attr_create()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_create ( mkldnn_primitive_attr_t attr)

Creates an empty (default) attr attribute.

All the parameters are set to default values.

An empty attribute is used in primitive descriptor creation whenever it is not passed explicitly, e.g. in mkldnn_primitive_desc_create.

◆ mkldnn_primitive_attr_set_scratchpad_mode()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_scratchpad_mode ( mkldnn_primitive_attr_t  attr,
mkldnn_scratchpad_mode_t  mode 
)

Sets scratchpad mode.

The possible values are: mkldnn_scratchpad_mode_library (default) and mkldnn_scratchpad_mode_user.

◆ mkldnn_primitive_attr_get_output_scales()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_get_output_scales ( const_mkldnn_primitive_attr_t  attr,
mkldnn_dim_t count,
int *  mask,
const float **  scales 
)

Returns count, correspondence scale mask, and a pointer to a constant floating point array of output scales for given attr, previously set by mkldnn_primitive_attr_set_output_scales.

Warning
The scales array points to the internal attr field, so the user should not modify or destroy scales.
The lifetime of scales is the same as that of the attr to which it belongs, so it is illegal to use scales after attr is destroyed.

◆ mkldnn_primitive_attr_set_output_scales()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_output_scales ( mkldnn_primitive_attr_t  attr,
mkldnn_dim_t  count,
int  mask,
const float *  scales 
)

Sets output scales for primitive operations.

The number of elements count and correspondence scale mask are stored for future use.

The mask argument defines the correspondence between the output tensor dimensions and the scales array. Set the i-th bit of mask to 1 to use a dedicated scaling factor for each slice of the output tensor over the i-th dimension. Set mask to 0 to use a common scaling factor for the whole output tensor.

Note
The dimension order is always native and does not depend on the actual layout used. Examples:
  • 2D dimensional data the order of dimensions is always: (n, c)
  • 4D dimensional data the order is always: (n, c, h, w)
  • 5D dimensional weights the order is always: (g, oc, ic, kh, kw)

Example usage:

int mb = 32, oc = 32, oh = 14, ow = 14; // convolution output params
float scales[oc] = { ... }; // unique output scales per output channel
int oc_dim = 1; // mb_dim = 0, channel_dim = 1, height_dim = 2, ...
mkldnn_convolution_desc_t cd; // create & configure convolution op_desc
mkldnn_primitive_attr_create(&attr); // create default attributes
mkldnn_primitive_attr_set_output_scales(attr, oc, 1 << oc_dim, scales);
mkldnn_primitive_desc_create(&cpd, &cd, attr, NULL);
Note
There is no way to check that count corresponds to mask until an actual primitive descriptor is created, so it is the user's responsibility to set proper values. The following formula must hold:

\[count = \prod\limits_{d \in mask} output.dims[d]\]

◆ mkldnn_primitive_attr_get_post_ops()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_get_post_ops ( const_mkldnn_primitive_attr_t  attr,
const_mkldnn_post_ops_t post_ops 
)

Returns post_ops for given attr.

Warning
post_ops points to the internal attr field, so the user should not modify or destroy post_ops. Also, the lifetime of post_ops is the same as that of the attr it belongs to, so it is illegal to use post_ops after attr has been destroyed.

◆ mkldnn_primitive_attr_set_post_ops()

mkldnn_status_t MKLDNN_API mkldnn_primitive_attr_set_post_ops ( mkldnn_primitive_attr_t  attr,
const_mkldnn_post_ops_t  post_ops 
)

Sets configured post_ops to an attribute attr for future use (when primitive descriptor is being created).

Note
At this point in time, there is no way to check whether the primitive descriptor does or does not support a given sequence of post operations. Therefore the user should handle an error that might occur at the mkldnn_primitive_desc_create call.