Skip to content

Commit

Permalink
WebNN: Add missing 64-bit integers support for some reduce operators
Browse files Browse the repository at this point in the history
This CL adds 64-bit integer support for reduceL1, reduceProduct,
reduceSum and reduceSumSquare. It's based on the spec change being proposed by webmachinelearning/webnn#695.

Bug: 328567884
Change-Id: Ia858b47082f81a9eb6ab3b9403e3773a752eb608
Cq-Include-Trybots: luci.chromium.try:win11-blink-rel,mac14-blink-rel,mac14.arm64-blink-rel
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5569544
Reviewed-by: ningxin hu <[email protected]>
Reviewed-by: Austin Sullivan <[email protected]>
Commit-Queue: Lisha Guo <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1309157}
  • Loading branch information
lisa0314 authored and sadym-chromium committed Jun 3, 2024
1 parent 46dc92e commit 23aaf63
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions webnn/validation_tests/reduction.https.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const kFloatRestrictReductionOperators = [
'reduceMean',
];

const kFloatInt32Uint32RestrictReductionOperators = [
const kFloatInt32Uint32Int64Uint64RestrictReductionOperators = [
'reduceL1',
'reduceProduct',
'reduceSum',
Expand Down Expand Up @@ -87,7 +87,7 @@ const kFloatRestrictOperatorsTests = [
},
];

const kFloatInt32Uint32RestrictOperatorsTests = [
const kFloatInt32Uint32Int64Uint64RestrictOperatorsTests = [
{
name: '[reduce] Test reduce when input\'s datatype is int32.',
input: {dataType: 'int32', dimensions: [1, 2, 5, 5]},
Expand All @@ -99,9 +99,19 @@ const kFloatInt32Uint32RestrictOperatorsTests = [
output: {dataType: 'uint32', dimensions: []}
},
{
name:
'[reduce] Throw if the input data type is not one of the {float32, float16, int32, uint32}.',
name: '[reduce] Test reduce when input\'s datatype is int64.',
input: {dataType: 'int64', dimensions: [1, 2, 5, 5]},
output: {dataType: 'int64', dimensions: []}
},
{
name: '[reduce] Test reduce when input\'s datatype is uint64.',
input: {dataType: 'uint64', dimensions: [1, 2, 5, 5]},
output: {dataType: 'uint64', dimensions: []}
},
{
name:
'[reduce] Throw if the input data type is not one of the {float32, float16, int32, uint32, int64, uint64}.',
input: {dataType: 'int8', dimensions: [1, 2, 5, 5]},
options: {
axes: [0, 1],
},
Expand Down Expand Up @@ -159,9 +169,11 @@ kFloatRestrictReductionOperators.forEach((operatorName) => {
runReductionTests(operatorName, kFloatRestrictOperatorsTests);
});

kFloatInt32Uint32RestrictReductionOperators.forEach((operatorName) => {
runReductionTests(operatorName, kFloatInt32Uint32RestrictOperatorsTests);
});
kFloatInt32Uint32Int64Uint64RestrictReductionOperators.forEach(
(operatorName) => {
runReductionTests(
operatorName, kFloatInt32Uint32Int64Uint64RestrictOperatorsTests);
});

kNoTypeRestrictReductionOperators.forEach((operatorName) => {
runReductionTests(operatorName, kNoTypeRestrictOperatorsTests);
Expand Down

0 comments on commit 23aaf63

Please sign in to comment.