Skip to content

Commit

Permalink
Add support for uint8 types
Browse files Browse the repository at this point in the history
  • Loading branch information
Ted Themistokleous committed Aug 9, 2024
1 parent 59bd055 commit 051f444
Showing 1 changed file with 139 additions and 126 deletions.
265 changes: 139 additions & 126 deletions onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc
Original file line number Diff line number Diff line change
Expand Up @@ -315,13 +315,14 @@ static bool IsUnsupportedOpMode(const onnxruntime::GraphViewer& graph_viewer, co
return true;
}
} else if (optype == "ConvInteger") {
// only support int8 type
// only support int8 and uint8 type
const auto& input_type = node->InputDefs()[0]->TypeAsProto();
if (input_type == nullptr) {
return true;
}

if (input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_INT8) {
if ((input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_INT8) and

Check warning on line 324 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L324

Use operator && instead of and [readability/alt_tokens] [2]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:324:  Use operator && instead of and  [readability/alt_tokens] [2]
(input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_UINT8)) {
return true;
}
} else if (optype == "Expand") {
Expand Down Expand Up @@ -362,158 +363,170 @@ static bool IsUnsupportedOpMode(const onnxruntime::GraphViewer& graph_viewer, co
data_type == ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_UINT8) {
return true;
}
else if (optype == "MatMulInteger") {
// only support int8 type
const auto& input_type = node->InputDefs()[0]->TypeAsProto();
if (input_type == nullptr) {
return true;
}

if (input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_INT8) {
return true;
}
} else if (optype == "MatMulInteger") {
// only support int8 and uint8 type
const auto& input_type = node->InputDefs()[0]->TypeAsProto();
if (input_type == nullptr) {
return true;
}
} else if (optype == "NonZero") {
if (!canEvalNodeArgument(graph_viewer, node, {0}, input_nodes)) {

if ((input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_INT8) and

Check warning on line 373 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L373

Use operator && instead of and [readability/alt_tokens] [2]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:373:  Use operator && instead of and  [readability/alt_tokens] [2]
(input_type->tensor_type().elem_type() != ONNX_NAMESPACE::TensorProto_DataType::TensorProto_DataType_UINT8)) {
return true;
}
} else if (optype == "OneHot") {
}
}
else if (optype == "NonZero") {

Check warning on line 379 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L379

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:379:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 379 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L379

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:379:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
if (!canEvalNodeArgument(graph_viewer, node, {0}, input_nodes)) {
return true;
}
}
else if (optype == "OneHot") {

Check warning on line 384 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L384

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:384:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 384 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L384

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:384:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}
}
else if (optype == "Pad") {

Check warning on line 389 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L389

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:389:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 389 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L389

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:389:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
const auto& args = node->InputDefs();
// if pad size is not constant, migraphx cannot support
if (args.size() >= 2) {
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}
} else if (optype == "Pad") {
const auto& args = node->InputDefs();
// if pad size is not constant, migraphx cannot support
if (args.size() >= 2) {
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}
}
}

const auto& attributes = node->GetAttributes();
// Pad only support constant mode
auto mode_attr = attributes.find("mode");
std::string mode = "constant";
if (mode_attr != attributes.end()) {
mode = (*mode_attr).second.s();
}
static const std::set<std::string> allowed_modes = {"constant", "reflect"};
if (allowed_modes.count(mode) == 0) {
return true;
}
const auto& attributes = node->GetAttributes();
// Pad only support constant mode
auto mode_attr = attributes.find("mode");
std::string mode = "constant";
if (mode_attr != attributes.end()) {
mode = (*mode_attr).second.s();
}
static const std::set<std::string> allowed_modes = {"constant", "reflect"};
if (allowed_modes.count(mode) == 0) {
return true;
}

