fix: do not consider odd 'K' values when constructing a Fat Tree#8
Open
matt-dbs wants to merge 1 commit into
Open
fix: do not consider odd 'K' values when constructing a Fat Tree#8matt-dbs wants to merge 1 commit into
matt-dbs wants to merge 1 commit into
Conversation
A non-obvious property of the formulas for computing a Fat Tree topology is that the constant `K` must be even. If you select an odd value of `K`, the math may appear to work out but the resulting tree has unexpected properties that make later routing calculations not work out. The htsim code for constructing a Fat Tree was considering every > 0 possible value of `K`. Apart from being inefficient, this resulted in constructing a malformed Fat Tree for node counts like 6, as well as accidentally missing the guard condition that any tree must be fully populated. The user-visible effect of this was puzzling assertion failures during routing at runtime: htsim_uec: htsim/sim/route.h:22: void Route::push_back(PacketSink*): Assertion `sink != NULL' failed.
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.
Note
This is fixing a latent problem that bit us because we were writing new connection matrices, some of which accidentally induced an odd
K. Whether this is relevant to your work or not, I am not sure.A non-obvious property of the formulas for computing a Fat Tree topology is that the constant
Kmust be even. If you select an odd value ofK, the math may appear to work out but the resulting tree has unexpected properties that make later routing calculations not work out.The htsim code for constructing a Fat Tree was considering every > 0 possible value of
K. Apart from being inefficient, this resulted in constructing a malformed Fat Tree for node counts like 6, as well as accidentally missing the guard condition that any tree must be fully populated. The user-visible effect of this was puzzling assertion failures during routing at runtime: