reduce_tile

template<PoolType reduce_type = REDUCE_OP, ReduceDim reduce_dim = REDUCE_DIM>
void ckernel::reduce_tile(uint32_t icb0, uint32_t icb1, uint32_t itile0, uint32_t itile1, uint32_t idst)

Performs a reduction operation B = reduce(A) using reduce_func for dimension reduction on a tile in the CB at a given index and writes the result to the DST register at index dst_tile_index. Reduction can be either of type Reduce::R, Reduce::C or Reduce::RC, identifying the dimension(s) to be reduced in size to 1. The DST register buffer must be in acquired state via acquire_dst call.

The templates takes reduce_type which can be ReduceFunc::Sum, ReduceFunc::Max and reduce_dim which can be Reduce::R, Reduce::C, Reduce::RC. They can also be specified by defines REDUCE_OP and REDUCE_DIM.

This call is blocking and is only available on the compute engine.

Return value: None

Argument

Description

Type

Valid Range

Required

icb0

The identifier of the circular buffer (CB) containing A

uint32_t

0 to 31

True

icb1

CB for Scaling factor applied to each element of the result.

uint32_t

0 to 31

True

itile0

The index of the tile within the first CB

uint32_t

Must be less than the size of the CB

True

itile1

The index of the tile within the scaling factor CB

uint32_t

Must be less than the size of the CB

True

idst

The index of the tile in DST REG for the result

uint32_t

Must be less than the acquired size of DST REG

True