fix seg fault (#11038)

Co-authored-by: Ethan Tao <ettao@microsoft.com@orttrainingdev8.d32nl1ml4oruzj4qz3bqlggovf.px.internal.cloudapp.net>
This commit is contained in:
ytaous 2022-03-29 14:12:45 -07:00 committed by GitHub
parent 8f456735d1
commit 5868413caf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 1 deletions

View file

@ -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) {

View file

@ -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>()));

Binary file not shown.

View file

@ -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)