Skip to content

Commit

Permalink
[WebNN EP] Update data type constraints for Reduction ops (#20912)
Browse files Browse the repository at this point in the history
WebNN Spec adds missing 64-bit integers support for `reduceL1`,
`reduceSum`, `reduceSumSquare` and `reduceProduct` ops at this
[PR](webmachinelearning/webnn#695), which has
already been implemented in Chromium. Update corresponding data type
constraints in WebNN EP.

Besides, WebNN CPU backend currently doesn't support `uint64` and
`uint32` for these ops.
  • Loading branch information
Honry authored Jun 17, 2024
1 parent 8aa2667 commit bbb6dbf
Showing 1 changed file with 7 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,15 @@ bool ReductionOpBuilder::HasSupportedInputsImpl(const Node& node, const WebnnDev
ONNX_NAMESPACE::TensorProto_DataType_FLOAT16,
ONNX_NAMESPACE::TensorProto_DataType_INT32,
ONNX_NAMESPACE::TensorProto_DataType_UINT32,
ONNX_NAMESPACE::TensorProto_DataType_INT64,
ONNX_NAMESPACE::TensorProto_DataType_UINT64,
};
// WebNN CPU backend doesn't support uint32 for reduceProd and reduceSum.
if (device_type == WebnnDeviceType::CPU && (op_type == "ReduceProd" || op_type == "ReduceSum")) {

if (device_type == WebnnDeviceType::CPU) {
// WebNN CPU backend doesn't support uint32 and uint64 for reduceL1,
// reduceProd, reduceSum and reduceSumSquare.
supported_data_types.erase(ONNX_NAMESPACE::TensorProto_DataType_UINT32);
supported_data_types.erase(ONNX_NAMESPACE::TensorProto_DataType_UINT64);
}
} else if (op_type == "ReduceL2" || op_type == "ReduceLogSum" ||
op_type == "ReduceLogSumExp" || op_type == "ReduceMean") {
Expand Down

0 comments on commit bbb6dbf

Please sign in to comment.