// input value only applied to constant mode
if (mode == "constant") {
if (args.size() == 3) {
if (!canEvalNodeArgument(graph_viewer, node, {2}, input_nodes)) {
return true;
}
// input value only applied to constant mode
if (mode == "constant") {
if (args.size() == 3) {
if (!canEvalNodeArgument(graph_viewer, node, {2}, input_nodes)) {
return true;
}
}
} else if (optype == "Range") {
auto arg_num = node->InputDefs().size();
std::vector<std::size_t> vec(arg_num);
std::iota(vec.begin(), vec.end(), 0);
if (!canEvalNodeArgument(graph_viewer, node, vec, input_nodes)) {
return true;
}
}
else if (optype == "Range") {

Check warning on line 419 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L419

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:419:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 419 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L419

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:419:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
auto arg_num = node->InputDefs().size();
std::vector<std::size_t> vec(arg_num);
std::iota(vec.begin(), vec.end(), 0);
if (!canEvalNodeArgument(graph_viewer, node, vec, input_nodes)) {
return true;
}
}
else if (optype == "Reshape") {

Check warning on line 427 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L427

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:427:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 427 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L427

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:427:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
} else if (optype == "Reshape") {
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
return true;
}
}
else if (optype == "Resize" or optype == "Upsample") {

Check warning on line 436 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L436

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:436:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 436 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L436

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:436:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]

Check warning on line 436 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L436

Use operator || instead of or [readability/alt_tokens] [2]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:436:  Use operator || instead of or  [readability/alt_tokens] [2]
const auto& attributes = node->GetAttributes();
auto ct_attr = attributes.find("coordinate_transformation_mode");
if (ct_attr != attributes.end()) {
auto ct = (*ct_attr).second.s();
if (ct == "tf_crop_and_resize") {
return true;
}
} else if (optype == "Resize" or optype == "Upsample") {
const auto& attributes = node->GetAttributes();
auto ct_attr = attributes.find("coordinate_transformation_mode");
if (ct_attr != attributes.end()) {
auto ct = (*ct_attr).second.s();
if (ct == "tf_crop_and_resize") {
return true;
}
}

auto mode_attr = attributes.find("mode");
if (mode_attr != attributes.end()) {
auto mode = (*mode_attr).second.s();
if (mode == "cubic") {
return true;
}
}
}

} else if (optype == "ReduceSum") {
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
auto mode_attr = attributes.find("mode");
if (mode_attr != attributes.end()) {
auto mode = (*mode_attr).second.s();
if (mode == "cubic") {
return true;
}
} else if (optype == "Slice") {
// MIGraphX does not properly handle the situation where any
// value of the "starts" attribute is higher than a corresponding
// value in the "ends"
auto arg_num = node->InputDefs().size();
std::vector<std::size_t> vec(arg_num);
std::iota(vec.begin(), vec.end(), 0);
vec.erase(vec.begin());
if (!canEvalNodeArgument(graph_viewer, node, vec, input_nodes)) {
return true;
}
}
else if (optype == "ReduceSum") {

Check warning on line 454 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L454

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:454:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 454 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L454

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:454:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
return true;
}
}
else if (optype == "Slice") {

Check warning on line 463 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L463

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:463:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 463 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L463

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:463:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
// MIGraphX does not properly handle the situation where any
// value of the "starts" attribute is higher than a corresponding
// value in the "ends"
auto arg_num = node->InputDefs().size();
std::vector<std::size_t> vec(arg_num);
std::iota(vec.begin(), vec.end(), 0);
vec.erase(vec.begin());
if (!canEvalNodeArgument(graph_viewer, node, vec, input_nodes)) {
return true;
}

const auto& attributes = node->GetAttributes();
if (attributes.count("starts") > 0 and attributes.count("ends") > 0) {
auto starts = toVector((*attributes.find("starts")).second.ints());
auto ends = toVector((*attributes.find("ends")).second.ints());
for (std::size_t i = 0; i < starts.size(); ++i) {
if (starts.at(i) > ends.at(i)) {
return true;
}
}
}
} else if (optype == "Split") {
// cannot process input dim of 0 size
const auto arg_s = node->InputDefs()[0]->Shape();
if (arg_s != nullptr) {
const auto& tensor_dims = arg_s->dim();
std::vector<std::size_t> dims;
for (auto&& dim : tensor_dims) {
dims.emplace_back(dim.has_dim_value() ? dim.dim_value() : 0);
}
if (dims == std::vector<std::size_t>{0}) {
const auto& attributes = node->GetAttributes();
if (attributes.count("starts") > 0 and attributes.count("ends") > 0) {

Check warning on line 476 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L476

Use operator && instead of and [readability/alt_tokens] [2]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:476:  Use operator && instead of and  [readability/alt_tokens] [2]
auto starts = toVector((*attributes.find("starts")).second.ints());
auto ends = toVector((*attributes.find("ends")).second.ints());
for (std::size_t i = 0; i < starts.size(); ++i) {
if (starts.at(i) > ends.at(i)) {
return true;
}
}

const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
return true;
}
}
else if (optype == "Split") {

Check warning on line 486 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L486

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:486:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 486 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L486

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:486:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
// cannot process input dim of 0 size
const auto arg_s = node->InputDefs()[0]->Shape();
if (arg_s != nullptr) {
const auto& tensor_dims = arg_s->dim();
std::vector<std::size_t> dims;
for (auto&& dim : tensor_dims) {
dims.emplace_back(dim.has_dim_value() ? dim.dim_value() : 0);
}
} else if (optype == "Tile") {
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
if (dims == std::vector<std::size_t>{0}) {
return true;
}
} else if (optype == "TopK") {
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}

const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
} else if (optype == "Unsqueeze" or optype == "Squeeze") {
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
return true;
return true;
}
}
else if (optype == "Tile") {

Check warning on line 508 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L508

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:508:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 508 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L508

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:508:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}
}
else if (optype == "TopK") {

Check warning on line 513 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L513

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:513:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 513 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L513

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:513:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]
if (!canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return true;
}
}
else if (optype == "Unsqueeze" or optype == "Squeeze") {

Check warning on line 518 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L518

An else should appear on the same line as the preceding } [whitespace/newline] [4]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:518:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]

Check warning on line 518 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L518

If an else has a brace on one side, it should have it on both [readability/braces] [5]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:518:  If an else has a brace on one side, it should have it on both  [readability/braces] [5]

Check warning on line 518 in onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc

View workflow job for this annotation

GitHub Actions / cpplint

[cpplint] onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc#L518

Use operator || instead of or [readability/alt_tokens] [2]
Raw output
onnxruntime/core/providers/migraphx/migraphx_execution_provider.cc:518:  Use operator || instead of or  [readability/alt_tokens] [2]
const auto& args = node->InputDefs();
if (args.size() == 2) {
if (canEvalNodeArgument(graph_viewer, node, {1}, input_nodes)) {
return false;
}
return true;
}
}

// Op doesn't fall into known any of unsupported modes.
return false;
// Op doesn't fall into known any of unsupported modes.
return false;
}

void SubgraphPostProcessing(const onnxruntime::GraphViewer& graph_viewer, std::vector<std::vector<NodeIndex>>& clusters,
Expand Down

0 comments on commit 051f444

Please sign in to comment.