Add tuning search based on CompileIQ - #9190
Conversation
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 12 included reviews per hour; 10 remain after this review. 📝 WalkthroughSummary by CodeRabbit
WalkthroughThree changes update benchmark execution and search. Signal registration is restricted to the main thread. SQLite connections support validated cross-thread use. Runtime-axis scoring uses accumulated available weights. A new driver selects brute-force or CompileIQ search. ChangesBenchmark Runtime and Scoring
CompileIQ Benchmark Search
Suggested reviewers: Merge Risk: ⚪ Minimal · up to The PR adds a localized tuning-search workflow and related benchmark support; no actionable merge-blocking risk remains based on the available evidence. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
benchmarks/scripts/search_iq.py (1)
120-131: ⚡ Quick winsuggestion: Rename parameter or variable to clarify intent.
Line 125 passes
num_rt_workloadsto a parameter namednum_objectivesinget_num_expected_runs(). The function signature andiq_search()(line 83) usenum_objectives=1, but the calculation here usesnum_rt_workloads. Either rename the parameter inget_num_expected_runs()to reflect its actual usage, or clarify the relationship between RT workloads and the expected-runs heuristic.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 75cb46dd-cbc5-44dd-9b6d-7dd9bc33fb9b
📒 Files selected for processing (3)
benchmarks/scripts/cccl/bench/bench.pybenchmarks/scripts/cccl/bench/storage.pybenchmarks/scripts/search_iq.py
|
ok, here is a confusing bit. Yet, the scores reported to CompileIQ are (ordered by variant as the list above):
@gevtushenko as the author of the tuning framework, I kindly ask for an explanation for this observation. |
09ec91a to
3d5d9f6
Compare
ea52193 to
0d9d8d5
Compare
i think it's something we carry over from evo days.
cccl/benchmarks/scripts/analyze.py Lines 106 to 107 in 6992cf8 |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 0a09e9ad-602a-4978-b4bc-08d7d4f3c4cd
📒 Files selected for processing (3)
benchmarks/scripts/cccl/bench/bench.pybenchmarks/scripts/cccl/bench/storage.pybenchmarks/scripts/search_iq.py
🚧 Files skipped from review as they are similar to previous changes (2)
- benchmarks/scripts/cccl/bench/storage.py
- benchmarks/scripts/search_iq.py
I believe this is also what If the new logic is fine, then we can merge the PR and we get at least a single GPU CompileIQ-based tuning script. It may even support running on multiple GPUs in the same node, since I think CompileIQ supports this natively, but I think if we want to have a baseline per GPU, we may need to implement that ourselves. I have not looked into this yet. |
gevtushenko
left a comment
There was a problem hiding this comment.
Will support multi-GPU in a follow up PR.

This is mostly done by
claude, trying to migrate the internalcub_tuning_evoscripts. This PR adds a simplified version using a single worker, running benchmarks on a single GPU.Running:
It's still a bit confusing, because after running, the database shows different results, but it looks like the score reported by
analyze.pyis just computed differently than the score passed to compile-iq.