Repository navigation
Move the ABC pin on to the bounded ISOP table - #1243
Merged
Merged
Conversation
The ISOP cover table the previous commit's pin brought in inserts on every miss and never evicts, so its size was bounded only by two entries per cone, which is O(AIG). stp/abc#20 bounds it at 1024 entries, about 200 KB. It costs nothing measurable. Replaying the request streams against a bound of 1024, an LRU of 1024 and a direct-mapped 1024 gives the same hit rate as the unbounded table to three decimal places, the most distinct cut functions any measured circuit presents being 166. Rebuilt and retested against an ABC built at exactly this revision: 357 of 357.
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.
Follows #1242, which pinned
1b977a4d5. This moves on toe19e80d78, adding stp/abc#20: the ISOP cover table that pin brought in is now bounded at 1024 entries, about 200 KB.It needed bounding. The table inserts on every miss and never evicts, so its size was limited only by two entries per cone — O(AIG) — and at roughly 160 bytes an entry a twelve-million-gate blast could in principle have reached a gigabyte of table while getting nothing back, since in that regime almost every lookup is a miss. Real circuits are nowhere near: four functions answer all 146,304 cover requests of a 293k-AND multiplier, and the most diverse input measured presents 166. But that was a property of the circuits rather than of the code.
The bound costs nothing measurable. Replaying the request streams against a bound of 1024, an LRU of 1024 and a direct-mapped 1024 all reproduce the unbounded table's hit rate to three decimal places, so the policy is the simplest one that bounds it: past the bound a stored function is still replayed, one that is not is computed and not stored.
Verified against an ABC built at exactly
e19e80d78and reached through-DABC_DIR, since a plain configure resolves ABC from whateverlibabc-pic.aanother build tree installed first and would not test the pin at all: build clean, 357 of 357 tests passing.