-
Notifications
You must be signed in to change notification settings - Fork 645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor benchmark jobs in ci.yml #16431
Comments
FWIW, I looked at the logs for a sample run of
just... lots of overhead and then a decent number of programs to compile |
SG. I'll say from time to time we catch problems with |
For the |
I'm seeing if I can pull some statistics for how long each job spends queued right now. (If that ends up taking longer than I'd like I may just proceed without data, but I'd like to know...). For queueing, we could also add more runners, or switch those jobs to use GitHub-hosted runners instead of our own. I'd rather just eliminate the overhead and complexity instead of throwing more/different resources at it though. Queueing time / job orchestration is only part of the costs. |
See #16438 (comment) for the use of |
Progress on #16431. The `build_e2e_test_artifacts` job produces artifacts used for benchmarking but it has been also providing test coverage that the programs in the benchmark suite can be compiled correctly. That test coverage would be a better fit for a test job like `test_gpu` (ci.yml) or `regression_test_cpu` (pkgci.yml). As it is now, that job is building multiple very similar configurations and it then uploads those files to the cloud (to the tune of 70-130GB per CI run). This also adds back coverage that was missing from `test_benchmark_suites`. Those tests should be migrated to another workflow not connected to benchmarks so they can be ran and debugged in isolation. This setup is too brittle and complex.
Slight adjustments to the plans from the initial issue description:
|
Following this discussion on Discord.
These jobs in the
ci.yml
workflow are increasing infrastructure complexity and are a bottleneck on total presubmit time:build_benchmark_tools
build_e2e_test_artifacts
test_benchmark_suites
compilation_benchmarks
(opt-in)execution_benchmarks
(opt-in)process_benchmark_results
(opt-in)When no benchmarks are enabled, the
build_e2e_test_artifacts
->test_benchmark_suites
jobs still run. The intent here was to verify that benchmark suite models can be successfully compiled and executed correctly even if they are not benchmarked. The reality is that thetest_benchmark_suites
workflows are only running one test:iree/tools/test/iree_run_module_correctness_test
, and thebuild_e2e_test_artifacts
workflow takes 9 minutes to build multiple platform variants of the same program. The coverage provided has redundancies and the overall setup has multiple excess minutes of overhead (not even counting time spent waiting for expensive self-hosted runners.I propose we
test_benchmark_suites
matrix entirelybuild_benchmark_tools
andbuild_e2e_test_artifacts
to opt-in based on benchmarks being requested (using a preset?)experimental/regression_suite
rather than try to bolt something on to the existing benchmarking infrastructure like those "run module tests"ci.yml
and place them inbenchmark.yml
configure_ci.py
and PR labels as they currently docc @pzread
The text was updated successfully, but these errors were encountered: