A high-performance general-purpose compute library

Return the maximum along a given dimension, according to an array of keys. More...

Functions

AFAPI void maxByKey (array &keys_out, array &vals_out, const array &keys, const array &vals, const int dim=-1)
 C++ Interface to return the maximum along a given dimension, according to an array of keys. More...
 
AFAPI af_err af_max_by_key (af_array *keys_out, af_array *vals_out, const af_array keys, const af_array vals, const int dim)
 C Interface to return the maximum along a given dimension, according to an array of keys. More...
 

Detailed Description

Return the maximum along a given dimension, according to an array of keys.

The maximum is returned from the values corresponding to each group of consecutive equal keys. Keys can repeat; however, only consecutive key values will be considered for each reduction. If a key value is repeated somewhere else in the keys array it will be considered the start of a new reduction. There are two outputs: the reduced set of consecutive keys and the corresponding final set of reduced values.

An example demonstrating the reduction behavior can be seen in the following snippet.

array keys(9, hkeys); // keys = [ 0 0 1 1 1 0 0 2 2 ]
array vals(9, hvals); // vals = [ 1 2 3 4 5 6 7 8 9 ];
array okeys, ovals;
maxByKey(okeys, ovals, keys, vals);
// okeys = [ 0 1 0 2 ]
// ovals = [ 2 5 7 9 ]

The keys' input type must be integer (s32 or u32).

The output type is the same as input type.

The keys array must be 1-dimenstional matching the size of the reduced dimension. An example of multi-dimensional reduce-by-key can be seen below:

array keys(5, hkeys);
array vals(2, 5, hvals);
// keys = [ 1 0 0 2 2 ]
// vals = [[ 1 2 3 4 5 ]
// [ 6 7 8 9 10 ]]
const int reduce_dim = 1;
array okeys, ovals;
maxByKey(okeys, ovals, keys, vals, reduce_dim);
// okeys = [ 1 0 2 ]
// ovals = [[ 1 3 5 ],
// [ 6 8 10 ]]

Function Documentation

◆ af_max_by_key()

AFAPI af_err af_max_by_key ( af_array keys_out,
af_array vals_out,
const af_array  keys,
const af_array  vals,
const int  dim 
)

C Interface to return the maximum along a given dimension, according to an array of keys.

Parameters
[out]keys_outreduced keys
[out]vals_outmaximum
[in]keyskeys array
[in]valsinput array
[in]dimdimension along which the maximum is found
Returns
AF_SUCCESS, if function returns successfully, else an af_err code is given

◆ maxByKey()

AFAPI void maxByKey ( array keys_out,
array vals_out,
const array keys,
const array vals,
const int  dim = -1 
)

C++ Interface to return the maximum along a given dimension, according to an array of keys.

NaN values are ignored.

Parameters
[out]keys_outreduced keys
[out]vals_outmaximum
[in]keyskeys array
[in]valsinput array
[in]dimdimension along which the maximum is found, -1 denotes the first non-singleton dimension