You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It might be nice to have a warning system for “things that are bad for performance”. In particular, the first example I’ve come across is std::pow(x, y) where y is a symbol at codegen time, but is a constant parameter at runtime (in particular an integer, in this case and the worst case 1.0). I can imagine maybe also wanting warnings for integer powers if fast-math isn’t on? Although maybe our codegen should handle this, or assume fast-math.
Probably if pow(x, y) is the only example, this doesn’t make sense? Not sure if we have other examples
Misc thoughts:
Docs page would be good
probably want this regardless
Compilers like ispc and numba have things like this
Want to be able to configure as warning, or error, or ignored
Need to do this per subexpression for big things like OptimizationProblem that encompass lots of expressions / residuals
Extra attribute per expression?
Code printer probably checks
The text was updated successfully, but these errors were encountered:
I noticed my generated code has a lot of std::pow calls where y = 2 is known at codegen time. Is there anything I can do to make symforce emit something like _tmp2 = _tmp1 * _tmp1 instead?
If you have a compiler where this doesn't get optimized and actually results in a function call or something else that's not just a multiplication instruction that would be good to know though and we can also special-case that to generate a multiplication
Some thoughts from discussing this:
std::pow(x, y)
wherey
is a symbol at codegen time, but is a constant parameter at runtime (in particular an integer, in this case and the worst case1.0
). I can imagine maybe also wanting warnings for integer powers if fast-math isn’t on? Although maybe our codegen should handle this, or assume fast-math.pow(x, y)
is the only example, this doesn’t make sense? Not sure if we have other examplesOptimizationProblem
that encompass lots of expressions / residualsThe text was updated successfully, but these errors were encountered: