Skip to content

Commit

Permalink
WebNN: Allow 0-D (scalar) reductions
Browse files Browse the repository at this point in the history
crrev.com/c/5448942 added a restriction on the reduction ops
(including argMin/argMax) that the rank of the input tensor must be
greater than zero.

In webmachinelearning/webnn#681, @fdwr
points out that 0-D (scalar) reductions are fine, it's just a no-op.
Per that discussion, this removes a restriction. There are already
WPT cases for argMin/argMax (although they fail for other reasons);
cases are added for the plethora of reduction ops (which also fail
for other reasons).

Change-Id: Ib10a9b0bb3062f9d2b6001d9a4963b14e751d14f
Cq-Include-Trybots: luci.chromium.try:mac14-blink-rel,mac14.arm64-blink-rel,win11-blink-rel
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5529350
Reviewed-by: Phillis Tang <phillis@chromium.org>
Reviewed-by: ningxin hu <ningxin.hu@intel.com>
Commit-Queue: Joshua Bell <jsbell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1301369}
  • Loading branch information
inexorabletash authored and chromium-wpt-export-bot committed May 15, 2024
1 parent c55cca3 commit 22a06eb
Show file tree
Hide file tree
Showing 11 changed files with 393 additions and 3 deletions.
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_l1.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceL1 float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
"input": {
"shape": [],
"data": [
5.50882625579834
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 5.50882625579834,
"type": "float32"
}
},
{
"name": "reduceL1 float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
5.50882625579834
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 5.50882625579834,
"type": "float32"
}
},
{
"name": "reduceL1 float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_l2.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceL2 float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
"input": {
"shape": [],
"data": [
4.860228061676025
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 4.860228061676025,
"type": "float32"
}
},
{
"name": "reduceL2 float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
4.860228061676025
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 4.860228061676025,
"type": "float32"
}
},
{
"name": "reduceL2 float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_log_sum.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceLogSum float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
"input": {
"shape": [],
"data": [
64.54827117919922
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 4.167413234710693,
"type": "float32"
}
},
{
"name": "reduceLogSum float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
64.54827117919922
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 4.167413234710693,
"type": "float32"
}
},
{
"name": "reduceLogSum float32 1D constant tensor all non-negative default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_log_sum_exp.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceLogSumExp float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
"input": {
"shape": [],
"data": [
0.7974132895469666
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 0.7974132895469666,
"type": "float32"
}
},
{
"name": "reduceLogSumExp float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
0.7974132895469666
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 0.7974132895469666,
"type": "float32"
}
},
{
"name": "reduceLogSumExp float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_max.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceMax float32 0D constant tensor default options",
"inputs": {
"input": {
"shape": [],
"data": [
32.16658401489258
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 32.16658401489258,
"type": "float32"
}
},
{
"name": "reduceMax float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
32.16658401489258
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 32.16658401489258,
"type": "float32"
}
},
{
"name": "reduceMax float32 1D constant tensor default options",
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_mean.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceMean float32 0D constant tensor default options",
"inputs": {
"input": {
"shape": [],
"data": [
95.84498596191406
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": 95.84498596191406,
"type": "float32"
}
},
{
"name": "reduceMean float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
95.84498596191406
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": 95.84498596191406,
"type": "float32"
}
},
{
"name": "reduceMean float32 1D constant tensor all positive default options",
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_min.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceMin float32 0D constant tensor default options",
"inputs": {
"input": {
"shape": [],
"data": [
-58.76195526123047
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": -58.76195526123047,
"type": "float32"
}
},
{
"name": "reduceMin float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
-58.76195526123047
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": -58.76195526123047,
"type": "float32"
}
},
{
"name": "reduceMin float32 1D constant tensor default options",
"inputs": {
Expand Down
39 changes: 39 additions & 0 deletions webnn/resources/test_data/reduce_product.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,44 @@
{
"tests": [
{
"name": "reduceProduct float32 0D constant tensor default options",
"inputs": {
"input": {
"shape": [],
"data": [
-68.75911712646484
],
"type": "float32",
"constant": true
}
},
"expected": {
"name": "output",
"data": -68.75911712646484,
"type": "float32"
}
},
{
"name": "reduceProduct float32 0D constant tensor empty axes",
"inputs": {
"input": {
"shape": [],
"data": [
-68.75911712646484
],
"type": "float32",
"constant": true
}
},
"options": {
"axes": []
},
"expected": {
"name": "output",
"data": -68.75911712646484,
"type": "float32"
}
},
{
"name": "reduceProduct float32 1D constant tensor default options",
"inputs": {
Expand Down

0 comments on commit 22a06eb

Please sign in to comment.