[js/webgpu] FP16 Cast, Resize (#18035)

### Description
<!-- Describe your changes. -->

Cast/Resize with f16 are missing in vae-decoder-f16. With this change,
vae-decoder-f16 becomes 315 ms from over than 1 seconds.
This commit is contained in:
Jiajia Qin 2023-10-24 13:56:56 +08:00 committed by GitHub
parent 688524a9ab
commit eb47008049
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 25 deletions

View file

@ -14,8 +14,7 @@ const std::vector<MLDataType>& CastOpTypeConstraints() {
// https://gpuweb.github.io/gpuweb/wgsl/#plain-types-section
//
static std::vector<MLDataType> types{
// TODO(fs-eire): support f16 when it's ready
// DataTypeImpl::GetTensorType<MLFloat16>(),
DataTypeImpl::GetTensorType<MLFloat16>(),
DataTypeImpl::GetTensorType<float>(),
DataTypeImpl::GetTensorType<int32_t>(),
DataTypeImpl::GetTensorType<uint32_t>(),

View file

@ -5,15 +5,15 @@
namespace onnxruntime {
namespace js {
#define REGISTER_RESIZE_VERSIONED_10_10_KERNEL(domain) \
ONNX_OPERATOR_VERSIONED_KERNEL_EX( \
Resize, \
domain, \
10, 10, \
kJsExecutionProvider, \
(*KernelDefBuilder::Create()) \
.InputMemoryType(OrtMemTypeCPUInput, 1) \
.TypeConstraint("T", DataTypeImpl::GetTensorType<float>()), \
#define REGISTER_RESIZE_VERSIONED_10_10_KERNEL(domain) \
ONNX_OPERATOR_VERSIONED_KERNEL_EX( \
Resize, \
domain, \
10, 10, \
kJsExecutionProvider, \
(*KernelDefBuilder::Create()) \
.InputMemoryType(OrtMemTypeCPUInput, 1) \
.TypeConstraint("T", JsepSupportedFloatTypes()), \
Resize);
#define REGISTER_RESIZE_VERSIONED_KERNEL(domain, sinceVersion, endVerion) \
@ -26,22 +26,22 @@ namespace js {
.InputMemoryType(OrtMemTypeCPUInput, 1) \
.InputMemoryType(OrtMemTypeCPUInput, 2) \
.InputMemoryType(OrtMemTypeCPUInput, 3) \
.TypeConstraint("T1", DataTypeImpl::GetTensorType<float>()) \
.TypeConstraint("T2", DataTypeImpl::GetTensorType<float>()), \
.TypeConstraint("T1", JsepSupportedFloatTypes()) \
.TypeConstraint("T2", JsepSupportedFloatTypes()), \
Resize);
#define REGISTER_RESIZE_KERNEL(domain, sinceVersion) \
ONNX_OPERATOR_KERNEL_EX( \
Resize, \
domain, \
sinceVersion, \
kJsExecutionProvider, \
(*KernelDefBuilder::Create()) \
.InputMemoryType(OrtMemTypeCPUInput, 1) \
.InputMemoryType(OrtMemTypeCPUInput, 2) \
.InputMemoryType(OrtMemTypeCPUInput, 3) \
.TypeConstraint("T1", DataTypeImpl::GetTensorType<float>()) \
.TypeConstraint("T2", DataTypeImpl::GetTensorType<float>()), \
#define REGISTER_RESIZE_KERNEL(domain, sinceVersion) \
ONNX_OPERATOR_KERNEL_EX( \
Resize, \
domain, \
sinceVersion, \
kJsExecutionProvider, \
(*KernelDefBuilder::Create()) \
.InputMemoryType(OrtMemTypeCPUInput, 1) \
.InputMemoryType(OrtMemTypeCPUInput, 2) \
.InputMemoryType(OrtMemTypeCPUInput, 3) \
.TypeConstraint("T1", JsepSupportedFloatTypes()) \
.TypeConstraint("T2", JsepSupportedFloatTypes()), \
Resize);
#define REGISTER_RESIZE_KERNEL_DOMAIN(domain) \