Skip to content

feat!: Auto decouple and partition#23

Merged
davidchuyaya merged 76 commits into
mainfrom
auto_decouple_and_partition
May 26, 2026
Merged

feat!: Auto decouple and partition#23
davidchuyaya merged 76 commits into
mainfrom
auto_decouple_and_partition

Conversation

@davidchuyaya

Copy link
Copy Markdown
Contributor

No description provided.

davidchuyaya and others added 30 commits September 19, 2025 16:45
* Migrated changes from toy_examples branch

* Added python analysis scripts

* Create separate crate for hydro_optimize_examples, fix compile errors, cargo fmt + clippy

* Struct must have all public fields
* Bug fix part 2

* Migrate toy_examples from main repo

* Change dependencies to be local, merge with hydro main (add support for ChainFirst, remove delta, duplicate private functions), change simple_graphs to be time-based

* Fixes for cases where no send/recv overhead is recorded, added noop experiment

* Adopting changes HydroNode, HydroRoot, and HydroIrMetadata. WIP

* Fixed compile-time errors

* HydroRoot input() and input_metadata() no longer return vecs

* Remove toy examples

* Point to git repo instead of local

* update Cargo.lock

* cargo clippy

* Fix tests, remove partition_node_analysis tests that rely on checking the taints of all nodes (since there's Cast, Batch, etc, too many to track now)
* Switch ILP solver, fix Tee inner no ID decoupling bug, add SingletonSource as a source

* Insta fixes

* Use HiGHS solver, much faster

* cargo lock
* Fix bug where ILP solver would attempt to decouple at the network. New HydroNodes (such as YieldConcat) were not having their cardinalities calculated correctly.

* cargo fmt

* one last cargo fmt

* Hide results.txt files
…later passes would check the hashmap of counters for that machine only and erase cardinalities for nodes on other machines. (#8)

Give counter to SingletonSource (which may have a singleton per tick).
…ut" of a component is the actual input.

Partitioning ILP WIP on field constraints
Fix: For operators with 2 parents, dependencies on 1 parent might reveal fields in the other.
For example, AntiJoins pos side is completely dependent (no field info) but the 0th field is also completely dependent on the neg side.
Therefore, the 0th field must also exist on the pos side.
In the general case, fields on either side must be "projected" onto the other.
…he wrong type after Map. 2. Tee had wrong location set after decoupling (the original tee needs to take its inner's location). 3. swap_root should use the parent's ID if a decoupling is required. 4. Partition divide by 0 bug
…s all analysis and optimizations together with single flag, untested
…sed usage table, incorporated into ILP solver (but times out for high budgets). CAS benchmark setup
…fields, decoupling checks is serializable (but not bounded, which is too strict), commutative reduce can be partitioned, op_id_to_parents filters op's own location as well, effective network cost add before partitioning
@davidchuyaya
davidchuyaya merged commit 1c05854 into main May 26, 2026
4 checks passed
@davidchuyaya
davidchuyaya deleted the auto_decouple_and_partition branch May 26, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant