Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
address reviewer's comment
  • Loading branch information
chilo-ms committed Aug 12, 2025
commit c1061f5db597aa827f77da51aeed49576313d225
12 changes: 8 additions & 4 deletions onnxruntime/test/perftest/command_args_parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -196,15 +196,18 @@ bool CommandLineParser::ParseArguments(PerformanceTestConfig& test_config, int a
absl::SetFlagsUsageConfig(config);
absl::SetProgramUsageMessage(CustomUsageMessage());

auto utf8_strings = utils::ConvertArgvToUtf8Strings(argc, argv);
auto utf8_argv = utils::CStringsFromStrings(utf8_strings);
auto utf8_argv_strings = utils::ConvertArgvToUtf8Strings(argc, argv);
auto utf8_argv = utils::CStringsFromStrings(utf8_argv_strings);
auto positional = absl::ParseCommandLine(static_cast<int>(utf8_argv.size()), utf8_argv.data());

// -f
{
const auto& dim_override_str = absl::GetFlag(FLAGS_f);
if (!dim_override_str.empty()) {
if (!ParseDimensionOverride(dim_override_str, test_config.run_config.free_dim_name_overrides)) {
// Abseil doesn't support the same option being provided multiple times — only the last occurrence is applied.
// To preserve the intended usage of '-f', where users may specify it multiple times to override different dimension names,
// we need to manually parse argv.
if (!ParseDimensionOverrideFromArgv(argc, utf8_argv_strings, "f", test_config.run_config.free_dim_name_overrides)) {
return false;
}
}
Expand All @@ -214,7 +217,8 @@ bool CommandLineParser::ParseArguments(PerformanceTestConfig& test_config, int a
{
const auto& dim_override_str = absl::GetFlag(FLAGS_F);
if (!dim_override_str.empty()) {
if (!ParseDimensionOverride(dim_override_str, test_config.run_config.free_dim_denotation_overrides)) {
// Same reason as '-f' above to manully parse argv.
if (!ParseDimensionOverrideFromArgv(argc, utf8_argv_strings, "F", test_config.run_config.free_dim_denotation_overrides)) {
return false;
}
}
Expand Down
4 changes: 2 additions & 2 deletions onnxruntime/test/perftest/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ int real_main(int argc, char* argv[]) {
}
ORT_CATCH(const Ort::Exception& e) {
ORT_HANDLE_EXCEPTION([&]() {
fprintf(stderr, "Error creating environment: %s \n", e.what());
std::cerr << "Error creating environment: " << e.what() << std::endl;
failed = true;
});
}
Expand Down Expand Up @@ -98,7 +98,7 @@ int main(int argc, char* argv[]) {
}
ORT_CATCH(const std::exception& ex) {
ORT_HANDLE_EXCEPTION([&]() {
fprintf(stderr, "%s\n", ex.what());
std::cerr << ex.what() << std::endl;
retval = -1;
});
}
Expand Down
18 changes: 17 additions & 1 deletion onnxruntime/test/perftest/strings_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ bool ParseDimensionOverride(const std::string& input, std::map<std::string, int6
}
ORT_CATCH(const std::exception& ex) {
ORT_HANDLE_EXCEPTION([&]() {
fprintf(stderr, "Error parsing free dimension override value: %s, %s\n", override_val_str.c_str(), ex.what());
std::cerr << "Error parsing free dimension override value: " << override_val_str.c_str() << ", " << ex.what() << std::endl;
});
return false;
}
Expand All @@ -87,6 +87,22 @@ bool ParseDimensionOverride(const std::string& input, std::map<std::string, int6
return true;
}

bool ParseDimensionOverrideFromArgv(int argc, std::vector<std::string> argv, std::string option, std::map<std::string, int64_t>& free_dim_override_map) {
for (int i = 1; i < argc; ++i) {
auto utf8_arg = argv[i];
if (utf8_arg == ("-" + option) || utf8_arg == ("--" + option)) {
auto value_idx = i + 1;
if (value_idx >= argc || argv[value_idx][0] == '-') {
std::cerr << utf8_arg << " should be followed by a key-value pair." << std::endl;
return false;
}

if (!ParseDimensionOverride(argv[value_idx], free_dim_override_map)) return false;
}
}
return true;
}

void ParseEpOptions(const std::string& input, std::vector<std::unordered_map<std::string, std::string>>& result) {
auto tokens = utils::SplitString(input, ";", true);

Expand Down
2 changes: 2 additions & 0 deletions onnxruntime/test/perftest/strings_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ void ParseSessionConfigs(const std::string& configs_string,

bool ParseDimensionOverride(const std::string& input, std::map<std::string, int64_t>& free_dim_override_map);

bool ParseDimensionOverrideFromArgv(int argc, std::vector<std::string> argv, std::string option, std::map<std::string, int64_t>& free_dim_override_map);

void ParseEpList(const std::string& input, std::vector<std::string>& result);

void ParseEpOptions(const std::string& input, std::vector<std::unordered_map<std::string, std::string>>& result);
Expand Down
Loading