Eltwise

Overview

A primitive to perform elementwise operations such as the rectifier linear unit (ReLU). More…

// structs

struct dnnl::eltwise_backward;
struct dnnl::eltwise_forward;

// global functions

dnnl_status_t DNNL_API dnnl_eltwise_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_alg_kind_t alg_kind,
    const_dnnl_memory_desc_t src_desc,
    const_dnnl_memory_desc_t dst_desc,
    float alpha,
    float beta,
    const_dnnl_primitive_attr_t attr
    );

dnnl_status_t DNNL_API dnnl_eltwise_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_alg_kind_t alg_kind,
    const_dnnl_memory_desc_t diff_src_desc,
    const_dnnl_memory_desc_t diff_dst_desc,
    const_dnnl_memory_desc_t data_desc,
    float alpha,
    float beta,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    );

Detailed Documentation

A primitive to perform elementwise operations such as the rectifier linear unit (ReLU).

Both forward and backward propagation primitives support in-place operation; that is, src and dst can refer to the same memory for forward propagation, and diff_dst and diff_src can refer to the same memory for backward propagation.

Warning

Because the original source data is required for backward propagation, in-place forward propagation is not generally supported in the training mode. However, for algorithms supporting destination as input memory, dst can be used for the backward propagation, which makes it possible to get performance benefit even in the training mode.

See also:

Eltwise in developer guide

Global Functions

dnnl_status_t DNNL_API dnnl_eltwise_forward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_prop_kind_t prop_kind,
    dnnl_alg_kind_t alg_kind,
    const_dnnl_memory_desc_t src_desc,
    const_dnnl_memory_desc_t dst_desc,
    float alpha,
    float beta,
    const_dnnl_primitive_attr_t attr
    )

Creates a primitive descriptor for an eltwise forward propagation primitive.

Parameters:

primitive_desc

Output primitive descriptor.

engine

Engine to use.

prop_kind

Propagation kind. Possible values are dnnl_forward_training and dnnl_forward_inference.

alg_kind

Elementwise algorithm kind.

src_desc

Source memory descriptor.

dst_desc

Destination memory descriptor.

alpha

The alpha parameter for the elementwise operation. Specific meaning depends on the algorithm.

beta

The beta parameter for the elementwise operation. Specific meaning depends on the algorithm.

attr

Primitive attributes (can be NULL).

Returns:

dnnl_success on success and a status describing the error otherwise.

dnnl_status_t DNNL_API dnnl_eltwise_backward_primitive_desc_create(
    dnnl_primitive_desc_t* primitive_desc,
    dnnl_engine_t engine,
    dnnl_alg_kind_t alg_kind,
    const_dnnl_memory_desc_t diff_src_desc,
    const_dnnl_memory_desc_t diff_dst_desc,
    const_dnnl_memory_desc_t data_desc,
    float alpha,
    float beta,
    const_dnnl_primitive_desc_t hint_fwd_pd,
    const_dnnl_primitive_attr_t attr
    )

Creates a primitive descriptor for an eltwise backward propagation primitive.

Parameters:

primitive_desc

Output primitive descriptor.

engine

Engine to use.

alg_kind

Elementwise algorithm kind.

diff_src_desc

Diff source memory descriptor.

diff_dst_desc

Diff destination memory descriptor.

data_desc

Destination memory descriptor if one of the “use_dst_for_bwd” algorithms are used (such as dnnl_eltwise_relu_use_dst_for_bwd), source memory descriptor otherwise.

alpha

The alpha parameter for the elementwise operation. Specific meaning depends on the algorithm.

beta

The beta parameter for the elementwise operation. Specific meaning depends on the algorithm.

hint_fwd_pd

Primitive descriptor for a respective forward propagation primitive.

attr

Primitive attributes (can be NULL).

Returns:

dnnl_success on success and a status describing the error otherwise.