CCTools: Add Deterministic Bucketing Algorithms (det-greedy, det-exhaust)#4302
Draft
tphung3 wants to merge 17 commits intocooperative-computing-lab:masterfrom
Draft
CCTools: Add Deterministic Bucketing Algorithms (det-greedy, det-exhaust)#4302tphung3 wants to merge 17 commits intocooperative-computing-lab:masterfrom
tphung3 wants to merge 17 commits intocooperative-computing-lab:masterfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds deterministic versions of the greedy and exhaustive bucketing algorithms (det-greedy and det-exhaust) to CCTools, integrating them into WorkQueue, TaskVine, and Makeflow. The implementation extracts common code into shared modules and extends the existing bucketing framework with new allocation modes.
Key Changes:
- Implements deterministic greedy and exhaustive bucketing algorithms as alternatives to probabilistic versions
- Refactors existing bucketing code to extract common functionality into shared modules
- Adds new allocation modes across WorkQueue and TaskVine APIs
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| dttools/src/bucketing_det_greedy.c/h | New deterministic greedy bucketing algorithm implementation |
| dttools/src/bucketing_det_exhaust.c/h | New deterministic exhaustive bucketing algorithm implementation |
| dttools/src/bucketing_greedy_common.c/h | Extracted common code from greedy bucketing for reuse |
| dttools/src/bucketing_exhaust_common.c/h | Extracted common code from exhaustive bucketing for reuse |
| dttools/src/bucketing.c | Integrates new deterministic modes with branching logic for predictions |
| dttools/src/bucketing.h | Adds new bucketing mode enums and test helper function |
| dttools/src/category.h | Adds allocation mode enums for deterministic algorithms |
| dttools/src/category.c | Updates mode checking and allocation logic for new modes |
| dttools/src/bucketing_manager.c | Validates new bucketing modes |
| work_queue/src/work_queue.h | Adds WorkQueue allocation mode enums |
| work_queue/src/work_queue.c | Updates transaction logging for new modes |
| taskvine/src/manager/taskvine.h | Adds TaskVine allocation mode enums |
| taskvine/src/manager/vine_manager.c | Validates new allocation modes |
| taskvine/src/manager/vine_txn_log.c | Updates transaction logging for new modes |
| makeflow/src/dag_visitors.c | Adds JSON conversion for new allocation types |
| dttools/src/Makefile | Adds new source files to build system |
| dttools/test/TR_bucketing.sh | Adds test coverage for new algorithms |
| dttools/src/bucketing_base_test.c | Updates tests to cover new modes |
| dttools/src/bucketing_manager_test.c | Updates tests to cover new modes |
| work_queue/test/wq_alloc_test.py | Adds Python test coverage for new modes |
| taskvine/test/vine_allocations.py | Adds Python test coverage for new modes |
| work_queue/src/bindings/python3/ndcctools/work_queue_dask.py | Updates documentation with new modes |
| taskvine/src/bindings/python3/ndcctools/taskvine/dask_executor.py | Updates documentation with new modes |
| taskvine/src/bindings/python3/ndcctools/taskvine/compat/dask_executor.py | Updates documentation with new modes |
| taskvine/test/vine_common.sh | Fixes incorrect shebang (was /bin/hh, now /bin/sh) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
taskvine/src/bindings/python3/ndcctools/taskvine/compat/dask_executor.py
Outdated
Show resolved
Hide resolved
Member
|
ready to merge? |
btovar
approved these changes
Jan 5, 2026
Contributor
Author
The PR is not ready yet :) I'm ironing out some bugs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed Changes
This PR implements the deterministic version of the bucketing algorithms (greedy and exhaustive) and integrates them into WorkQueue and TaskVine.
Merge Checklist
The following items must be completed before PRs can be merged.
Check these off to verify you have completed all steps.
make testRun local tests prior to pushing.make formatFormat source code to comply with lint policies. Note that some lint errors can only be resolved manually (e.g., Python)make lintRun lint on source code prior to pushing.