mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-30 20:18:08 +00:00
fix seg fault (#11038)
Co-authored-by: Ethan Tao <ettao@microsoft.com@orttrainingdev8.d32nl1ml4oruzj4qz3bqlggovf.px.internal.cloudapp.net>
This commit is contained in:
parent
8f456735d1
commit
5868413caf
4 changed files with 13 additions and 1 deletions
|
|
@ -55,6 +55,10 @@ bool NoopElimination::SatisfyCondition(const Graph& graph, const Node& node, con
|
|||
if (add_init.size() > 1) {
|
||||
return false;
|
||||
}
|
||||
// handle edge case where the total size of the initializer is 0
|
||||
if (add_init.size() == 0) {
|
||||
return true;
|
||||
}
|
||||
switch (data_type) {
|
||||
case ONNX_NAMESPACE::TensorProto_DataType_FLOAT:
|
||||
if (*add_init.data<float>() != 0.f) {
|
||||
|
|
|
|||
|
|
@ -195,7 +195,7 @@ TEST_F(GraphTransformationTests, NoopElimination) {
|
|||
ASSERT_STATUS_OK(Model::Load(model_uri, model, nullptr, *logger_));
|
||||
Graph& graph = model->MainGraph();
|
||||
std::map<std::string, int> op_to_count = CountOpsInGraph(graph);
|
||||
ASSERT_TRUE(op_to_count["Add"] == 4);
|
||||
ASSERT_TRUE(op_to_count["Add"] == 5);
|
||||
|
||||
auto rule_transformer_L1 = std::make_unique<RuleBasedGraphTransformer>("RuleTransformer1");
|
||||
ASSERT_STATUS_OK(rule_transformer_L1->Register(std::make_unique<NoopElimination>()));
|
||||
|
|
|
|||
BIN
onnxruntime/test/testdata/transform/noop-add.onnx
vendored
BIN
onnxruntime/test/testdata/transform/noop-add.onnx
vendored
Binary file not shown.
|
|
@ -34,6 +34,10 @@ def GenerateModel(model_name):
|
|||
helper.make_node("Identity", ["X4"], ["id_7"], "id_7"),
|
||||
helper.make_node("Add", ["id_7", "int64_2"], ["add_4"], "add_4"),
|
||||
helper.make_node("Identity", ["add_4"], ["Y4"], "id_8"),
|
||||
#float
|
||||
helper.make_node("Identity", ["X5"], ["id_9"], "id_9"),
|
||||
helper.make_node("Add", ["float_2", "id_9"], ["add_5"], "add_5"),
|
||||
helper.make_node("Identity", ["add_5"], ["Y5"], "id_10"),
|
||||
]
|
||||
|
||||
inputs = [ # inputs
|
||||
|
|
@ -41,6 +45,7 @@ def GenerateModel(model_name):
|
|||
helper.make_tensor_value_info('X2', TensorProto.FLOAT16, ['M', 'K']),
|
||||
helper.make_tensor_value_info('X3', TensorProto.INT64, ['M', 'K']),
|
||||
helper.make_tensor_value_info('X4', TensorProto.INT64, ['M', 'K']),
|
||||
helper.make_tensor_value_info('X5', TensorProto.FLOAT, ['M', 'K']),
|
||||
]
|
||||
|
||||
initializers = [
|
||||
|
|
@ -50,6 +55,8 @@ def GenerateModel(model_name):
|
|||
helper.make_tensor('int64_1', TensorProto.INT64, (), [0]),
|
||||
# higher rank
|
||||
helper.make_tensor('int64_2', TensorProto.INT64, [1,1,1], [0]),
|
||||
#float - set initializer size = 0
|
||||
helper.make_tensor('float_2', TensorProto.FLOAT, [0], []),
|
||||
]
|
||||
|
||||
graph = helper.make_graph(
|
||||
|
|
@ -61,6 +68,7 @@ def GenerateModel(model_name):
|
|||
helper.make_tensor_value_info('Y2', TensorProto.FLOAT16, ['M', 'K']),
|
||||
helper.make_tensor_value_info('Y3', TensorProto.INT64, ['M', 'K']),
|
||||
helper.make_tensor_value_info('Y4', TensorProto.INT64, ['M', 'K', 1]),
|
||||
helper.make_tensor_value_info('Y5', TensorProto.FLOAT, ['M', 'K']),
|
||||
],
|
||||
initializers)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue