Skip to content

fix: do not consider odd 'K' values when constructing a Fat Tree#8

Open
matt-dbs wants to merge 1 commit into
HLC-Lab:mainfrom
matt-dbs:matt-dbs/odd-k
Open

fix: do not consider odd 'K' values when constructing a Fat Tree#8
matt-dbs wants to merge 1 commit into
HLC-Lab:mainfrom
matt-dbs:matt-dbs/odd-k

Conversation

@matt-dbs
Copy link
Copy Markdown

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 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.

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.
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