Skip to content

Commit dad2d78

Browse files
committed
Auto-generated commit
1 parent 98f5369 commit dad2d78

File tree

10 files changed

+249
-230
lines changed

10 files changed

+249
-230
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,7 @@ A total of 38 issues were closed in this release:
689689

690690
<details>
691691

692+
- [`016b07f`](https://github.com/stdlib-js/stdlib/commit/016b07f8610e21332af7bfbc38afbacdbeac8583) - **refactor:** rename/reorder parameters _(by Athan Reines)_
692693
- [`5f0a844`](https://github.com/stdlib-js/stdlib/commit/5f0a844380510aaa97c8ca7d1b539868132ae2e7) - **refactor:** rename/reorder parameters _(by Athan Reines)_
693694
- [`f40ccb7`](https://github.com/stdlib-js/stdlib/commit/f40ccb75929e92538b8c366145589addccdaafbe) - **feat:** add `ndarray/base/ternary-loop-interchange-order` [(#9499)](https://github.com/stdlib-js/stdlib/pull/9499) _(by Muhammad Haris, Athan Reines)_
694695
- [`1f79854`](https://github.com/stdlib-js/stdlib/commit/1f798549409c47de0261c5396dccf64012e54a9c) - **feat:** add `ndarray/base/ternary-tiling-block-size` [(#9495)](https://github.com/stdlib-js/stdlib/pull/9495) _(by Muhammad Haris, Athan Reines)_

base/ternary-loop-interchange-order/README.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ limitations under the License.
4040
var ternaryLoopOrder = require( '@stdlib/ndarray/base/binary-loop-interchange-order' );
4141
```
4242

43-
#### ternaryLoopOrder( shape, stridesW, stridesX, stridesY, stridesZ )
43+
#### ternaryLoopOrder( shape, stridesX, stridesY, stridesZ, stridesW )
4444

4545
Reorders [ndarray][@stdlib/ndarray/ctor] dimensions and associated strides for [loop interchange][loop-interchange].
4646

@@ -49,25 +49,25 @@ Reorders [ndarray][@stdlib/ndarray/ctor] dimensions and associated strides for [
4949
var shape = [ 2, 2 ];
5050

5151
// Define the strides for the input arrays:
52-
var stridesW = [ 2, 1 ]; // row-major
53-
var stridesX = [ 4, 2 ]; // row-major
54-
var stridesY = [ 1, 2 ]; // column-major
52+
var stridesX = [ 2, 1 ]; // row-major
53+
var stridesY = [ 4, 2 ]; // row-major
54+
var stridesZ = [ 1, 2 ]; // column-major
5555

5656
// Define the strides for the output array:
57-
var stridesZ = [ 1, 2 ]; // column-major
57+
var stridesW = [ 1, 2 ]; // column-major
5858

5959
// Resolve the loop interchange order:
60-
var o = ternaryLoopOrder( shape, stridesW, stridesX, stridesY, stridesZ );
60+
var o = ternaryLoopOrder( shape, stridesX, stridesY, stridesZ, stridesW );
6161
// returns {...}
6262
```
6363

6464
The function returns an object having the following properties:
6565

6666
- **sh**: ordered dimensions.
67-
- **sw**: first input array strides sorted in loop order.
68-
- **sx**: second input array strides sorted in loop order.
69-
- **sy**: third input array strides sorted in loop order.
70-
- **sz**: output array strides sorted in loop order.
67+
- **sx**: first input array strides sorted in loop order.
68+
- **sy**: second input array strides sorted in loop order.
69+
- **sz**: third input array strides sorted in loop order.
70+
- **sw**: output array strides sorted in loop order.
7171

7272
For all returned arrays, the first element corresponds to the innermost loop, and the last element corresponds to the outermost loop.
7373

@@ -110,13 +110,13 @@ var getStrides = require( '@stdlib/ndarray/strides' );
110110
var ternaryLoopOrder = require( '@stdlib/ndarray/base/binary-loop-interchange-order' );
111111

112112
// Create ndarrays:
113-
var w = array( [ [ 1, 2 ], [ 3, 4 ] ] );
114-
var x = array( [ [ 5, 6 ], [ 7, 8 ] ] );
115-
var y = array( [ [ 9, 10 ], [ 11, 12 ] ] );
116-
var z = array( [ [ 0, 0 ], [ 0, 0 ] ] );
113+
var x = array( [ [ 1, 2 ], [ 3, 4 ] ] );
114+
var y = array( [ [ 5, 6 ], [ 7, 8 ] ] );
115+
var z = array( [ [ 9, 10 ], [ 11, 12 ] ] );
116+
var w = array( [ [ 0, 0 ], [ 0, 0 ] ] );
117117

118118
// Resolve loop interchange data:
119-
var o = ternaryLoopOrder( getShape( w ), getStrides( w ), getStrides( x ), getStrides( y ), getStrides( z ) );
119+
var o = ternaryLoopOrder( getShape( x ), getStrides( x ), getStrides( y ), getStrides( z ), getStrides( w ) );
120120
// returns {...}
121121

122122
console.log( o );

base/ternary-loop-interchange-order/benchmark/benchmark.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,14 @@
2323
var bench = require( '@stdlib/bench' );
2424
var isArray = require( '@stdlib/assert/is-array' );
2525
var shape2strides = require( './../../../base/shape2strides' );
26+
var format = require( '@stdlib/string/format' );
2627
var pkg = require( './../package.json' ).name;
2728
var ternaryLoopOrder = require( './../lib' );
2829

2930

3031
// MAIN //
3132

32-
bench( pkg+'::row-major', function benchmark( b ) {
33+
bench( format( '%s::row-major', pkg ), function benchmark( b ) {
3334
var strides;
3435
var factors;
3536
var shape;
@@ -52,14 +53,20 @@ bench( pkg+'::row-major', function benchmark( b ) {
5253
}
5354
}
5455
b.toc();
55-
if ( !isArray( out.sh ) || !isArray( out.sx ) || !isArray( out.sy ) || !isArray( out.sz ) ) { // eslint-disable-line max-len
56+
if (
57+
!isArray( out.sh ) ||
58+
!isArray( out.sx ) ||
59+
!isArray( out.sy ) ||
60+
!isArray( out.sz ) ||
61+
!isArray( out.sw )
62+
) {
5663
b.fail( 'should return an array' );
5764
}
5865
b.pass( 'benchmark finished' );
5966
b.end();
6067
});
6168

62-
bench( pkg+'::column-major', function benchmark( b ) {
69+
bench( format( '%s::column-major', pkg ), function benchmark( b ) {
6370
var strides;
6471
var factors;
6572
var shape;
@@ -82,7 +89,13 @@ bench( pkg+'::column-major', function benchmark( b ) {
8289
}
8390
}
8491
b.toc();
85-
if ( !isArray( out.sh ) || !isArray( out.sx ) || !isArray( out.sy ) || !isArray( out.sz ) ) { // eslint-disable-line max-len
92+
if (
93+
!isArray( out.sh ) ||
94+
!isArray( out.sx ) ||
95+
!isArray( out.sy ) ||
96+
!isArray( out.sz ) ||
97+
!isArray( out.sw )
98+
) {
8699
b.fail( 'should return an array' );
87100
}
88101
b.pass( 'benchmark finished' );

base/ternary-loop-interchange-order/docs/repl.txt

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11

2-
{{alias}}( shape, stridesW, stridesX, stridesY, stridesZ )
2+
{{alias}}( shape, stridesX, stridesY, stridesZ, stridesW )
33
Reorders ndarray dimensions and associated strides for loop interchange.
44

55
The function returns an object having the following properties:
66

77
- sh: ordered dimensions.
8-
- sw: first input array strides sorted in loop order.
9-
- sx: second input array strides sorted in loop order.
10-
- sy: third input array strides sorted in loop order.
11-
- sz: output array strides sorted in loop order.
8+
- sx: first input array strides sorted in loop order.
9+
- sy: second input array strides sorted in loop order.
10+
- sz: third input array strides sorted in loop order.
11+
- sw: output array strides sorted in loop order.
1212

1313
For all returned arrays, the first element corresponds to the innermost
1414
loop, and the last element corresponds to the outermost loop.
@@ -21,16 +21,16 @@
2121
shape: ArrayLikeObject<integer>
2222
Array dimensions.
2323

24-
stridesW: ArrayLikeObject<integer>
24+
stridesX: ArrayLikeObject<integer>
2525
First input array strides.
2626

27-
stridesX: ArrayLikeObject<integer>
27+
stridesY: ArrayLikeObject<integer>
2828
Second input array strides.
2929

30-
stridesY: ArrayLikeObject<integer>
30+
stridesZ: ArrayLikeObject<integer>
3131
Third input array strides.
3232

33-
stridesZ: ArrayLikeObject<integer>
33+
stridesW: ArrayLikeObject<integer>
3434
Output array strides.
3535

3636
Returns
@@ -41,25 +41,30 @@
4141
out.sh: Array<integer>
4242
Ordered dimensions.
4343

44-
out.sw: Array<integer>
44+
out.sx: Array<integer>
4545
First input array strides sorted in loop order.
4646

47-
out.sx: Array<integer>
47+
out.sy: Array<integer>
4848
Second input array strides sorted in loop order.
4949

50-
out.sy: Array<integer>
50+
out.sz: Array<integer>
5151
Third input array strides sorted in loop order.
5252

53-
out.sz: Array<integer>
53+
out.sw: Array<integer>
5454
Output array strides sorted in loop order.
5555

5656
Examples
5757
--------
58-
> var w = {{alias:@stdlib/ndarray/array}}( [ [ 1, 2 ], [ 3, 4 ] ] );
59-
> var x = {{alias:@stdlib/ndarray/array}}( [ [ 5, 6 ], [ 7, 8 ] ] );
60-
> var y = {{alias:@stdlib/ndarray/array}}( [ [ 9, 10 ], [ 11, 12 ] ] );
61-
> var z = {{alias:@stdlib/ndarray/array}}( [ [ 0, 0 ], [ 0, 0 ] ] );
62-
> var o = {{alias}}( w.shape, w.strides, x.strides, y.strides, z.strides )
58+
> var x = {{alias:@stdlib/ndarray/array}}( [ [ 1, 2 ], [ 3, 4 ] ] );
59+
> var y = {{alias:@stdlib/ndarray/array}}( [ [ 5, 6 ], [ 7, 8 ] ] );
60+
> var z = {{alias:@stdlib/ndarray/array}}( [ [ 9, 10 ], [ 11, 12 ] ] );
61+
> var w = {{alias:@stdlib/ndarray/array}}( [ [ 0, 0 ], [ 0, 0 ] ] );
62+
> var sh = {{alias:@stdlib/ndarray/shape}}( x );
63+
> var sx = {{alias:@stdlib/ndarray/strides}}( x );
64+
> var sy = {{alias:@stdlib/ndarray/strides}}( y );
65+
> var sz = {{alias:@stdlib/ndarray/strides}}( z );
66+
> var sw = {{alias:@stdlib/ndarray/strides}}( w );
67+
> var o = {{alias}}( sh, sx, sy, sz, sw )
6368
{...}
6469

6570
See Also

base/ternary-loop-interchange-order/docs/types/index.d.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,22 @@ interface LoopOrderObject {
3434
/**
3535
* First input array strides sorted in loop order.
3636
*/
37-
sw: Array<number>;
37+
sx: Array<number>;
3838

3939
/**
4040
* Second input array strides sorted in loop order.
4141
*/
42-
sx: Array<number>;
42+
sy: Array<number>;
4343

4444
/**
4545
* Third input array strides sorted in loop order.
4646
*/
47-
sy: Array<number>;
47+
sz: Array<number>;
4848

4949
/**
5050
* Output array strides sorted in loop order.
5151
*/
52-
sz: Array<number>;
52+
sw: Array<number>;
5353
}
5454

5555
/**
@@ -60,10 +60,10 @@ interface LoopOrderObject {
6060
* - The returned object has the following properties:
6161
*
6262
* - **sh**: dimensions sorted in loop order.
63-
* - **sw**: first input ndarray strides sorted in loop order.
64-
* - **sx**: second input ndarray strides sorted in loop order.
65-
* - **sy**: third input ndarray strides sorted in loop order.
66-
* - **sz**: output ndarray strides sorted in loop order.
63+
* - **sx**: first input ndarray strides sorted in loop order.
64+
* - **sy**: second input ndarray strides sorted in loop order.
65+
* - **sz**: third input ndarray strides sorted in loop order.
66+
* - **sw**: output ndarray strides sorted in loop order.
6767
*
6868
* - When iterating over the elements of a multi-dimensional array, accessing elements which are closer in memory can improve performance. To this end, loop interchange is a technique used in loop nest optimization to improve locality of reference and take advantage of CPU cache.
6969
*
@@ -74,39 +74,39 @@ interface LoopOrderObject {
7474
* - The function assumes that the input and output ndarrays have the same shape. Hence, loop interchange order should only be determined **after** broadcasting.
7575
*
7676
* @param shape - array dimensions
77-
* @param stridesW - first input array stride lengths
78-
* @param stridesX - second input array stride lengths
79-
* @param stridesY - third input array stride lengths
80-
* @param stridesZ - output array stride lengths
77+
* @param stridesX - first input array stride lengths
78+
* @param stridesY - second input array stride lengths
79+
* @param stridesZ - third input array stride lengths
80+
* @param stridesW - output array stride lengths
8181
* @returns loop interchange data
8282
*
8383
* @example
8484
* var sh = [ 2, 3, 4 ];
8585
*
86-
* var sw = [ 12, 4, 1 ]; // row-major
87-
* var sx = [ 24, 8, 1 ]; // row-major
88-
* var sy = [ 1, 4, 12 ]; // column-major
89-
* var sz = [ 1, -2, 6 ]; // column-major
86+
* var sx = [ 12, 4, 1 ]; // row-major
87+
* var sy = [ 24, 8, 1 ]; // row-major
88+
* var sz = [ 1, 4, 12 ]; // column-major
89+
* var sw = [ 1, -2, 6 ]; // column-major
9090
*
91-
* var o = ternaryLoopOrder( sh, sw, sx, sy, sz );
91+
* var o = ternaryLoopOrder( sh, sx, sy, sz, sw );
9292
* // returns {...}
9393
*
9494
* var ssh = o.sh;
9595
* // returns [ 2, 3, 4 ]
9696
*
97-
* var ssw = o.sw;
97+
* var ssx = o.sx;
9898
* // returns [ 12, 4, 1 ]
9999
*
100-
* var ssx = o.sx;
100+
* var ssy = o.sy;
101101
* // returns [ 24, 8, 1 ]
102102
*
103-
* var ssy = o.sy;
103+
* var ssz = o.sz;
104104
* // returns [ 1, 4, 12 ]
105105
*
106-
* var ssz = o.sz;
106+
* var ssw = o.sw;
107107
* // returns [ 1, -2, 6 ]
108108
*/
109-
declare function ternaryLoopOrder( shape: ArrayLike<number>, stridesW: ArrayLike<number>, stridesX: ArrayLike<number>, stridesY: ArrayLike<number>, stridesZ: ArrayLike<number> ): LoopOrderObject;
109+
declare function ternaryLoopOrder( shape: ArrayLike<number>, stridesX: ArrayLike<number>, stridesY: ArrayLike<number>, stridesZ: ArrayLike<number>, stridesW: ArrayLike<number> ): LoopOrderObject;
110110

111111

112112
// EXPORTS //

0 commit comments

Comments
 (0)