@h.paramclass
class InnerParams:
n = h.Param(dtype=int)
bazillions_of_other_complicated_params = ...
@h.generator
def Inner(p: InnerParams) -> h.Module:
...
@h.paramclass
class OuterParams:
n = h.Param(dtype=int)
# that's it, just the one
@h.generator
def Outer(p: OuterParams) -> h.Module:
return Inner(n=p.n, **some_source_of_those_other_params())
Running this down:
Inner and Outer are both generators
Outer calls Inner. They return the same Module.
What is, and what should be, the name of that module?
Currently, assuming Inner's "bazillions of complicated params" get hashed in naming, it's something like: Inner_{HASH_VALUE}_n_{OUTER_N_VALUE}
I.e. the "suffix naming" gets added by both the calls to Inner and Outer.
That may not be ideal, especially in the cases where
(a) We also hash Outer's parameter values. Just because that name gets long.
Example:
Running this down:
Inner
andOuter
are both generatorsOuter
callsInner
. They return the sameModule
.What is, and what should be, the name of that module?
Currently, assuming
Inner
's "bazillions of complicated params" get hashed in naming, it's something like:Inner_{HASH_VALUE}_n_{OUTER_N_VALUE}
I.e. the "suffix naming" gets added by both the calls to
Inner
andOuter
.That may not be ideal, especially in the cases where