diff --git a/src/PIM/Dialect/Pim/Transforms/Bufferization/BufferizationUtils.cpp b/src/PIM/Dialect/Pim/Transforms/Bufferization/BufferizationUtils.cpp index b553766..1a2aee3 100644 --- a/src/PIM/Dialect/Pim/Transforms/Bufferization/BufferizationUtils.cpp +++ b/src/PIM/Dialect/Pim/Transforms/Bufferization/BufferizationUtils.cpp @@ -13,10 +13,14 @@ using namespace bufferization; namespace onnx_mlir::pim { +static bool isCompactDeviceLocalExecutableMemRef(Value memrefValue) { + auto resolved = resolveContiguousAddress(memrefValue); + return succeeded(resolved) && resolved->byteOffset == 0 + && isa(resolved->base.getDefiningOp()); +} + FailureOr materializeContiguousInputMemRef(Value memrefValue, Location loc, RewriterBase& rewriter) { - bool isContiguous = - succeeded(resolveContiguousAddress(memrefValue)) || succeeded(compileContiguousAddressExpr(memrefValue)); - if (isContiguous && isDeviceLocalPimAddress(memrefValue)) + if (isCompactDeviceLocalExecutableMemRef(memrefValue)) return memrefValue; auto shapedType = cast(memrefValue.getType()); @@ -44,9 +48,7 @@ FailureOr materializeContiguousInputMemRef(Value memrefValue, Location lo } Value allocateContiguousResultMemRefLike(Value memrefValue, Location loc, RewriterBase& rewriter) { - bool isContiguous = - succeeded(resolveContiguousAddress(memrefValue)) || succeeded(compileContiguousAddressExpr(memrefValue)); - if (isContiguous && isDeviceLocalPimAddress(memrefValue)) + if (isCompactDeviceLocalExecutableMemRef(memrefValue)) return memrefValue; auto shapedType = cast(memrefValue.getType()); diff --git a/src/PIM/Dialect/Pim/Transforms/Bufferization/PimBufferizationPass.cpp b/src/PIM/Dialect/Pim/Transforms/Bufferization/PimBufferizationPass.cpp index bb8e35b..aff6463 100644 --- a/src/PIM/Dialect/Pim/Transforms/Bufferization/PimBufferizationPass.cpp +++ b/src/PIM/Dialect/Pim/Transforms/Bufferization/PimBufferizationPass.cpp @@ -29,6 +29,13 @@ namespace onnx_mlir { namespace { +static bool isCompactExecutableRuntimeMemRef(Value value) { + if (!isa(value.getType())) + return false; + auto resolved = resolveContiguousAddress(value); + return succeeded(resolved) && resolved->byteOffset == 0 && isa(resolved->base.getDefiningOp()); +} + struct MemRefCopyWorkItem { memref::CopyOp copyOp; StaticValueKnowledge knowledge; @@ -271,10 +278,10 @@ LogicalResult PimBufferizationPass::verifyContiguousRuntimeOperands(ModuleOp mod auto verifyOperand = [&](Value operand, unsigned operandIndex) { if (!isa(operand.getType())) return; - if (succeeded(resolveContiguousAddress(operand)) || succeeded(compileContiguousAddressExpr(operand))) + if (isCompactExecutableRuntimeMemRef(operand)) return; op->emitOpError() << "operand #" << operandIndex - << " is not backed by contiguous addressable storage after PIM bufferization"; + << " must be a compact device-local memref after PIM bufferization"; hasFailure = true; }; @@ -283,8 +290,16 @@ LogicalResult PimBufferizationPass::verifyContiguousRuntimeOperands(ModuleOp mod memCopyOp.emitOpError("must use base memref operands plus explicit byte offsets after bufferization"); hasFailure = true; } - verifyOperand(memCopyOp.getTarget(), 0); - verifyOperand(memCopyOp.getSource(), 1); + if (failed(resolveContiguousAddress(memCopyOp.getTarget())) + && failed(compileContiguousAddressExpr(memCopyOp.getTarget()))) { + memCopyOp.emitOpError("target is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } + if (failed(resolveContiguousAddress(memCopyOp.getSource())) + && failed(compileContiguousAddressExpr(memCopyOp.getSource()))) { + memCopyOp.emitOpError("source is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } return; } if (auto loadOp = dyn_cast(op)) { @@ -292,8 +307,17 @@ LogicalResult PimBufferizationPass::verifyContiguousRuntimeOperands(ModuleOp mod loadOp.emitOpError("must use base memref operands plus explicit byte offsets after bufferization"); hasFailure = true; } - verifyOperand(loadOp.getDeviceTarget(), 2); - verifyOperand(loadOp.getHostSource(), 3); + if (failed(resolveContiguousAddress(loadOp.getDeviceTarget())) + && failed(compileContiguousAddressExpr(loadOp.getDeviceTarget()))) { + loadOp.emitOpError( + "device target is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } + if (failed(resolveContiguousAddress(loadOp.getHostSource())) + && failed(compileContiguousAddressExpr(loadOp.getHostSource()))) { + loadOp.emitOpError("host source is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } return; } if (auto storeOp = dyn_cast(op)) { @@ -301,8 +325,17 @@ LogicalResult PimBufferizationPass::verifyContiguousRuntimeOperands(ModuleOp mod storeOp.emitOpError("must use base memref operands plus explicit byte offsets after bufferization"); hasFailure = true; } - verifyOperand(storeOp.getHostTarget(), 2); - verifyOperand(storeOp.getDeviceSource(), 3); + if (failed(resolveContiguousAddress(storeOp.getHostTarget())) + && failed(compileContiguousAddressExpr(storeOp.getHostTarget()))) { + storeOp.emitOpError("host target is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } + if (failed(resolveContiguousAddress(storeOp.getDeviceSource())) + && failed(compileContiguousAddressExpr(storeOp.getDeviceSource()))) { + storeOp.emitOpError( + "device source is not backed by contiguous addressable storage after PIM bufferization"); + hasFailure = true; + } return; } if (auto sendOp = dyn_cast(op)) { @@ -340,7 +373,8 @@ LogicalResult PimBufferizationPass::verifyContiguousRuntimeOperands(ModuleOp mod }); if (hasFailure) { - moduleOp.emitError("PIM bufferization must fully normalize executable runtime operand contiguity before codegen"); + moduleOp.emitError("PIM bufferization must fully normalize executable runtime operands to compact " + "device-local memrefs before codegen"); return failure(); } return success(); diff --git a/src/PIM/Dialect/Pim/Transforms/Verification/VerificationPass.cpp b/src/PIM/Dialect/Pim/Transforms/Verification/VerificationPass.cpp index eb07f1c..b3d670e 100644 --- a/src/PIM/Dialect/Pim/Transforms/Verification/VerificationPass.cpp +++ b/src/PIM/Dialect/Pim/Transforms/Verification/VerificationPass.cpp @@ -46,6 +46,13 @@ static bool isCodegenAddressableValue(Value value) { || isa(compiledAddress->base.getDefiningOp()); } +static bool isCompactExecutableRuntimeMemRef(Value value, const StaticValueKnowledge& knowledge) { + if (!isa(value.getType())) + return false; + auto resolved = resolveContiguousAddress(value, knowledge); + return succeeded(resolved) && resolved->byteOffset == 0 && isa(resolved->base.getDefiningOp()); +} + static bool isConstantGlobalView(Value value) { while (true) { Operation* defOp = value.getDefiningOp(); @@ -336,6 +343,14 @@ private: }); hasFailure = true; } + if (!isCompactExecutableRuntimeMemRef(operand, knowledge)) { + diagnostics.report(&op, [&](Operation* illegalOp) { + illegalOp->emitOpError() << "operand #" << operandIndex + << " must be a compact device-local memref; subviews and offset views are " + "not legal for executable PIM ops"; + }); + hasFailure = true; + } } if (auto storeOp = dyn_cast(op)) { diff --git a/validation/operations/add/after_gemm/add_after_gemm.onnx b/validation/operations/add/after_gemm/add_after_gemm.onnx index f88f43d..8202d11 100644 Binary files a/validation/operations/add/after_gemm/add_after_gemm.onnx and b/validation/operations/add/after_gemm/add_after_gemm.onnx differ diff --git a/validation/operations/add/basic/add_basic.onnx b/validation/operations/add/basic/add_basic.onnx index c7699c1..4b5c107 100644 Binary files a/validation/operations/add/basic/add_basic.onnx and b/validation/operations/add/basic/add_basic.onnx differ diff --git a/validation/operations/add/broadcast_row/add_broadcast_row.onnx b/validation/operations/add/broadcast_row/add_broadcast_row.onnx index abdfccb..853016a 100644 Binary files a/validation/operations/add/broadcast_row/add_broadcast_row.onnx and b/validation/operations/add/broadcast_row/add_broadcast_row.onnx differ diff --git a/validation/operations/add/channel_broadcast_1024/add_channel_broadcast_1024.onnx b/validation/operations/add/channel_broadcast_1024/add_channel_broadcast_1024.onnx index 8b563ec..1a6ed21 100644 Binary files a/validation/operations/add/channel_broadcast_1024/add_channel_broadcast_1024.onnx and b/validation/operations/add/channel_broadcast_1024/add_channel_broadcast_1024.onnx differ diff --git a/validation/operations/add/leading_dimension_broadcast/add_leading_dimension_broadcast.onnx b/validation/operations/add/leading_dimension_broadcast/add_leading_dimension_broadcast.onnx index 46c7b83..58a40ce 100644 Binary files a/validation/operations/add/leading_dimension_broadcast/add_leading_dimension_broadcast.onnx and b/validation/operations/add/leading_dimension_broadcast/add_leading_dimension_broadcast.onnx differ diff --git a/validation/operations/concat/channel_axis/concat_channel_axis.onnx b/validation/operations/concat/channel_axis/concat_channel_axis.onnx index 134da55..340e6f7 100644 Binary files a/validation/operations/concat/channel_axis/concat_channel_axis.onnx and b/validation/operations/concat/channel_axis/concat_channel_axis.onnx differ diff --git a/validation/operations/concat/negative_axis/concat_negative_axis.onnx b/validation/operations/concat/negative_axis/concat_negative_axis.onnx index f2ceaa0..724ae14 100644 Binary files a/validation/operations/concat/negative_axis/concat_negative_axis.onnx and b/validation/operations/concat/negative_axis/concat_negative_axis.onnx differ diff --git a/validation/operations/concat/three_inputs_channel_axis/concat_three_inputs_channel_axis.onnx b/validation/operations/concat/three_inputs_channel_axis/concat_three_inputs_channel_axis.onnx index 5178101..2ac1bcd 100644 Binary files a/validation/operations/concat/three_inputs_channel_axis/concat_three_inputs_channel_axis.onnx and b/validation/operations/concat/three_inputs_channel_axis/concat_three_inputs_channel_axis.onnx differ diff --git a/validation/operations/conv/batch_2/conv_batch_2.onnx b/validation/operations/conv/batch_2/conv_batch_2.onnx index 8fa369c..fc9fb02 100644 Binary files a/validation/operations/conv/batch_2/conv_batch_2.onnx and b/validation/operations/conv/batch_2/conv_batch_2.onnx differ diff --git a/validation/operations/conv/batch_4_pointwise/conv_batch_4_pointwise.onnx b/validation/operations/conv/batch_4_pointwise/conv_batch_4_pointwise.onnx index 52feeec..78cad13 100644 Binary files a/validation/operations/conv/batch_4_pointwise/conv_batch_4_pointwise.onnx and b/validation/operations/conv/batch_4_pointwise/conv_batch_4_pointwise.onnx differ diff --git a/validation/operations/conv/depthwise_1024_channels/conv_depthwise_1024_channels.onnx b/validation/operations/conv/depthwise_1024_channels/conv_depthwise_1024_channels.onnx index fe2b99e..ef55228 100644 Binary files a/validation/operations/conv/depthwise_1024_channels/conv_depthwise_1024_channels.onnx and b/validation/operations/conv/depthwise_1024_channels/conv_depthwise_1024_channels.onnx differ diff --git a/validation/operations/conv/depthwise_grouped/conv_depthwise_grouped.onnx b/validation/operations/conv/depthwise_grouped/conv_depthwise_grouped.onnx index 84da811..f92d7d5 100644 Binary files a/validation/operations/conv/depthwise_grouped/conv_depthwise_grouped.onnx and b/validation/operations/conv/depthwise_grouped/conv_depthwise_grouped.onnx differ diff --git a/validation/operations/conv/dilated_3x3/conv_dilated_3x3.onnx b/validation/operations/conv/dilated_3x3/conv_dilated_3x3.onnx index 7602a5a..3b8b953 100644 Binary files a/validation/operations/conv/dilated_3x3/conv_dilated_3x3.onnx and b/validation/operations/conv/dilated_3x3/conv_dilated_3x3.onnx differ diff --git a/validation/operations/conv/dynamic/conv_dynamic.onnx b/validation/operations/conv/dynamic/conv_dynamic.onnx index c21dcf3..2f63495 100644 Binary files a/validation/operations/conv/dynamic/conv_dynamic.onnx and b/validation/operations/conv/dynamic/conv_dynamic.onnx differ diff --git a/validation/operations/conv/explicit_padding/conv_explicit_padding.onnx b/validation/operations/conv/explicit_padding/conv_explicit_padding.onnx index 15813f7..fc62886 100644 Binary files a/validation/operations/conv/explicit_padding/conv_explicit_padding.onnx and b/validation/operations/conv/explicit_padding/conv_explicit_padding.onnx differ diff --git a/validation/operations/conv/grouped_many_groups/conv_grouped_many_groups.onnx b/validation/operations/conv/grouped_many_groups/conv_grouped_many_groups.onnx index 53e138f..d4b26e8 100644 Binary files a/validation/operations/conv/grouped_many_groups/conv_grouped_many_groups.onnx and b/validation/operations/conv/grouped_many_groups/conv_grouped_many_groups.onnx differ diff --git a/validation/operations/conv/grouped_two_groups/conv_grouped_two_groups.onnx b/validation/operations/conv/grouped_two_groups/conv_grouped_two_groups.onnx index 162214e..1f55cc8 100644 Binary files a/validation/operations/conv/grouped_two_groups/conv_grouped_two_groups.onnx and b/validation/operations/conv/grouped_two_groups/conv_grouped_two_groups.onnx differ diff --git a/validation/operations/conv/huge_pointwise_1024/conv_huge_pointwise_1024.onnx b/validation/operations/conv/huge_pointwise_1024/conv_huge_pointwise_1024.onnx index 517d3c8..867e74c 100644 Binary files a/validation/operations/conv/huge_pointwise_1024/conv_huge_pointwise_1024.onnx and b/validation/operations/conv/huge_pointwise_1024/conv_huge_pointwise_1024.onnx differ diff --git a/validation/operations/conv/huge_pointwise_1024_dynamic/conv_huge_pointwise_1024_dynamic.onnx b/validation/operations/conv/huge_pointwise_1024_dynamic/conv_huge_pointwise_1024_dynamic.onnx index f5ce95d..7f4163c 100644 Binary files a/validation/operations/conv/huge_pointwise_1024_dynamic/conv_huge_pointwise_1024_dynamic.onnx and b/validation/operations/conv/huge_pointwise_1024_dynamic/conv_huge_pointwise_1024_dynamic.onnx differ diff --git a/validation/operations/conv/kernel_3x3/conv_kernel_3x3.onnx b/validation/operations/conv/kernel_3x3/conv_kernel_3x3.onnx index 701fc94..c76ed00 100644 Binary files a/validation/operations/conv/kernel_3x3/conv_kernel_3x3.onnx and b/validation/operations/conv/kernel_3x3/conv_kernel_3x3.onnx differ diff --git a/validation/operations/conv/kernel_equals_input_spatial/conv_kernel_equals_input_spatial.onnx b/validation/operations/conv/kernel_equals_input_spatial/conv_kernel_equals_input_spatial.onnx index ecad81a..113d0cd 100644 Binary files a/validation/operations/conv/kernel_equals_input_spatial/conv_kernel_equals_input_spatial.onnx and b/validation/operations/conv/kernel_equals_input_spatial/conv_kernel_equals_input_spatial.onnx differ diff --git a/validation/operations/conv/large_input_channels_1x1/conv_large_input_channels_1x1.onnx b/validation/operations/conv/large_input_channels_1x1/conv_large_input_channels_1x1.onnx index 858b451..4cca526 100644 Binary files a/validation/operations/conv/large_input_channels_1x1/conv_large_input_channels_1x1.onnx and b/validation/operations/conv/large_input_channels_1x1/conv_large_input_channels_1x1.onnx differ diff --git a/validation/operations/conv/large_output_channels_1x1/conv_large_output_channels_1x1.onnx b/validation/operations/conv/large_output_channels_1x1/conv_large_output_channels_1x1.onnx index 2c3b410..19083d0 100644 Binary files a/validation/operations/conv/large_output_channels_1x1/conv_large_output_channels_1x1.onnx and b/validation/operations/conv/large_output_channels_1x1/conv_large_output_channels_1x1.onnx differ diff --git a/validation/operations/conv/large_spatial/conv_large_spatial.onnx b/validation/operations/conv/large_spatial/conv_large_spatial.onnx index 3e3d862..9380e03 100644 Binary files a/validation/operations/conv/large_spatial/conv_large_spatial.onnx and b/validation/operations/conv/large_spatial/conv_large_spatial.onnx differ diff --git a/validation/operations/conv/multi_channel/conv_multi_channel.onnx b/validation/operations/conv/multi_channel/conv_multi_channel.onnx index bfec7b2..0f4c529 100644 Binary files a/validation/operations/conv/multi_channel/conv_multi_channel.onnx and b/validation/operations/conv/multi_channel/conv_multi_channel.onnx differ diff --git a/validation/operations/conv/non_square_kernel_1x3/conv_non_square_kernel_1x3.onnx b/validation/operations/conv/non_square_kernel_1x3/conv_non_square_kernel_1x3.onnx index 118ed6b..691aaa2 100644 Binary files a/validation/operations/conv/non_square_kernel_1x3/conv_non_square_kernel_1x3.onnx and b/validation/operations/conv/non_square_kernel_1x3/conv_non_square_kernel_1x3.onnx differ diff --git a/validation/operations/conv/non_square_kernel_3x1/conv_non_square_kernel_3x1.onnx b/validation/operations/conv/non_square_kernel_3x1/conv_non_square_kernel_3x1.onnx index b60dfa2..ac78dc5 100644 Binary files a/validation/operations/conv/non_square_kernel_3x1/conv_non_square_kernel_3x1.onnx and b/validation/operations/conv/non_square_kernel_3x1/conv_non_square_kernel_3x1.onnx differ diff --git a/validation/operations/conv/non_uniform_stride/conv_non_uniform_stride.onnx b/validation/operations/conv/non_uniform_stride/conv_non_uniform_stride.onnx index 9f2a692..c41ac2f 100644 Binary files a/validation/operations/conv/non_uniform_stride/conv_non_uniform_stride.onnx and b/validation/operations/conv/non_uniform_stride/conv_non_uniform_stride.onnx differ diff --git a/validation/operations/conv/pointwise_1x1/conv_1x1.onnx b/validation/operations/conv/pointwise_1x1/conv_1x1.onnx index 50cf143..5946fdd 100644 Binary files a/validation/operations/conv/pointwise_1x1/conv_1x1.onnx and b/validation/operations/conv/pointwise_1x1/conv_1x1.onnx differ diff --git a/validation/operations/conv/real_asymmetric_padding/conv_real_asymmetric_padding.onnx b/validation/operations/conv/real_asymmetric_padding/conv_real_asymmetric_padding.onnx index 481f0ec..48c62e6 100644 Binary files a/validation/operations/conv/real_asymmetric_padding/conv_real_asymmetric_padding.onnx and b/validation/operations/conv/real_asymmetric_padding/conv_real_asymmetric_padding.onnx differ diff --git a/validation/operations/conv/same_lower_3x3/conv_same_lower_3x3.onnx b/validation/operations/conv/same_lower_3x3/conv_same_lower_3x3.onnx index 9044d8d..5af31a0 100644 Binary files a/validation/operations/conv/same_lower_3x3/conv_same_lower_3x3.onnx and b/validation/operations/conv/same_lower_3x3/conv_same_lower_3x3.onnx differ diff --git a/validation/operations/conv/same_padding_3x3/conv_same_padding_3x3.onnx b/validation/operations/conv/same_padding_3x3/conv_same_padding_3x3.onnx index 3a017fc..0797ab7 100644 Binary files a/validation/operations/conv/same_padding_3x3/conv_same_padding_3x3.onnx and b/validation/operations/conv/same_padding_3x3/conv_same_padding_3x3.onnx differ diff --git a/validation/operations/conv/stride_2/conv_stride_2.onnx b/validation/operations/conv/stride_2/conv_stride_2.onnx index 9135966..56c7e62 100644 Binary files a/validation/operations/conv/stride_2/conv_stride_2.onnx and b/validation/operations/conv/stride_2/conv_stride_2.onnx differ diff --git a/validation/operations/conv/with_bias_3x3/conv_with_bias_3x3.onnx b/validation/operations/conv/with_bias_3x3/conv_with_bias_3x3.onnx index d4f81e4..9709538 100644 Binary files a/validation/operations/conv/with_bias_3x3/conv_with_bias_3x3.onnx and b/validation/operations/conv/with_bias_3x3/conv_with_bias_3x3.onnx differ diff --git a/validation/operations/conv/without_kernel_shape_attr/conv_without_kernel_shape_attr.onnx b/validation/operations/conv/without_kernel_shape_attr/conv_without_kernel_shape_attr.onnx index b784f99..b72f977 100644 Binary files a/validation/operations/conv/without_kernel_shape_attr/conv_without_kernel_shape_attr.onnx and b/validation/operations/conv/without_kernel_shape_attr/conv_without_kernel_shape_attr.onnx differ diff --git a/validation/operations/div/after_gemm/div_after_gemm.onnx b/validation/operations/div/after_gemm/div_after_gemm.onnx index ae8770d..aea8f35 100644 Binary files a/validation/operations/div/after_gemm/div_after_gemm.onnx and b/validation/operations/div/after_gemm/div_after_gemm.onnx differ diff --git a/validation/operations/div/basic/div_basic.onnx b/validation/operations/div/basic/div_basic.onnx index d2dd4f5..6f3954f 100644 Binary files a/validation/operations/div/basic/div_basic.onnx and b/validation/operations/div/basic/div_basic.onnx differ diff --git a/validation/operations/div/channel_broadcast_1024/div_channel_broadcast_1024.onnx b/validation/operations/div/channel_broadcast_1024/div_channel_broadcast_1024.onnx index 0664097..6fc75ed 100644 Binary files a/validation/operations/div/channel_broadcast_1024/div_channel_broadcast_1024.onnx and b/validation/operations/div/channel_broadcast_1024/div_channel_broadcast_1024.onnx differ diff --git a/validation/operations/div/leading_dimension_broadcast/div_leading_dimension_broadcast.onnx b/validation/operations/div/leading_dimension_broadcast/div_leading_dimension_broadcast.onnx index 68ce49b..50a36f4 100644 Binary files a/validation/operations/div/leading_dimension_broadcast/div_leading_dimension_broadcast.onnx and b/validation/operations/div/leading_dimension_broadcast/div_leading_dimension_broadcast.onnx differ diff --git a/validation/operations/div/runtime_scalar_rhs/div_runtime_scalar_rhs.onnx b/validation/operations/div/runtime_scalar_rhs/div_runtime_scalar_rhs.onnx index 5885133..e18f399 100644 Binary files a/validation/operations/div/runtime_scalar_rhs/div_runtime_scalar_rhs.onnx and b/validation/operations/div/runtime_scalar_rhs/div_runtime_scalar_rhs.onnx differ diff --git a/validation/operations/div/scalar_constant/div_scalar_constant.onnx b/validation/operations/div/scalar_constant/div_scalar_constant.onnx index b61f587..01190f0 100644 Binary files a/validation/operations/div/scalar_constant/div_scalar_constant.onnx and b/validation/operations/div/scalar_constant/div_scalar_constant.onnx differ diff --git a/validation/operations/gather/3d_input_axis1/gather_3d_input_axis1.onnx b/validation/operations/gather/3d_input_axis1/gather_3d_input_axis1.onnx index d46b548..6935f61 100644 Binary files a/validation/operations/gather/3d_input_axis1/gather_3d_input_axis1.onnx and b/validation/operations/gather/3d_input_axis1/gather_3d_input_axis1.onnx differ diff --git a/validation/operations/gather/axis0_matrix_indices/gather_axis0_matrix_indices.onnx b/validation/operations/gather/axis0_matrix_indices/gather_axis0_matrix_indices.onnx index 4119bad..2ff2843 100644 Binary files a/validation/operations/gather/axis0_matrix_indices/gather_axis0_matrix_indices.onnx and b/validation/operations/gather/axis0_matrix_indices/gather_axis0_matrix_indices.onnx differ diff --git a/validation/operations/gather/axis1/gather_axis1.onnx b/validation/operations/gather/axis1/gather_axis1.onnx index c0d6ed4..9cbd37d 100644 Binary files a/validation/operations/gather/axis1/gather_axis1.onnx and b/validation/operations/gather/axis1/gather_axis1.onnx differ diff --git a/validation/operations/gather/negative_axis/gather_negative_axis.onnx b/validation/operations/gather/negative_axis/gather_negative_axis.onnx index b9a3cc8..b759257 100644 Binary files a/validation/operations/gather/negative_axis/gather_negative_axis.onnx and b/validation/operations/gather/negative_axis/gather_negative_axis.onnx differ diff --git a/validation/operations/gather/negative_indices/gather_negative_indices.onnx b/validation/operations/gather/negative_indices/gather_negative_indices.onnx index ea7403c..f0e07ca 100644 Binary files a/validation/operations/gather/negative_indices/gather_negative_indices.onnx and b/validation/operations/gather/negative_indices/gather_negative_indices.onnx differ diff --git a/validation/operations/gemm/alpha_beta/gemm_alpha_beta.onnx b/validation/operations/gemm/alpha_beta/gemm_alpha_beta.onnx index 1248276..fdb1910 100644 Binary files a/validation/operations/gemm/alpha_beta/gemm_alpha_beta.onnx and b/validation/operations/gemm/alpha_beta/gemm_alpha_beta.onnx differ diff --git a/validation/operations/gemm/bias_rank2_broadcast/gemm_bias_rank2_broadcast.onnx b/validation/operations/gemm/bias_rank2_broadcast/gemm_bias_rank2_broadcast.onnx index 596be43..637323b 100644 Binary files a/validation/operations/gemm/bias_rank2_broadcast/gemm_bias_rank2_broadcast.onnx and b/validation/operations/gemm/bias_rank2_broadcast/gemm_bias_rank2_broadcast.onnx differ diff --git a/validation/operations/gemm/dynamic/gemm_dynamic.onnx b/validation/operations/gemm/dynamic/gemm_dynamic.onnx index f23e103..917113d 100644 Binary files a/validation/operations/gemm/dynamic/gemm_dynamic.onnx and b/validation/operations/gemm/dynamic/gemm_dynamic.onnx differ diff --git a/validation/operations/gemm/dynamic_alpha/gemm_dynamic_alpha.onnx b/validation/operations/gemm/dynamic_alpha/gemm_dynamic_alpha.onnx index 2fdccb3..4decf30 100644 Binary files a/validation/operations/gemm/dynamic_alpha/gemm_dynamic_alpha.onnx and b/validation/operations/gemm/dynamic_alpha/gemm_dynamic_alpha.onnx differ diff --git a/validation/operations/gemm/dynamic_beta/gemm_dynamic_beta.onnx b/validation/operations/gemm/dynamic_beta/gemm_dynamic_beta.onnx index 716d64d..1ea67b7 100644 Binary files a/validation/operations/gemm/dynamic_beta/gemm_dynamic_beta.onnx and b/validation/operations/gemm/dynamic_beta/gemm_dynamic_beta.onnx differ diff --git a/validation/operations/gemm/dynamic_bias/gemm_dynamic_bias.onnx b/validation/operations/gemm/dynamic_bias/gemm_dynamic_bias.onnx index 5ffd977..69d3a3a 100644 Binary files a/validation/operations/gemm/dynamic_bias/gemm_dynamic_bias.onnx and b/validation/operations/gemm/dynamic_bias/gemm_dynamic_bias.onnx differ diff --git a/validation/operations/gemm/dynamic_bias_alpha_beta/gemm_dynamic_bias_alpha_beta.onnx b/validation/operations/gemm/dynamic_bias_alpha_beta/gemm_dynamic_bias_alpha_beta.onnx index f5f03f3..ca50913 100644 Binary files a/validation/operations/gemm/dynamic_bias_alpha_beta/gemm_dynamic_bias_alpha_beta.onnx and b/validation/operations/gemm/dynamic_bias_alpha_beta/gemm_dynamic_bias_alpha_beta.onnx differ diff --git a/validation/operations/gemm/dynamic_transB/gemm_dynamic_transB.onnx b/validation/operations/gemm/dynamic_transB/gemm_dynamic_transB.onnx index 8e9eb94..82109e1 100644 Binary files a/validation/operations/gemm/dynamic_transB/gemm_dynamic_transB.onnx and b/validation/operations/gemm/dynamic_transB/gemm_dynamic_transB.onnx differ diff --git a/validation/operations/gemm/huge_1024/gemm_huge_1024.onnx b/validation/operations/gemm/huge_1024/gemm_huge_1024.onnx index 6e6031d..d46409c 100644 Binary files a/validation/operations/gemm/huge_1024/gemm_huge_1024.onnx and b/validation/operations/gemm/huge_1024/gemm_huge_1024.onnx differ diff --git a/validation/operations/gemm/large/gemm_large.onnx b/validation/operations/gemm/large/gemm_large.onnx index d44a8db..1b11e87 100644 Binary files a/validation/operations/gemm/large/gemm_large.onnx and b/validation/operations/gemm/large/gemm_large.onnx differ diff --git a/validation/operations/gemm/large_k_small_n/gemm_large_k_small_n.onnx b/validation/operations/gemm/large_k_small_n/gemm_large_k_small_n.onnx index da27754..05f395b 100644 Binary files a/validation/operations/gemm/large_k_small_n/gemm_large_k_small_n.onnx and b/validation/operations/gemm/large_k_small_n/gemm_large_k_small_n.onnx differ diff --git a/validation/operations/gemm/non_square/gemm_non_square.onnx b/validation/operations/gemm/non_square/gemm_non_square.onnx index d26ecf4..bef0692 100644 Binary files a/validation/operations/gemm/non_square/gemm_non_square.onnx and b/validation/operations/gemm/non_square/gemm_non_square.onnx differ diff --git a/validation/operations/gemm/scalar_bias/gemm_scalar_bias.onnx b/validation/operations/gemm/scalar_bias/gemm_scalar_bias.onnx index 8114542..9c30453 100644 Binary files a/validation/operations/gemm/scalar_bias/gemm_scalar_bias.onnx and b/validation/operations/gemm/scalar_bias/gemm_scalar_bias.onnx differ diff --git a/validation/operations/gemm/simple/gemm_simple.onnx b/validation/operations/gemm/simple/gemm_simple.onnx index 237810f..7eb9d78 100644 Binary files a/validation/operations/gemm/simple/gemm_simple.onnx and b/validation/operations/gemm/simple/gemm_simple.onnx differ diff --git a/validation/operations/gemm/small/gemm_small.onnx b/validation/operations/gemm/small/gemm_small.onnx index 49a7f91..8ea5da3 100644 Binary files a/validation/operations/gemm/small/gemm_small.onnx and b/validation/operations/gemm/small/gemm_small.onnx differ diff --git a/validation/operations/gemm/small_k_large_n/gemm_small_k_large_n.onnx b/validation/operations/gemm/small_k_large_n/gemm_small_k_large_n.onnx index d101ff5..8baaa0d 100644 Binary files a/validation/operations/gemm/small_k_large_n/gemm_small_k_large_n.onnx and b/validation/operations/gemm/small_k_large_n/gemm_small_k_large_n.onnx differ diff --git a/validation/operations/gemm/transA/gemm_transA.onnx b/validation/operations/gemm/transA/gemm_transA.onnx index fc36591..b20089b 100644 Binary files a/validation/operations/gemm/transA/gemm_transA.onnx and b/validation/operations/gemm/transA/gemm_transA.onnx differ diff --git a/validation/operations/gemm/transA_transB/gemm_transA_transB.onnx b/validation/operations/gemm/transA_transB/gemm_transA_transB.onnx index 9ee8835..cb091cc 100644 Binary files a/validation/operations/gemm/transA_transB/gemm_transA_transB.onnx and b/validation/operations/gemm/transA_transB/gemm_transA_transB.onnx differ diff --git a/validation/operations/gemm/transB/gemm_transB.onnx b/validation/operations/gemm/transB/gemm_transB.onnx index 2df2d83..2a5ea81 100644 Binary files a/validation/operations/gemm/transB/gemm_transB.onnx and b/validation/operations/gemm/transB/gemm_transB.onnx differ diff --git a/validation/operations/gemm/transB_with_bias/gemm_transB_with_bias.onnx b/validation/operations/gemm/transB_with_bias/gemm_transB_with_bias.onnx index 696ef58..a4602fb 100644 Binary files a/validation/operations/gemm/transB_with_bias/gemm_transB_with_bias.onnx and b/validation/operations/gemm/transB_with_bias/gemm_transB_with_bias.onnx differ diff --git a/validation/operations/gemm/with_bias/gemm_with_bias.onnx b/validation/operations/gemm/with_bias/gemm_with_bias.onnx index b1b4bb2..f3ee094 100644 Binary files a/validation/operations/gemm/with_bias/gemm_with_bias.onnx and b/validation/operations/gemm/with_bias/gemm_with_bias.onnx differ diff --git a/validation/operations/gen_tests.py b/validation/operations/gen_tests.py index ad107b3..3e7e077 100644 --- a/validation/operations/gen_tests.py +++ b/validation/operations/gen_tests.py @@ -1452,6 +1452,85 @@ def slice_large_channel_1024(): save_model(model, "slice/large_channel_1024", "slice_large_channel_1024.onnx") +def slice_nonzero_channel_offset_add(): + """Add two channel slices where one operand starts at a non-zero channel offset.""" + X = helper.make_tensor_value_info("X", TensorProto.FLOAT, [1, 4, 16]) + Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, [1, 2, 16]) + starts0 = make_int64_initializer("starts0", [0]) + ends0 = make_int64_initializer("ends0", [2]) + starts1 = make_int64_initializer("starts1", [2]) + ends1 = make_int64_initializer("ends1", [4]) + axes = make_int64_initializer("axes", [1]) + slice0 = helper.make_node("Slice", ["X", "starts0", "ends0", "axes"], ["S0"]) + slice1 = helper.make_node("Slice", ["X", "starts1", "ends1", "axes"], ["S1"]) + add = helper.make_node("Add", ["S0", "S1"], ["Y"]) + graph = helper.make_graph( + [slice0, slice1, add], "slice_nonzero_channel_offset_add", [X], [Y], + initializer=[starts0, ends0, starts1, ends1, axes]) + model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 13)]) + save_model(model, "slice/nonzero_channel_offset_add", "slice_nonzero_channel_offset_add.onnx") + + +def slice_nonzero_channel_offset_sub(): + """Sub two channel slices where one operand starts at a non-zero channel offset.""" + X = helper.make_tensor_value_info("X", TensorProto.FLOAT, [1, 4, 16]) + Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, [1, 2, 16]) + starts0 = make_int64_initializer("starts0", [0]) + ends0 = make_int64_initializer("ends0", [2]) + starts1 = make_int64_initializer("starts1", [2]) + ends1 = make_int64_initializer("ends1", [4]) + axes = make_int64_initializer("axes", [1]) + slice0 = helper.make_node("Slice", ["X", "starts0", "ends0", "axes"], ["S0"]) + slice1 = helper.make_node("Slice", ["X", "starts1", "ends1", "axes"], ["S1"]) + sub = helper.make_node("Sub", ["S0", "S1"], ["Y"]) + graph = helper.make_graph( + [slice0, slice1, sub], "slice_nonzero_channel_offset_sub", [X], [Y], + initializer=[starts0, ends0, starts1, ends1, axes]) + model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 13)]) + save_model(model, "slice/nonzero_channel_offset_sub", "slice_nonzero_channel_offset_sub.onnx") + + +def slice_nonzero_channel_offset_mul(): + """Mul two channel slices where one operand starts at a non-zero channel offset.""" + X = helper.make_tensor_value_info("X", TensorProto.FLOAT, [1, 4, 16]) + Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, [1, 2, 16]) + starts0 = make_int64_initializer("starts0", [0]) + ends0 = make_int64_initializer("ends0", [2]) + starts1 = make_int64_initializer("starts1", [2]) + ends1 = make_int64_initializer("ends1", [4]) + axes = make_int64_initializer("axes", [1]) + slice0 = helper.make_node("Slice", ["X", "starts0", "ends0", "axes"], ["S0"]) + slice1 = helper.make_node("Slice", ["X", "starts1", "ends1", "axes"], ["S1"]) + mul = helper.make_node("Mul", ["S0", "S1"], ["Y"]) + graph = helper.make_graph( + [slice0, slice1, mul], "slice_nonzero_channel_offset_mul", [X], [Y], + initializer=[starts0, ends0, starts1, ends1, axes]) + model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 13)]) + save_model(model, "slice/nonzero_channel_offset_mul", "slice_nonzero_channel_offset_mul.onnx") + + +def slice_yolo_like_decode_tail(): + """YOLO-like decode tail using two channel slices with a non-zero-offset slice feeding Sub/Add/Sub/Concat.""" + X = helper.make_tensor_value_info("X", TensorProto.FLOAT, [1, 4, 16]) + Y = helper.make_tensor_value_info("Y", TensorProto.FLOAT, [1, 4, 16]) + starts0 = make_int64_initializer("starts0", [0]) + ends0 = make_int64_initializer("ends0", [2]) + starts1 = make_int64_initializer("starts1", [2]) + ends1 = make_int64_initializer("ends1", [4]) + axes = make_int64_initializer("axes", [1]) + slice0 = helper.make_node("Slice", ["X", "starts0", "ends0", "axes"], ["S0"]) + slice1 = helper.make_node("Slice", ["X", "starts1", "ends1", "axes"], ["S1"]) + sub0 = helper.make_node("Sub", ["S1", "S0"], ["D0"]) + add0 = helper.make_node("Add", ["S0", "S1"], ["A0"]) + sub1 = helper.make_node("Sub", ["A0", "D0"], ["D1"]) + concat = helper.make_node("Concat", ["D0", "D1"], ["Y"], axis=1) + graph = helper.make_graph( + [slice0, slice1, sub0, add0, sub1, concat], "slice_yolo_like_decode_tail", [X], [Y], + initializer=[starts0, ends0, starts1, ends1, axes]) + model = helper.make_model(graph, opset_imports=[helper.make_opsetid("", 13)]) + save_model(model, "slice/yolo_like_decode_tail", "slice_yolo_like_decode_tail.onnx") + + # --------------------------------------------------------------------------- # Gather tests # --------------------------------------------------------------------------- @@ -2001,6 +2080,10 @@ if __name__ == "__main__": slice_nchw_spatial_crop() slice_after_conv() slice_large_channel_1024() + slice_nonzero_channel_offset_add() + slice_nonzero_channel_offset_sub() + slice_nonzero_channel_offset_mul() + slice_yolo_like_decode_tail() print("\nGenerating Softmax tests:") softmax_basic() diff --git a/validation/operations/matmul/basic/matmul_basic.onnx b/validation/operations/matmul/basic/matmul_basic.onnx index 4d0b920..c131c17 100644 Binary files a/validation/operations/matmul/basic/matmul_basic.onnx and b/validation/operations/matmul/basic/matmul_basic.onnx differ diff --git a/validation/operations/matmul/batched_3d/matmul_batched_3d.onnx b/validation/operations/matmul/batched_3d/matmul_batched_3d.onnx index d58cd3b..13f3dc6 100644 Binary files a/validation/operations/matmul/batched_3d/matmul_batched_3d.onnx and b/validation/operations/matmul/batched_3d/matmul_batched_3d.onnx differ diff --git a/validation/operations/matmul/batched_3d_dynamic/matmul_batched_3d_dynamic.onnx b/validation/operations/matmul/batched_3d_dynamic/matmul_batched_3d_dynamic.onnx index c8037ed..61040cd 100644 Binary files a/validation/operations/matmul/batched_3d_dynamic/matmul_batched_3d_dynamic.onnx and b/validation/operations/matmul/batched_3d_dynamic/matmul_batched_3d_dynamic.onnx differ diff --git a/validation/operations/matmul/batched_left_constant/matmul_batched_left_constant.onnx b/validation/operations/matmul/batched_left_constant/matmul_batched_left_constant.onnx index 91921f7..37bb886 100644 Binary files a/validation/operations/matmul/batched_left_constant/matmul_batched_left_constant.onnx and b/validation/operations/matmul/batched_left_constant/matmul_batched_left_constant.onnx differ diff --git a/validation/operations/matmul/batched_lhs_broadcast/matmul_batched_lhs_broadcast.onnx b/validation/operations/matmul/batched_lhs_broadcast/matmul_batched_lhs_broadcast.onnx index b1d7810..771a4a1 100644 Binary files a/validation/operations/matmul/batched_lhs_broadcast/matmul_batched_lhs_broadcast.onnx and b/validation/operations/matmul/batched_lhs_broadcast/matmul_batched_lhs_broadcast.onnx differ diff --git a/validation/operations/matmul/batched_rhs_broadcast/matmul_batched_rhs_broadcast.onnx b/validation/operations/matmul/batched_rhs_broadcast/matmul_batched_rhs_broadcast.onnx index 7981e76..447368f 100644 Binary files a/validation/operations/matmul/batched_rhs_broadcast/matmul_batched_rhs_broadcast.onnx and b/validation/operations/matmul/batched_rhs_broadcast/matmul_batched_rhs_broadcast.onnx differ diff --git a/validation/operations/matmul/dynamic/matmul_dynamic.onnx b/validation/operations/matmul/dynamic/matmul_dynamic.onnx index 30947ff..f7fe1fd 100644 Binary files a/validation/operations/matmul/dynamic/matmul_dynamic.onnx and b/validation/operations/matmul/dynamic/matmul_dynamic.onnx differ diff --git a/validation/operations/matmul/huge_1024/matmul_huge_1024.onnx b/validation/operations/matmul/huge_1024/matmul_huge_1024.onnx index bfc613b..bfa35e1 100644 Binary files a/validation/operations/matmul/huge_1024/matmul_huge_1024.onnx and b/validation/operations/matmul/huge_1024/matmul_huge_1024.onnx differ diff --git a/validation/operations/matmul/left_constant/matmul_left_constant.onnx b/validation/operations/matmul/left_constant/matmul_left_constant.onnx index 7f727e5..0cf483a 100644 Binary files a/validation/operations/matmul/left_constant/matmul_left_constant.onnx and b/validation/operations/matmul/left_constant/matmul_left_constant.onnx differ diff --git a/validation/operations/matmul/matrix_vector/matmul_matrix_vector.onnx b/validation/operations/matmul/matrix_vector/matmul_matrix_vector.onnx index d6a08a9..ea3b5e8 100644 Binary files a/validation/operations/matmul/matrix_vector/matmul_matrix_vector.onnx and b/validation/operations/matmul/matrix_vector/matmul_matrix_vector.onnx differ diff --git a/validation/operations/matmul/vector_matrix/matmul_vector_matrix.onnx b/validation/operations/matmul/vector_matrix/matmul_vector_matrix.onnx index 2b4b88e..eb4f8f3 100644 Binary files a/validation/operations/matmul/vector_matrix/matmul_vector_matrix.onnx and b/validation/operations/matmul/vector_matrix/matmul_vector_matrix.onnx differ diff --git a/validation/operations/mul/after_conv/mul_after_conv.onnx b/validation/operations/mul/after_conv/mul_after_conv.onnx index 8c88597..57cde8e 100644 Binary files a/validation/operations/mul/after_conv/mul_after_conv.onnx and b/validation/operations/mul/after_conv/mul_after_conv.onnx differ diff --git a/validation/operations/mul/basic/mul_basic.onnx b/validation/operations/mul/basic/mul_basic.onnx index 589c035..cb2f167 100644 Binary files a/validation/operations/mul/basic/mul_basic.onnx and b/validation/operations/mul/basic/mul_basic.onnx differ diff --git a/validation/operations/mul/channel_broadcast_1024/mul_channel_broadcast_1024.onnx b/validation/operations/mul/channel_broadcast_1024/mul_channel_broadcast_1024.onnx index e971205..8454cf0 100644 Binary files a/validation/operations/mul/channel_broadcast_1024/mul_channel_broadcast_1024.onnx and b/validation/operations/mul/channel_broadcast_1024/mul_channel_broadcast_1024.onnx differ diff --git a/validation/operations/mul/leading_dimension_broadcast/mul_leading_dimension_broadcast.onnx b/validation/operations/mul/leading_dimension_broadcast/mul_leading_dimension_broadcast.onnx index 55addb9..53942d9 100644 Binary files a/validation/operations/mul/leading_dimension_broadcast/mul_leading_dimension_broadcast.onnx and b/validation/operations/mul/leading_dimension_broadcast/mul_leading_dimension_broadcast.onnx differ diff --git a/validation/operations/mul/scalar_constant/mul_scalar_constant.onnx b/validation/operations/mul/scalar_constant/mul_scalar_constant.onnx index 600cf8b..f19ba6b 100644 Binary files a/validation/operations/mul/scalar_constant/mul_scalar_constant.onnx and b/validation/operations/mul/scalar_constant/mul_scalar_constant.onnx differ diff --git a/validation/operations/pool/avg_basic/avgpool_basic.onnx b/validation/operations/pool/avg_basic/avgpool_basic.onnx index 69a1b8a..2f03305 100644 Binary files a/validation/operations/pool/avg_basic/avgpool_basic.onnx and b/validation/operations/pool/avg_basic/avgpool_basic.onnx differ diff --git a/validation/operations/pool/avg_ceil_mode/avgpool_ceil_mode.onnx b/validation/operations/pool/avg_ceil_mode/avgpool_ceil_mode.onnx index 723e8ec..1219ea5 100644 Binary files a/validation/operations/pool/avg_ceil_mode/avgpool_ceil_mode.onnx and b/validation/operations/pool/avg_ceil_mode/avgpool_ceil_mode.onnx differ diff --git a/validation/operations/pool/avg_explicit_padding/avgpool_explicit_padding.onnx b/validation/operations/pool/avg_explicit_padding/avgpool_explicit_padding.onnx index edc1f1f..4cd2f83 100644 Binary files a/validation/operations/pool/avg_explicit_padding/avgpool_explicit_padding.onnx and b/validation/operations/pool/avg_explicit_padding/avgpool_explicit_padding.onnx differ diff --git a/validation/operations/pool/avg_include_pad/avgpool_include_pad.onnx b/validation/operations/pool/avg_include_pad/avgpool_include_pad.onnx index 1a1a726..7a6ec6d 100644 Binary files a/validation/operations/pool/avg_include_pad/avgpool_include_pad.onnx and b/validation/operations/pool/avg_include_pad/avgpool_include_pad.onnx differ diff --git a/validation/operations/pool/avg_large_channels/avgpool_large_channels.onnx b/validation/operations/pool/avg_large_channels/avgpool_large_channels.onnx index 254c3c6..acf9bb6 100644 Binary files a/validation/operations/pool/avg_large_channels/avgpool_large_channels.onnx and b/validation/operations/pool/avg_large_channels/avgpool_large_channels.onnx differ diff --git a/validation/operations/pool/avg_non_uniform_stride/avgpool_non_uniform_stride.onnx b/validation/operations/pool/avg_non_uniform_stride/avgpool_non_uniform_stride.onnx index e3c0116..3eabba6 100644 Binary files a/validation/operations/pool/avg_non_uniform_stride/avgpool_non_uniform_stride.onnx and b/validation/operations/pool/avg_non_uniform_stride/avgpool_non_uniform_stride.onnx differ diff --git a/validation/operations/pool/avg_real_asymmetric_padding/avgpool_real_asymmetric_padding.onnx b/validation/operations/pool/avg_real_asymmetric_padding/avgpool_real_asymmetric_padding.onnx index 5933547..6276535 100644 Binary files a/validation/operations/pool/avg_real_asymmetric_padding/avgpool_real_asymmetric_padding.onnx and b/validation/operations/pool/avg_real_asymmetric_padding/avgpool_real_asymmetric_padding.onnx differ diff --git a/validation/operations/pool/max_after_conv/maxpool_after_conv.onnx b/validation/operations/pool/max_after_conv/maxpool_after_conv.onnx index da54062..34a796f 100644 Binary files a/validation/operations/pool/max_after_conv/maxpool_after_conv.onnx and b/validation/operations/pool/max_after_conv/maxpool_after_conv.onnx differ diff --git a/validation/operations/pool/max_basic/maxpool_basic.onnx b/validation/operations/pool/max_basic/maxpool_basic.onnx index cd248ba..8c891b0 100644 Binary files a/validation/operations/pool/max_basic/maxpool_basic.onnx and b/validation/operations/pool/max_basic/maxpool_basic.onnx differ diff --git a/validation/operations/pool/max_ceil_mode/maxpool_ceil_mode.onnx b/validation/operations/pool/max_ceil_mode/maxpool_ceil_mode.onnx index fc4b590..e477d69 100644 Binary files a/validation/operations/pool/max_ceil_mode/maxpool_ceil_mode.onnx and b/validation/operations/pool/max_ceil_mode/maxpool_ceil_mode.onnx differ diff --git a/validation/operations/pool/max_global_style_kernel_equals_input/maxpool_global_style_kernel_equals_input.onnx b/validation/operations/pool/max_global_style_kernel_equals_input/maxpool_global_style_kernel_equals_input.onnx index 1d83961..77be0f6 100644 Binary files a/validation/operations/pool/max_global_style_kernel_equals_input/maxpool_global_style_kernel_equals_input.onnx and b/validation/operations/pool/max_global_style_kernel_equals_input/maxpool_global_style_kernel_equals_input.onnx differ diff --git a/validation/operations/pool/max_non_square_kernel/maxpool_non_square_kernel.onnx b/validation/operations/pool/max_non_square_kernel/maxpool_non_square_kernel.onnx index 4feb046..c82f31b 100644 Binary files a/validation/operations/pool/max_non_square_kernel/maxpool_non_square_kernel.onnx and b/validation/operations/pool/max_non_square_kernel/maxpool_non_square_kernel.onnx differ diff --git a/validation/operations/pool/max_real_asymmetric_padding/maxpool_real_asymmetric_padding.onnx b/validation/operations/pool/max_real_asymmetric_padding/maxpool_real_asymmetric_padding.onnx index 10255ae..3eb3f65 100644 Binary files a/validation/operations/pool/max_real_asymmetric_padding/maxpool_real_asymmetric_padding.onnx and b/validation/operations/pool/max_real_asymmetric_padding/maxpool_real_asymmetric_padding.onnx differ diff --git a/validation/operations/pool/max_same_upper/maxpool_same_upper.onnx b/validation/operations/pool/max_same_upper/maxpool_same_upper.onnx index 37c0819..e350bee 100644 Binary files a/validation/operations/pool/max_same_upper/maxpool_same_upper.onnx and b/validation/operations/pool/max_same_upper/maxpool_same_upper.onnx differ diff --git a/validation/operations/pool/max_stride2_multichannel/maxpool_stride2_multichannel.onnx b/validation/operations/pool/max_stride2_multichannel/maxpool_stride2_multichannel.onnx index 77745c3..b627a3a 100644 Binary files a/validation/operations/pool/max_stride2_multichannel/maxpool_stride2_multichannel.onnx and b/validation/operations/pool/max_stride2_multichannel/maxpool_stride2_multichannel.onnx differ diff --git a/validation/operations/reduce_mean/4d_spatial/reduce_mean_4d_spatial.onnx b/validation/operations/reduce_mean/4d_spatial/reduce_mean_4d_spatial.onnx index 4658251..e496fef 100644 Binary files a/validation/operations/reduce_mean/4d_spatial/reduce_mean_4d_spatial.onnx and b/validation/operations/reduce_mean/4d_spatial/reduce_mean_4d_spatial.onnx differ diff --git a/validation/operations/reduce_mean/4d_spatial_keepdims_0/reduce_mean_4d_spatial_keepdims_0.onnx b/validation/operations/reduce_mean/4d_spatial_keepdims_0/reduce_mean_4d_spatial_keepdims_0.onnx index c642f07..8a8ffee 100644 Binary files a/validation/operations/reduce_mean/4d_spatial_keepdims_0/reduce_mean_4d_spatial_keepdims_0.onnx and b/validation/operations/reduce_mean/4d_spatial_keepdims_0/reduce_mean_4d_spatial_keepdims_0.onnx differ diff --git a/validation/operations/reduce_mean/after_conv/reduce_mean_after_conv.onnx b/validation/operations/reduce_mean/after_conv/reduce_mean_after_conv.onnx index deac445..c20be96 100644 Binary files a/validation/operations/reduce_mean/after_conv/reduce_mean_after_conv.onnx and b/validation/operations/reduce_mean/after_conv/reduce_mean_after_conv.onnx differ diff --git a/validation/operations/reduce_mean/all_axes_keepdims_0/reduce_mean_all_axes_keepdims_0.onnx b/validation/operations/reduce_mean/all_axes_keepdims_0/reduce_mean_all_axes_keepdims_0.onnx index 2bfada4..223a52d 100644 Binary files a/validation/operations/reduce_mean/all_axes_keepdims_0/reduce_mean_all_axes_keepdims_0.onnx and b/validation/operations/reduce_mean/all_axes_keepdims_0/reduce_mean_all_axes_keepdims_0.onnx differ diff --git a/validation/operations/reduce_mean/all_axes_keepdims_1/reduce_mean_all_axes_keepdims_1.onnx b/validation/operations/reduce_mean/all_axes_keepdims_1/reduce_mean_all_axes_keepdims_1.onnx index 9e5a3c7..59d31d7 100644 Binary files a/validation/operations/reduce_mean/all_axes_keepdims_1/reduce_mean_all_axes_keepdims_1.onnx and b/validation/operations/reduce_mean/all_axes_keepdims_1/reduce_mean_all_axes_keepdims_1.onnx differ diff --git a/validation/operations/reduce_mean/basic/reduce_mean_basic.onnx b/validation/operations/reduce_mean/basic/reduce_mean_basic.onnx index 5760eb6..43b28f2 100644 Binary files a/validation/operations/reduce_mean/basic/reduce_mean_basic.onnx and b/validation/operations/reduce_mean/basic/reduce_mean_basic.onnx differ diff --git a/validation/operations/reduce_mean/channel_axis_nchw/reduce_mean_channel_axis_nchw.onnx b/validation/operations/reduce_mean/channel_axis_nchw/reduce_mean_channel_axis_nchw.onnx index 7cb7a98..d68c96f 100644 Binary files a/validation/operations/reduce_mean/channel_axis_nchw/reduce_mean_channel_axis_nchw.onnx and b/validation/operations/reduce_mean/channel_axis_nchw/reduce_mean_channel_axis_nchw.onnx differ diff --git a/validation/operations/reduce_mean/keepdims_0/reduce_mean_keepdims_0.onnx b/validation/operations/reduce_mean/keepdims_0/reduce_mean_keepdims_0.onnx index 53626bc..b5258cc 100644 Binary files a/validation/operations/reduce_mean/keepdims_0/reduce_mean_keepdims_0.onnx and b/validation/operations/reduce_mean/keepdims_0/reduce_mean_keepdims_0.onnx differ diff --git a/validation/operations/reduce_mean/large_dimension_1024/reduce_mean_large_dimension_1024.onnx b/validation/operations/reduce_mean/large_dimension_1024/reduce_mean_large_dimension_1024.onnx index 77b3b09..a87c0a6 100644 Binary files a/validation/operations/reduce_mean/large_dimension_1024/reduce_mean_large_dimension_1024.onnx and b/validation/operations/reduce_mean/large_dimension_1024/reduce_mean_large_dimension_1024.onnx differ diff --git a/validation/operations/reduce_mean/negative_axis/reduce_mean_negative_axis.onnx b/validation/operations/reduce_mean/negative_axis/reduce_mean_negative_axis.onnx index 839e320..ac237a4 100644 Binary files a/validation/operations/reduce_mean/negative_axis/reduce_mean_negative_axis.onnx and b/validation/operations/reduce_mean/negative_axis/reduce_mean_negative_axis.onnx differ diff --git a/validation/operations/relu/4d/relu_4d.onnx b/validation/operations/relu/4d/relu_4d.onnx index 3d62ef7..207f02c 100644 Binary files a/validation/operations/relu/4d/relu_4d.onnx and b/validation/operations/relu/4d/relu_4d.onnx differ diff --git a/validation/operations/relu/after_conv/relu_after_conv.onnx b/validation/operations/relu/after_conv/relu_after_conv.onnx index d2cb581..5d4d481 100644 Binary files a/validation/operations/relu/after_conv/relu_after_conv.onnx and b/validation/operations/relu/after_conv/relu_after_conv.onnx differ diff --git a/validation/operations/relu/after_gemm/relu_after_gemm.onnx b/validation/operations/relu/after_gemm/relu_after_gemm.onnx index 0c80915..187e679 100644 Binary files a/validation/operations/relu/after_gemm/relu_after_gemm.onnx and b/validation/operations/relu/after_gemm/relu_after_gemm.onnx differ diff --git a/validation/operations/relu/basic/relu_basic.onnx b/validation/operations/relu/basic/relu_basic.onnx index 119f330..6c28335 100644 Binary files a/validation/operations/relu/basic/relu_basic.onnx and b/validation/operations/relu/basic/relu_basic.onnx differ diff --git a/validation/operations/reshape/4d_to_2d_flatten/reshape_4d_to_2d_flatten.onnx b/validation/operations/reshape/4d_to_2d_flatten/reshape_4d_to_2d_flatten.onnx index 41b9c7a..25a997f 100644 Binary files a/validation/operations/reshape/4d_to_2d_flatten/reshape_4d_to_2d_flatten.onnx and b/validation/operations/reshape/4d_to_2d_flatten/reshape_4d_to_2d_flatten.onnx differ diff --git a/validation/operations/reshape/infer_dim_minus_one/reshape_infer_dim_minus_one.onnx b/validation/operations/reshape/infer_dim_minus_one/reshape_infer_dim_minus_one.onnx index 3afcedb..c4106cd 100644 Binary files a/validation/operations/reshape/infer_dim_minus_one/reshape_infer_dim_minus_one.onnx and b/validation/operations/reshape/infer_dim_minus_one/reshape_infer_dim_minus_one.onnx differ diff --git a/validation/operations/reshape/same_rank/reshape_same_rank.onnx b/validation/operations/reshape/same_rank/reshape_same_rank.onnx index 7942128..c21243c 100644 Binary files a/validation/operations/reshape/same_rank/reshape_same_rank.onnx and b/validation/operations/reshape/same_rank/reshape_same_rank.onnx differ diff --git a/validation/operations/reshape/zero_copies_input_dim/reshape_zero_copies_input_dim.onnx b/validation/operations/reshape/zero_copies_input_dim/reshape_zero_copies_input_dim.onnx index 45e09dd..3066125 100644 Binary files a/validation/operations/reshape/zero_copies_input_dim/reshape_zero_copies_input_dim.onnx and b/validation/operations/reshape/zero_copies_input_dim/reshape_zero_copies_input_dim.onnx differ diff --git a/validation/operations/resize/height_only/resize_height_only.onnx b/validation/operations/resize/height_only/resize_height_only.onnx index 53bad98..aeff0ee 100644 Binary files a/validation/operations/resize/height_only/resize_height_only.onnx and b/validation/operations/resize/height_only/resize_height_only.onnx differ diff --git a/validation/operations/resize/nearest_2x/resize_nearest_2x.onnx b/validation/operations/resize/nearest_2x/resize_nearest_2x.onnx index b4b8f5f..aa9be45 100644 Binary files a/validation/operations/resize/nearest_2x/resize_nearest_2x.onnx and b/validation/operations/resize/nearest_2x/resize_nearest_2x.onnx differ diff --git a/validation/operations/resize/nearest_downsample/resize_nearest_downsample.onnx b/validation/operations/resize/nearest_downsample/resize_nearest_downsample.onnx index 6c2a952..3612722 100644 Binary files a/validation/operations/resize/nearest_downsample/resize_nearest_downsample.onnx and b/validation/operations/resize/nearest_downsample/resize_nearest_downsample.onnx differ diff --git a/validation/operations/resize/non_uniform/resize_non_uniform.onnx b/validation/operations/resize/non_uniform/resize_non_uniform.onnx index 9003cee..3cf7aaa 100644 Binary files a/validation/operations/resize/non_uniform/resize_non_uniform.onnx and b/validation/operations/resize/non_uniform/resize_non_uniform.onnx differ diff --git a/validation/operations/resize/width_only/resize_width_only.onnx b/validation/operations/resize/width_only/resize_width_only.onnx index cf6844d..d5baab2 100644 Binary files a/validation/operations/resize/width_only/resize_width_only.onnx and b/validation/operations/resize/width_only/resize_width_only.onnx differ diff --git a/validation/operations/resize/with_sizes/resize_with_sizes.onnx b/validation/operations/resize/with_sizes/resize_with_sizes.onnx index 227b586..cde4e37 100644 Binary files a/validation/operations/resize/with_sizes/resize_with_sizes.onnx and b/validation/operations/resize/with_sizes/resize_with_sizes.onnx differ diff --git a/validation/operations/sigmoid/4d/sigmoid_4d.onnx b/validation/operations/sigmoid/4d/sigmoid_4d.onnx index b0fb523..12fa3d5 100644 Binary files a/validation/operations/sigmoid/4d/sigmoid_4d.onnx and b/validation/operations/sigmoid/4d/sigmoid_4d.onnx differ diff --git a/validation/operations/sigmoid/after_gemm/sigmoid_after_gemm.onnx b/validation/operations/sigmoid/after_gemm/sigmoid_after_gemm.onnx index 58245f1..7226e54 100644 Binary files a/validation/operations/sigmoid/after_gemm/sigmoid_after_gemm.onnx and b/validation/operations/sigmoid/after_gemm/sigmoid_after_gemm.onnx differ diff --git a/validation/operations/sigmoid/basic/sigmoid_basic.onnx b/validation/operations/sigmoid/basic/sigmoid_basic.onnx index 977731e..408ff60 100644 Binary files a/validation/operations/sigmoid/basic/sigmoid_basic.onnx and b/validation/operations/sigmoid/basic/sigmoid_basic.onnx differ diff --git a/validation/operations/slice/2d_basic/slice_2d_basic.onnx b/validation/operations/slice/2d_basic/slice_2d_basic.onnx index 6409387..1e1de62 100644 Binary files a/validation/operations/slice/2d_basic/slice_2d_basic.onnx and b/validation/operations/slice/2d_basic/slice_2d_basic.onnx differ diff --git a/validation/operations/slice/after_conv/slice_after_conv.onnx b/validation/operations/slice/after_conv/slice_after_conv.onnx index dbcbed7..abea383 100644 Binary files a/validation/operations/slice/after_conv/slice_after_conv.onnx and b/validation/operations/slice/after_conv/slice_after_conv.onnx differ diff --git a/validation/operations/slice/default_axes/slice_default_axes.onnx b/validation/operations/slice/default_axes/slice_default_axes.onnx index 0dcf32f..f21067b 100644 Binary files a/validation/operations/slice/default_axes/slice_default_axes.onnx and b/validation/operations/slice/default_axes/slice_default_axes.onnx differ diff --git a/validation/operations/slice/large_channel_1024/slice_large_channel_1024.onnx b/validation/operations/slice/large_channel_1024/slice_large_channel_1024.onnx index 9cc9201..faa7f42 100644 Binary files a/validation/operations/slice/large_channel_1024/slice_large_channel_1024.onnx and b/validation/operations/slice/large_channel_1024/slice_large_channel_1024.onnx differ diff --git a/validation/operations/slice/nchw_spatial_crop/slice_nchw_spatial_crop.onnx b/validation/operations/slice/nchw_spatial_crop/slice_nchw_spatial_crop.onnx index 3edfb7a..2f1544d 100644 Binary files a/validation/operations/slice/nchw_spatial_crop/slice_nchw_spatial_crop.onnx and b/validation/operations/slice/nchw_spatial_crop/slice_nchw_spatial_crop.onnx differ diff --git a/validation/operations/slice/negative_axis/slice_negative_axis.onnx b/validation/operations/slice/negative_axis/slice_negative_axis.onnx index 2fc969b..d431190 100644 Binary files a/validation/operations/slice/negative_axis/slice_negative_axis.onnx and b/validation/operations/slice/negative_axis/slice_negative_axis.onnx differ diff --git a/validation/operations/slice/negative_indices/slice_negative_indices.onnx b/validation/operations/slice/negative_indices/slice_negative_indices.onnx index 2a8d3d8..eb40762 100644 Binary files a/validation/operations/slice/negative_indices/slice_negative_indices.onnx and b/validation/operations/slice/negative_indices/slice_negative_indices.onnx differ diff --git a/validation/operations/slice/nonzero_channel_offset_add/slice_nonzero_channel_offset_add.onnx b/validation/operations/slice/nonzero_channel_offset_add/slice_nonzero_channel_offset_add.onnx new file mode 100644 index 0000000..246298d Binary files /dev/null and b/validation/operations/slice/nonzero_channel_offset_add/slice_nonzero_channel_offset_add.onnx differ diff --git a/validation/operations/slice/nonzero_channel_offset_mul/slice_nonzero_channel_offset_mul.onnx b/validation/operations/slice/nonzero_channel_offset_mul/slice_nonzero_channel_offset_mul.onnx new file mode 100644 index 0000000..67167af Binary files /dev/null and b/validation/operations/slice/nonzero_channel_offset_mul/slice_nonzero_channel_offset_mul.onnx differ diff --git a/validation/operations/slice/nonzero_channel_offset_sub/slice_nonzero_channel_offset_sub.onnx b/validation/operations/slice/nonzero_channel_offset_sub/slice_nonzero_channel_offset_sub.onnx new file mode 100644 index 0000000..7cff575 Binary files /dev/null and b/validation/operations/slice/nonzero_channel_offset_sub/slice_nonzero_channel_offset_sub.onnx differ diff --git a/validation/operations/slice/step2/slice_step2.onnx b/validation/operations/slice/step2/slice_step2.onnx index be0a876..77ab653 100644 Binary files a/validation/operations/slice/step2/slice_step2.onnx and b/validation/operations/slice/step2/slice_step2.onnx differ diff --git a/validation/operations/slice/yolo_like_decode_tail/slice_yolo_like_decode_tail.onnx b/validation/operations/slice/yolo_like_decode_tail/slice_yolo_like_decode_tail.onnx new file mode 100644 index 0000000..f362b08 Binary files /dev/null and b/validation/operations/slice/yolo_like_decode_tail/slice_yolo_like_decode_tail.onnx differ diff --git a/validation/operations/softmax/3d_last_axis/softmax_3d_last_axis.onnx b/validation/operations/softmax/3d_last_axis/softmax_3d_last_axis.onnx index 08ffdb8..eb942e4 100644 Binary files a/validation/operations/softmax/3d_last_axis/softmax_3d_last_axis.onnx and b/validation/operations/softmax/3d_last_axis/softmax_3d_last_axis.onnx differ diff --git a/validation/operations/softmax/basic/softmax_basic.onnx b/validation/operations/softmax/basic/softmax_basic.onnx index 689313b..89c9197 100644 Binary files a/validation/operations/softmax/basic/softmax_basic.onnx and b/validation/operations/softmax/basic/softmax_basic.onnx differ diff --git a/validation/operations/softmax/channel_axis/softmax_channel_axis.onnx b/validation/operations/softmax/channel_axis/softmax_channel_axis.onnx index 7bb2f90..7561af8 100644 Binary files a/validation/operations/softmax/channel_axis/softmax_channel_axis.onnx and b/validation/operations/softmax/channel_axis/softmax_channel_axis.onnx differ diff --git a/validation/operations/softmax/large_dimension_1024/softmax_large_dimension_1024.onnx b/validation/operations/softmax/large_dimension_1024/softmax_large_dimension_1024.onnx index 1e0be18..8c1a188 100644 Binary files a/validation/operations/softmax/large_dimension_1024/softmax_large_dimension_1024.onnx and b/validation/operations/softmax/large_dimension_1024/softmax_large_dimension_1024.onnx differ diff --git a/validation/operations/softmax/negative_axis/softmax_negative_axis.onnx b/validation/operations/softmax/negative_axis/softmax_negative_axis.onnx index 77a07d8..121f846 100644 Binary files a/validation/operations/softmax/negative_axis/softmax_negative_axis.onnx and b/validation/operations/softmax/negative_axis/softmax_negative_axis.onnx differ diff --git a/validation/operations/split/basic/split_basic.onnx b/validation/operations/split/basic/split_basic.onnx index 22ddd19..fd0a29f 100644 Binary files a/validation/operations/split/basic/split_basic.onnx and b/validation/operations/split/basic/split_basic.onnx differ diff --git a/validation/operations/split/equal_three_way/split_equal_three_way.onnx b/validation/operations/split/equal_three_way/split_equal_three_way.onnx index 03d4216..0842621 100644 Binary files a/validation/operations/split/equal_three_way/split_equal_three_way.onnx and b/validation/operations/split/equal_three_way/split_equal_three_way.onnx differ diff --git a/validation/operations/split/negative_axis/split_negative_axis.onnx b/validation/operations/split/negative_axis/split_negative_axis.onnx index 5770ada..3aa87b9 100644 Binary files a/validation/operations/split/negative_axis/split_negative_axis.onnx and b/validation/operations/split/negative_axis/split_negative_axis.onnx differ diff --git a/validation/operations/split/uneven_channel_axis_4d/split_uneven_channel_axis_4d.onnx b/validation/operations/split/uneven_channel_axis_4d/split_uneven_channel_axis_4d.onnx index 9a6ac8c..7846e3c 100644 Binary files a/validation/operations/split/uneven_channel_axis_4d/split_uneven_channel_axis_4d.onnx and b/validation/operations/split/uneven_channel_axis_4d/split_uneven_channel_axis_4d.onnx differ diff --git a/validation/operations/sub/after_gemm/sub_after_gemm.onnx b/validation/operations/sub/after_gemm/sub_after_gemm.onnx index 0f79fa9..3bbedb8 100644 Binary files a/validation/operations/sub/after_gemm/sub_after_gemm.onnx and b/validation/operations/sub/after_gemm/sub_after_gemm.onnx differ diff --git a/validation/operations/sub/basic/sub_basic.onnx b/validation/operations/sub/basic/sub_basic.onnx index eda1d67..6a66177 100644 Binary files a/validation/operations/sub/basic/sub_basic.onnx and b/validation/operations/sub/basic/sub_basic.onnx differ diff --git a/validation/operations/sub/broadcast_row/sub_broadcast_row.onnx b/validation/operations/sub/broadcast_row/sub_broadcast_row.onnx index 39e80a6..f75c9dd 100644 Binary files a/validation/operations/sub/broadcast_row/sub_broadcast_row.onnx and b/validation/operations/sub/broadcast_row/sub_broadcast_row.onnx differ diff --git a/validation/operations/sub/channel_broadcast_1024/sub_channel_broadcast_1024.onnx b/validation/operations/sub/channel_broadcast_1024/sub_channel_broadcast_1024.onnx index f37e916..76a0995 100644 Binary files a/validation/operations/sub/channel_broadcast_1024/sub_channel_broadcast_1024.onnx and b/validation/operations/sub/channel_broadcast_1024/sub_channel_broadcast_1024.onnx differ diff --git a/validation/operations/sub/constant_lhs_broadcast/sub_constant_lhs_broadcast.onnx b/validation/operations/sub/constant_lhs_broadcast/sub_constant_lhs_broadcast.onnx index ec9995f..f1e762e 100644 Binary files a/validation/operations/sub/constant_lhs_broadcast/sub_constant_lhs_broadcast.onnx and b/validation/operations/sub/constant_lhs_broadcast/sub_constant_lhs_broadcast.onnx differ diff --git a/validation/operations/sub/leading_dimension_broadcast/sub_leading_dimension_broadcast.onnx b/validation/operations/sub/leading_dimension_broadcast/sub_leading_dimension_broadcast.onnx index b757a01..4f07e4a 100644 Binary files a/validation/operations/sub/leading_dimension_broadcast/sub_leading_dimension_broadcast.onnx and b/validation/operations/sub/leading_dimension_broadcast/sub_leading_dimension_broadcast.onnx differ