Open jasondegraw opened 3 years ago
I assume that for small models, input/initialization and output account for a larger fraction of simulation time vis-a-vis the core time-marching piece. And so performance optimizations that target small models, as opposed to ones that target all models or large models, would focus on those pieces. Now, there are certainly things that we can do to improve input processing/initialization and outputs, but I'm not sure that many of those things can be cast as "tradeoffs" because I don't really see them as having a precision dimension.
That said, things to help with input processing:
Things to help with initialization:
const std::string
to constexpr std::string_view
and ArrayXD<T> const
to constexpr std::array<T>
.Things to help with output:
It would be helpful to have an object similar to the PerformancePrecisionTradeoffs object that would be the collection location for options/settings that provide speed improvements for "small" models. "Small" in this context means very few zones, simpler systems, etc. Admittedly, I'm misusing "optimizations" here, but the idea would be to have options for
and other things that can help speed up smaller models. Adding these into the existing PerformancePrecisionTradeoffs object would be OK too, but the name is a bit worse there (the idea isn't to trade precision for performance, just to do things that are better for performance of small models).