Skip to content

Latest commit

 

History

History
135 lines (84 loc) · 3.73 KB

File metadata and controls

135 lines (84 loc) · 3.73 KB

quinaryBlockSize

Resolve a loop block size for multi-dimensional array tiled loops.

Usage

var quinaryBlockSize = require( '@stdlib/ndarray/base/quinary-tiling-block-size' );

quinaryBlockSize( dtypeX, dtypeY, dtypeZ, dtypeW, dtypeU, dtypeV )

Resolves a loop block size according to provided ndarray dtypes for multi-dimensional array tiled loops applying a quinary function.

var bsize = quinaryBlockSize( 'float64', 'float64', 'float64', 'float64', 'float64', 'float64' );
// returns <number>

The function supports the following arguments:

  • dtypeX: first input array data type.
  • dtypeY: second input array data type.
  • dtypeZ: third input array data type.
  • dtypeW: fourth input array data type.
  • dtypeU: fifth input array data type.
  • dtypeV: output array data type.

Notes

  • The returned loop tiling block size is in units of elements.

Examples

var dtypes = require( '@stdlib/ndarray/dtypes' );
var cartesianPower = require( '@stdlib/array/base/cartesian-power' );
var promotionRules = require( '@stdlib/ndarray/promotion-rules' );
var quinaryBlockSize = require( '@stdlib/ndarray/base/quinary-tiling-block-size' );

// Generate a list of input ndarray dtype quintuplets:
var dt = cartesianPower( dtypes(), 5 );

// Resolve the block size for each dtype quintuplet and its promoted dtype...
var t;
var b;
var i;
console.log( 'block_size, xdtype, ydtype, zdtype, wdtype, udtype, vdtype' );
for ( i = 0; i < dt.length; i++ ) {
    t = promotionRules.apply( null, dt[ i ] );
    dt[ i ].push( ( t === -1 ) ? 'generic' : t );
    b = quinaryBlockSize.apply( null, dt[ i ] );
    console.log( '%d, %s, %s, %s, %s, %s, %s', b, dt[i][0], dt[i][1], dt[i][2], dt[i][3], dt[i][4], dt[i][5] );
}