From 1fc325da348fc4de0e6d826c7bb07ab019263f0c Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 7 Oct 2024 13:51:20 +0200 Subject: [PATCH 01/28] Add test_all_subset_models mode --- .github/workflows/e2e-accuracy.yml | 4 ++++ .github/workflows/e2e-performance.yml | 4 ++++ .github/workflows/e2e-reusable.yml | 6 +++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-accuracy.yml b/.github/workflows/e2e-accuracy.yml index 3b2aa1901d..451388b85a 100644 --- a/.github/workflows/e2e-accuracy.yml +++ b/.github/workflows/e2e-accuracy.yml @@ -44,6 +44,10 @@ on: - all - subset default: all + test_all_subset_models: + description: In "subset" mode, do not fail workflow if one of models failed + type: boolean + default: false only_one_model: description: Run only this one model type: string diff --git a/.github/workflows/e2e-performance.yml b/.github/workflows/e2e-performance.yml index 0f524f9ba6..56094b3ef5 100644 --- a/.github/workflows/e2e-performance.yml +++ b/.github/workflows/e2e-performance.yml @@ -44,6 +44,10 @@ on: - all - subset default: subset + test_all_subset_models: + description: In "subset" mode, do not fail workflow if one of models failed + type: boolean + default: false only_one_model: description: Run only this one model type: string diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index d0c5f917aa..b358708910 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -27,6 +27,10 @@ on: description: Run all models or a subset type: string default: all + test_all_subset_models: + description: In "subset" mode, do not fail workflow if one of models failed + type: boolean + default: false only_one_model: description: Run only this one model type: string @@ -225,7 +229,7 @@ jobs: bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 ${{ inputs.only_one_model }} elif [[ "${{ inputs.models }}" == "subset" ]]; then while read model; do - bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model + bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model || ${{ inputs.test_all_subset_models }} done < $GITHUB_WORKSPACE/.github/models/performance/${{ inputs.suite }}.txt else bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 From 7eb6e8596f5012e0c8f4ddf9b4672b5cd3b9992e Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 7 Oct 2024 14:45:34 +0200 Subject: [PATCH 02/28] Add test_all_subset_models mode --- .github/workflows/e2e-accuracy.yml | 1 + .github/workflows/e2e-performance.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/e2e-accuracy.yml b/.github/workflows/e2e-accuracy.yml index 451388b85a..f3624f90a3 100644 --- a/.github/workflows/e2e-accuracy.yml +++ b/.github/workflows/e2e-accuracy.yml @@ -129,6 +129,7 @@ jobs: test_mode: accuracy dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} + test_all_subset_models: "${{ inputs.test_all_subset_models }}" only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} diff --git a/.github/workflows/e2e-performance.yml b/.github/workflows/e2e-performance.yml index 56094b3ef5..b58d8f1003 100644 --- a/.github/workflows/e2e-performance.yml +++ b/.github/workflows/e2e-performance.yml @@ -140,6 +140,7 @@ jobs: test_mode: performance dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} + test_all_subset_models: "${{ inputs.test_all_subset_models }}" only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} From 284bf46164b86b15cb446a42f325518bdf53ccd2 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 7 Oct 2024 18:59:57 +0200 Subject: [PATCH 03/28] Update .github/workflows/e2e-performance.yml Co-authored-by: Pavel Chekin --- .github/workflows/e2e-performance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-performance.yml b/.github/workflows/e2e-performance.yml index b58d8f1003..a07b16d64a 100644 --- a/.github/workflows/e2e-performance.yml +++ b/.github/workflows/e2e-performance.yml @@ -140,7 +140,7 @@ jobs: test_mode: performance dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} - test_all_subset_models: "${{ inputs.test_all_subset_models }}" + test_all_subset_models: ${{ inputs.test_all_subset_models || false }} only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} From c47a9f863967be1d5c289500b848d984b6918406 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 7 Oct 2024 19:00:03 +0200 Subject: [PATCH 04/28] Update .github/workflows/e2e-accuracy.yml Co-authored-by: Pavel Chekin --- .github/workflows/e2e-accuracy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-accuracy.yml b/.github/workflows/e2e-accuracy.yml index f3624f90a3..270628f3f8 100644 --- a/.github/workflows/e2e-accuracy.yml +++ b/.github/workflows/e2e-accuracy.yml @@ -129,7 +129,7 @@ jobs: test_mode: accuracy dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} - test_all_subset_models: "${{ inputs.test_all_subset_models }}" + test_all_subset_models: ${{ inputs.test_all_subset_models || false }} only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} From 181877920999a519c52542c2f8992666fd88b348 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Tue, 8 Oct 2024 12:31:44 +0200 Subject: [PATCH 05/28] Check models --- .github/workflows/e2e-reusable.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index b358708910..9fa422002e 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -229,7 +229,8 @@ jobs: bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 ${{ inputs.only_one_model }} elif [[ "${{ inputs.models }}" == "subset" ]]; then while read model; do - bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model || ${{ inputs.test_all_subset_models }} + bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model + grep ,$model, $WORKSPACE/inductor_log/*/*/*.csv | grep -q ,pass, || ${{ inputs.test_all_subset_models }} done < $GITHUB_WORKSPACE/.github/models/performance/${{ inputs.suite }}.txt else bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 From 31223414e81e776b07a23606f8ffa999bfeabaa0 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Tue, 8 Oct 2024 13:05:33 +0200 Subject: [PATCH 06/28] fix whitespace --- .github/workflows/e2e-reusable.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 9fa422002e..9434141ea0 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -229,7 +229,7 @@ jobs: bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 ${{ inputs.only_one_model }} elif [[ "${{ inputs.models }}" == "subset" ]]; then while read model; do - bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model + bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model grep ,$model, $WORKSPACE/inductor_log/*/*/*.csv | grep -q ,pass, || ${{ inputs.test_all_subset_models }} done < $GITHUB_WORKSPACE/.github/models/performance/${{ inputs.suite }}.txt else From c43be7734569390b56dbba220868112cf23519ec Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:21:36 +0200 Subject: [PATCH 07/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 11 ++++- scripts/check-inductor-report.py | 64 ++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100755 scripts/check-inductor-report.py diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 0464b49702..d1d99ee9e8 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -228,9 +228,18 @@ jobs: if [[ "${{ inputs.only_one_model }}" ]]; then bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 ${{ inputs.only_one_model }} elif [[ "${{ inputs.models }}" == "subset" ]]; then + models_subset_file = "$GITHUB_WORKSPACE/.github/models/${{ inputs.test_mode }}/${{ inputs.suite }}.txt" while read model; do bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model - done < $GITHUB_WORKSPACE/.github/models/${{ inputs.test_mode }}/${{ inputs.suite }}.txt + done < $models_subset_file + if [[ "${{ inputs.test_all_subset_models }}" == true ]] + python $GITHUB_WORKSPACE/scripts/check-inductor-logs.py --models-file="$models_subset_file" \ + --suite=${{ inputs.suite }} \ + --dtype=${{ inputs.dtype }} \ + --mode=${{ inputs.mode }} \ + --test_mode=${{ inputs.test_mode }} \ + --device=xpu + fi else bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 fi diff --git a/scripts/check-inductor-report.py b/scripts/check-inductor-report.py new file mode 100755 index 0000000000..ac3fbe9784 --- /dev/null +++ b/scripts/check-inductor-report.py @@ -0,0 +1,64 @@ +import sys +import argparse +from pathlib import Path +import csv + +def check_report(suite, dtype, mode, test_mode, device, models_file): + inductor_log_dir = Path('inductor_log') / suite / dtype + inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" + inductor_report_path = Path(inductor_log_dir / inductor_report_filename) + + subset = [] + report = [] + exitcode = 0 + + with open(models_file) as f: + subset = f.read().strip().split('\n') + + with open(inductor_report_path) as f: + reader = csv.reader(f) + report_with_header = [] + for l in reader: + report_with_header.append(l) + for r in report_with_header[1:]: + if r[0] == device: + report.append(r) + + test_list = [r[1] for r in report] + + if test_mode == "performance": + for m in subset: + if m not in test_list: + exitcode = 1 + print(f"Test is not found in report: {m}") + + if test_mode == "accuracy": + test_statuses = [r[3] for r in report] + for m in subset: + try: + idx = test_list.index(m) + except ValueError: + exitcode = 1 + print(f"Test is NOT FOUND: {m}") + continue + if test_statuses[idx] != "pass": + exitcode = 1 + print(f"Test is NOT PASSED: {m}") + return exitcode + +def main(): + argparser = argparse.ArgumentParser() + argparser.add_argument('--suite', required=True) + argparser.add_argument('--dtype', required=True) + argparser.add_argument('--mode', required=True, choices=("training", "inference")) + argparser.add_argument('--test_mode', required=True, choices=("performance", "accuracy")) + argparser.add_argument('--device', help="i.e. xpu", required=True) + argparser.add_argument('--models-file', help="Subset of models list", required=True) + args = argparser.parse_args() + exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) + print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") + exit(exitcode) + + +if __name__ == "__main__": + main() From 78a156f5cf3466df16ee9cffbdbcf0d6d5c7555b Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:25:28 +0200 Subject: [PATCH 08/28] check-inductor-report.py --- scripts/check-inductor-report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/check-inductor-report.py b/scripts/check-inductor-report.py index ac3fbe9784..9695a4aba7 100755 --- a/scripts/check-inductor-report.py +++ b/scripts/check-inductor-report.py @@ -1,8 +1,8 @@ -import sys import argparse from pathlib import Path import csv + def check_report(suite, dtype, mode, test_mode, device, models_file): inductor_log_dir = Path('inductor_log') / suite / dtype inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" @@ -46,6 +46,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file): print(f"Test is NOT PASSED: {m}") return exitcode + def main(): argparser = argparse.ArgumentParser() argparser.add_argument('--suite', required=True) From bbfd22b67090c0835d879affb799d7a99ab475fe Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:28:40 +0200 Subject: [PATCH 09/28] check-inductor-report.py --- .github/workflows/e2e-accuracy.yml | 6 +++--- .github/workflows/e2e-performance.yml | 4 ++-- .github/workflows/e2e-reusable.yml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/e2e-accuracy.yml b/.github/workflows/e2e-accuracy.yml index 270628f3f8..9d8f2deca3 100644 --- a/.github/workflows/e2e-accuracy.yml +++ b/.github/workflows/e2e-accuracy.yml @@ -44,8 +44,8 @@ on: - all - subset default: all - test_all_subset_models: - description: In "subset" mode, do not fail workflow if one of models failed + check_all_subset_models: + description: In "subset" mode, check all subset models type: boolean default: false only_one_model: @@ -129,7 +129,7 @@ jobs: test_mode: accuracy dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} - test_all_subset_models: ${{ inputs.test_all_subset_models || false }} + check_all_subset_models: ${{ inputs.check_all_subset_models || false }} only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} diff --git a/.github/workflows/e2e-performance.yml b/.github/workflows/e2e-performance.yml index a07b16d64a..de7a598cba 100644 --- a/.github/workflows/e2e-performance.yml +++ b/.github/workflows/e2e-performance.yml @@ -44,7 +44,7 @@ on: - all - subset default: subset - test_all_subset_models: + check_all_subset_models: description: In "subset" mode, do not fail workflow if one of models failed type: boolean default: false @@ -140,7 +140,7 @@ jobs: test_mode: performance dtype: ${{ matrix.dtype }} models: ${{ inputs.models }} - test_all_subset_models: ${{ inputs.test_all_subset_models || false }} + check_all_subset_models: ${{ inputs.check_all_subset_models || false }} only_one_model: ${{ inputs.only_one_model }} runner_label: ${{ inputs.runner_label }} TORCH_COMPILE_DEBUG: ${{ inputs.TORCH_COMPILE_DEBUG }} diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index d1d99ee9e8..7a7b521425 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -27,8 +27,8 @@ on: description: Run all models or a subset type: string default: all - test_all_subset_models: - description: In "subset" mode, do not fail workflow if one of models failed + check_all_subset_models: + description: In "subset" mode, check all subset models type: boolean default: false only_one_model: @@ -232,7 +232,7 @@ jobs: while read model; do bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model done < $models_subset_file - if [[ "${{ inputs.test_all_subset_models }}" == true ]] + if [[ "${{ inputs.check_all_subset_models }}" == true ]] python $GITHUB_WORKSPACE/scripts/check-inductor-logs.py --models-file="$models_subset_file" \ --suite=${{ inputs.suite }} \ --dtype=${{ inputs.dtype }} \ From 4a96f07440261da1dd32407fb45f1472bf49a1ae Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:35:57 +0200 Subject: [PATCH 10/28] check-inductor-report.py --- scripts/check-inductor-report.py | 65 -------------------------------- 1 file changed, 65 deletions(-) delete mode 100755 scripts/check-inductor-report.py diff --git a/scripts/check-inductor-report.py b/scripts/check-inductor-report.py deleted file mode 100755 index 9695a4aba7..0000000000 --- a/scripts/check-inductor-report.py +++ /dev/null @@ -1,65 +0,0 @@ -import argparse -from pathlib import Path -import csv - - -def check_report(suite, dtype, mode, test_mode, device, models_file): - inductor_log_dir = Path('inductor_log') / suite / dtype - inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" - inductor_report_path = Path(inductor_log_dir / inductor_report_filename) - - subset = [] - report = [] - exitcode = 0 - - with open(models_file) as f: - subset = f.read().strip().split('\n') - - with open(inductor_report_path) as f: - reader = csv.reader(f) - report_with_header = [] - for l in reader: - report_with_header.append(l) - for r in report_with_header[1:]: - if r[0] == device: - report.append(r) - - test_list = [r[1] for r in report] - - if test_mode == "performance": - for m in subset: - if m not in test_list: - exitcode = 1 - print(f"Test is not found in report: {m}") - - if test_mode == "accuracy": - test_statuses = [r[3] for r in report] - for m in subset: - try: - idx = test_list.index(m) - except ValueError: - exitcode = 1 - print(f"Test is NOT FOUND: {m}") - continue - if test_statuses[idx] != "pass": - exitcode = 1 - print(f"Test is NOT PASSED: {m}") - return exitcode - - -def main(): - argparser = argparse.ArgumentParser() - argparser.add_argument('--suite', required=True) - argparser.add_argument('--dtype', required=True) - argparser.add_argument('--mode', required=True, choices=("training", "inference")) - argparser.add_argument('--test_mode', required=True, choices=("performance", "accuracy")) - argparser.add_argument('--device', help="i.e. xpu", required=True) - argparser.add_argument('--models-file', help="Subset of models list", required=True) - args = argparser.parse_args() - exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) - print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") - exit(exitcode) - - -if __name__ == "__main__": - main() From eea69a3bbd2a0dcb5f825a7fbcc0cb693bba8514 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:37:12 +0200 Subject: [PATCH 11/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 2 +- scripts/check_inductor_report.py | 66 ++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100755 scripts/check_inductor_report.py diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 7a7b521425..3111c300fd 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -233,7 +233,7 @@ jobs: bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model done < $models_subset_file if [[ "${{ inputs.check_all_subset_models }}" == true ]] - python $GITHUB_WORKSPACE/scripts/check-inductor-logs.py --models-file="$models_subset_file" \ + python $GITHUB_WORKSPACE/scripts/check_inductor_report.py --models-file="$models_subset_file" \ --suite=${{ inputs.suite }} \ --dtype=${{ inputs.dtype }} \ --mode=${{ inputs.mode }} \ diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py new file mode 100755 index 0000000000..33803f1474 --- /dev/null +++ b/scripts/check_inductor_report.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +import argparse +from pathlib import Path +import csv + + +def check_report(suite, dtype, mode, test_mode, device, models_file): + inductor_log_dir = Path("inductor_log") / suite / dtype + inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" + inductor_report_path = Path(inductor_log_dir / inductor_report_filename) + + subset = [] + report = [] + exitcode = 0 + + with open(models_file) as f: + subset = f.read().strip().split('\n') + + with open(inductor_report_path) as f: + reader = csv.reader(f) + report_with_header = [] + for l in reader: + report_with_header.append(l) + for r in report_with_header[1:]: + if r[0] == device: + report.append(r) + + test_list = [r[1] for r in report] + + if test_mode == "performance": + for m in subset: + if m not in test_list: + exitcode = 1 + print(f"Test is not found in report: {m}") + + if test_mode == "accuracy": + test_statuses = [r[3] for r in report] + for m in subset: + try: + idx = test_list.index(m) + except ValueError: + exitcode = 1 + print(f"Test is NOT FOUND: {m}") + continue + if test_statuses[idx] != "pass": + exitcode = 1 + print(f"Test is NOT PASSED: {m}") + return exitcode + + +def main(): + argparser = argparse.ArgumentParser() + argparser.add_argument("--suite', required=True) + argparser.add_argument("--dtype", required=True) + argparser.add_argument("--mode", required=True, choices=("training", "inference")) + argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) + argparser.add_argument("--device", help="i.e. xpu", required=True) + argparser.add_argument("--models-file", help="Subset of models list", required=True) + args = argparser.parse_args() + exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) + print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") + exit(exitcode) + + +if __name__ == "__main__": + main() From c749d1416c2ec3eafe4ea7f0176ac6605360ecbd Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:37:55 +0200 Subject: [PATCH 12/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 33803f1474..92f640718b 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -50,7 +50,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file): def main(): argparser = argparse.ArgumentParser() - argparser.add_argument("--suite', required=True) + argparser.add_argument("--suite", required=True) argparser.add_argument("--dtype", required=True) argparser.add_argument("--mode", required=True, choices=("training", "inference")) argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) From 92f5d631d6bed1089bb9f2dd336ad820e5abf6e3 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:41:35 +0200 Subject: [PATCH 13/28] check-inductor-report.py --- scripts/check_inductor_report.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 92f640718b..506d513168 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -2,6 +2,7 @@ import argparse from pathlib import Path import csv +import sys def check_report(suite, dtype, mode, test_mode, device, models_file): @@ -13,10 +14,10 @@ def check_report(suite, dtype, mode, test_mode, device, models_file): report = [] exitcode = 0 - with open(models_file) as f: - subset = f.read().strip().split('\n') + with open(models_file, encoding="utf-8") as f: + subset = f.read().strip().split("\n") - with open(inductor_report_path) as f: + with open(inductor_report_path, encoding="utf-8") as f: reader = csv.reader(f) report_with_header = [] for l in reader: @@ -59,7 +60,7 @@ def main(): args = argparser.parse_args() exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") - exit(exitcode) + sys.exit(exitcode) if __name__ == "__main__": From da66237d49ad808e97ea09f0507bfbf7ba10698a Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 15:56:16 +0200 Subject: [PATCH 14/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 3111c300fd..d0af251c2d 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -232,7 +232,7 @@ jobs: while read model; do bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model done < $models_subset_file - if [[ "${{ inputs.check_all_subset_models }}" == true ]] + if [[ "${{ inputs.check_all_subset_models }}" == true ]]; then python $GITHUB_WORKSPACE/scripts/check_inductor_report.py --models-file="$models_subset_file" \ --suite=${{ inputs.suite }} \ --dtype=${{ inputs.dtype }} \ From d644e758ce5e5905e0fdfc9fd2f132fcfee64dfe Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 16:05:33 +0200 Subject: [PATCH 15/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index d0af251c2d..04dc52c252 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -228,7 +228,7 @@ jobs: if [[ "${{ inputs.only_one_model }}" ]]; then bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 ${{ inputs.only_one_model }} elif [[ "${{ inputs.models }}" == "subset" ]]; then - models_subset_file = "$GITHUB_WORKSPACE/.github/models/${{ inputs.test_mode }}/${{ inputs.suite }}.txt" + models_subset_file="$GITHUB_WORKSPACE/.github/models/${{ inputs.test_mode }}/${{ inputs.suite }}.txt" while read model; do bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 $model done < $models_subset_file From 06db6d33e1c609e7c54baed7ce1349a6e93547dc Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 16:22:33 +0200 Subject: [PATCH 16/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 506d513168..a09dca7c4b 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -6,7 +6,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file): - inductor_log_dir = Path("inductor_log") / suite / dtype + inductor_log_dir = Path("torch_compile_debug") / suite / dtype inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" inductor_report_path = Path(inductor_log_dir / inductor_report_filename) From e5c6af75a37559d460b9688c20478779ab58caac Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 16:38:18 +0200 Subject: [PATCH 17/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index a09dca7c4b..a2904c5385 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -53,7 +53,7 @@ def main(): argparser = argparse.ArgumentParser() argparser.add_argument("--suite", required=True) argparser.add_argument("--dtype", required=True) - argparser.add_argument("--mode", required=True, choices=("training", "inference")) + argparser.add_argument("--mode", required=True) argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) From 5192b85828456d56c61f4010333f974cce3741bb Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 16:46:01 +0200 Subject: [PATCH 18/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 3 ++- scripts/check_inductor_report.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index 04dc52c252..b2b1491861 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -238,7 +238,8 @@ jobs: --dtype=${{ inputs.dtype }} \ --mode=${{ inputs.mode }} \ --test_mode=${{ inputs.test_mode }} \ - --device=xpu + --device=xpu \ + --workspace="${GITHUB_WORKSPACE}" fi else bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index a2904c5385..9bfb877c73 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -5,8 +5,8 @@ import sys -def check_report(suite, dtype, mode, test_mode, device, models_file): - inductor_log_dir = Path("torch_compile_debug") / suite / dtype +def check_report(suite, dtype, mode, test_mode, device, models_file, workspace): + inductor_log_dir = Path(workspace) / Path("inductor_log") / suite / dtype inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" inductor_report_path = Path(inductor_log_dir / inductor_report_filename) @@ -57,6 +57,7 @@ def main(): argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) + argparser.add_argument("--workspace", help="Where to find the 'inductor_log' directory", default='.'), args = argparser.parse_args() exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") From b148c40960d4b5b873daa1ffab9ade06bc113ab8 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 16:59:57 +0200 Subject: [PATCH 19/28] check-inductor-report.py --- scripts/check_inductor_report.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 9bfb877c73..3370d51578 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -5,10 +5,10 @@ import sys -def check_report(suite, dtype, mode, test_mode, device, models_file, workspace): - inductor_log_dir = Path(workspace) / Path("inductor_log") / suite / dtype - inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" - inductor_report_path = Path(inductor_log_dir / inductor_report_filename) +def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_log_dir): + inductor_log_dir_leaf = Path(inductor_log_dir) / suite / dtype + inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{'inference-no-freezing' if test_mode == 'inference' else test_mode}.csv" + inductor_report_path = Path(inductor_log_dir_leaf / inductor_report_filename) subset = [] report = [] @@ -53,13 +53,13 @@ def main(): argparser = argparse.ArgumentParser() argparser.add_argument("--suite", required=True) argparser.add_argument("--dtype", required=True) - argparser.add_argument("--mode", required=True) + argparser.add_argument("--mode", required=True, choices=("inference", "training", "training-no-freeze")) argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) - argparser.add_argument("--workspace", help="Where to find the 'inductor_log' directory", default='.'), + argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default='inductor_log'), args = argparser.parse_args() - exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file) + exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, args.inductor_log_dir) print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") sys.exit(exitcode) From 367971518411be8717d6b7ae8813161e5852f1a3 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 17:00:32 +0200 Subject: [PATCH 20/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 3370d51578..f2f1168394 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -53,7 +53,7 @@ def main(): argparser = argparse.ArgumentParser() argparser.add_argument("--suite", required=True) argparser.add_argument("--dtype", required=True) - argparser.add_argument("--mode", required=True, choices=("inference", "training", "training-no-freeze")) + argparser.add_argument("--mode", required=True, choices=("inference", "training", "inference-no-freezing")) argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) From 543cdd1e23c0528d2f3126c73b4d556ac1ff207d Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 17:32:22 +0200 Subject: [PATCH 21/28] check-inductor-report.py --- .github/workflows/e2e-reusable.yml | 2 +- scripts/check_inductor_report.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-reusable.yml b/.github/workflows/e2e-reusable.yml index b2b1491861..968ff81915 100644 --- a/.github/workflows/e2e-reusable.yml +++ b/.github/workflows/e2e-reusable.yml @@ -239,7 +239,7 @@ jobs: --mode=${{ inputs.mode }} \ --test_mode=${{ inputs.test_mode }} \ --device=xpu \ - --workspace="${GITHUB_WORKSPACE}" + --inductor-log-dir="${GITHUB_WORKSPACE}/inductor_log" fi else bash -e $GITHUB_WORKSPACE/scripts/inductor_xpu_test.sh ${{ inputs.suite }} ${{ inputs.dtype }} ${{ inputs.mode }} ${{ inputs.test_mode }} xpu 0 static 1 0 diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index f2f1168394..14c3e98f97 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -15,7 +15,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_lo exitcode = 0 with open(models_file, encoding="utf-8") as f: - subset = f.read().strip().split("\n") + subset = f.readlines() with open(inductor_report_path, encoding="utf-8") as f: reader = csv.reader(f) From 76b3ecec06c061a6df4b29b3bf17d90801f0146a Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 17:42:42 +0200 Subject: [PATCH 22/28] check-inductor-report.py --- scripts/check_inductor_report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 14c3e98f97..6943dd9288 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -59,7 +59,8 @@ def main(): argparser.add_argument("--models-file", help="Subset of models list", required=True) argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default='inductor_log'), args = argparser.parse_args() - exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, args.inductor_log_dir) + exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, + args.inductor_log_dir) print(f"Report check result: {'SUCCESS' if exitcode == 0 else 'FAIL'}") sys.exit(exitcode) From 87949506d1619b3079f127980d0f27a44a440bc8 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 17:48:26 +0200 Subject: [PATCH 23/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 6943dd9288..faa84630af 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -57,7 +57,7 @@ def main(): argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) - argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default='inductor_log'), + argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default="inductor_log"), args = argparser.parse_args() exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, args.inductor_log_dir) From fe5f9f1ea992ad57c1b4a9f184dce00bef3ae010 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 17:50:51 +0200 Subject: [PATCH 24/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index faa84630af..ddf61bbef6 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -57,7 +57,7 @@ def main(): argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) - argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default="inductor_log"), + argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default="inductor_log"), args = argparser.parse_args() exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, args.inductor_log_dir) From 0d19d9dd10eb2ffcc203875e4120e75b9a343cc3 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 18:11:46 +0200 Subject: [PATCH 25/28] check-inductor-report.py --- scripts/check_inductor_report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index ddf61bbef6..6c6ce9838c 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -15,7 +15,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_lo exitcode = 0 with open(models_file, encoding="utf-8") as f: - subset = f.readlines() + subset = f.read().splitlines() with open(inductor_report_path, encoding="utf-8") as f: reader = csv.reader(f) @@ -46,6 +46,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_lo if test_statuses[idx] != "pass": exitcode = 1 print(f"Test is NOT PASSED: {m}") + import pdb;pdb.set_trace() return exitcode From 8285df5f59bf3228327a9ce32f9426d129d37fbf Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 18:20:17 +0200 Subject: [PATCH 26/28] check-inductor-report.py --- scripts/check_inductor_report.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 6c6ce9838c..bac9943da6 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -46,7 +46,6 @@ def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_lo if test_statuses[idx] != "pass": exitcode = 1 print(f"Test is NOT PASSED: {m}") - import pdb;pdb.set_trace() return exitcode From cd3dacdbb58c66ecfe8046336374975f14bf8e24 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 18:25:47 +0200 Subject: [PATCH 27/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index bac9943da6..26f5938443 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -57,7 +57,7 @@ def main(): argparser.add_argument("--test_mode", required=True, choices=("performance", "accuracy")) argparser.add_argument("--device", help="i.e. xpu", required=True) argparser.add_argument("--models-file", help="Subset of models list", required=True) - argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default="inductor_log"), + argparser.add_argument("--inductor-log-dir", help="Inductor test log directory", default="inductor_log") args = argparser.parse_args() exitcode = check_report(args.suite, args.dtype, args.mode, args.test_mode, args.device, args.models_file, args.inductor_log_dir) From 6dfbaee663856ed1d09afef0d0b1cef143c86957 Mon Sep 17 00:00:00 2001 From: Vadim Musin Date: Mon, 21 Oct 2024 19:37:20 +0200 Subject: [PATCH 28/28] check-inductor-report.py --- scripts/check_inductor_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check_inductor_report.py b/scripts/check_inductor_report.py index 26f5938443..cc639721cf 100755 --- a/scripts/check_inductor_report.py +++ b/scripts/check_inductor_report.py @@ -7,7 +7,7 @@ def check_report(suite, dtype, mode, test_mode, device, models_file, inductor_log_dir): inductor_log_dir_leaf = Path(inductor_log_dir) / suite / dtype - inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{'inference-no-freezing' if test_mode == 'inference' else test_mode}.csv" + inductor_report_filename = f"inductor_{suite}_{dtype}_{mode}_{device}_{test_mode}.csv" inductor_report_path = Path(inductor_log_dir_leaf / inductor_report_filename) subset = []