-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Hexagon] Treat floats as float32 when passing args to offloaded kernels #9010
Conversation
`TVMArg` can hold a floating point value, but it's stored as `double`. In Hexagon ABI doubles are passed in a register pair, but if the offloaded function was using floats (i.e. float32), it will expect values being passed in single registers. Since floats are much more common on Hexagon, assume all scalar floating point values are floats. This is only an issue with offloading, and can be treated as a limitation (we do something analogous for integers already).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks LGTM, although I'd like a second take from @areusch
Thank you @kparzysz-quic - the PR has been merged |
* main: (102 commits) Implementation of relay_to_tir target hook (apache#8423) [Onnx] Fix NLL Loss tests (apache#8971) [Bugfix] Fix other div zero errors also in rewrite_simplify (apache#8983) [ONNX] enable the onnx tests after PR apache#8274 merged (apache#9019) [Hexagon] Disable `thread_local` on Hexagon (apache#9025) [Hexagon] Allow undefined symbols in libtvm_runtime.so on Hexagon (apache#9024) [Onnx] Add momentum (apache#9000) fix (apache#9021) [Community] @AndrewZhaoLuo -> Reviewer (apache#9020) [Hexagon] Implement model launcher (apache#8986) [Relay][Pass] Add ExtractOperators pass (apache#8996) [BYOC][TensorRT] Add TensorRT own int8 calibration support to TensorRT BYOC integration (apache#8808) [ONNX] Add Einsum converter (apache#8985) Add standalone_crt/ to be part of the wheel package, when available. (apache#9005) [Relay] Remove memory planing from LowerTEPass (apache#8974) [Hexagon] Treat floats as float32 when passing args to offloaded kernels (apache#9010) [Runtime] Pipeline Executor Initial patch. (apache#8702) [Hexagon] `llvm-options` attribute is an array of strings (apache#9011) disable cuda int8 schedule for non-cuda gpu target (apache#9014) [Torch] Add an option to make imported models compatible with the Relay text parser (apache#9015) ...
sorry i missed this @tmoreau89 @kparzysz-quic . i think this makes sense for now. it seems like in the post-fused-IRModule world, we could do some analysis of the calling/called function to eliminate this limitation. what do you think? also, seems like we should potentially document the TVM port in a README/docs.tvm.ai somewhere. what are your thoughts about that? |
…els (apache#9010) `TVMArg` can hold a floating point value, but it's stored as `double`. In Hexagon ABI doubles are passed in a register pair, but if the offloaded function was using floats (i.e. float32), it will expect values being passed in single registers. Since floats are much more common on Hexagon, assume all scalar floating point values are floats. This is only an issue with offloading, and can be treated as a limitation (we do something analogous for integers already).
…els (apache#9010) `TVMArg` can hold a floating point value, but it's stored as `double`. In Hexagon ABI doubles are passed in a register pair, but if the offloaded function was using floats (i.e. float32), it will expect values being passed in single registers. Since floats are much more common on Hexagon, assume all scalar floating point values are floats. This is only an issue with offloading, and can be treated as a limitation (we do something analogous for integers already).
TVMArg
can hold a floating point value, but it's stored asdouble
. In Hexagon ABI doubles are passed in a register pair, but if the offloaded function was using floats (i.e. float32), it will expect values being passed in single registers. Since floats are much more common on Hexagon, assume all scalar floating point values are floats. This is only an issue with offloading, and can be treated as a limitation (we do something analogous for integers already).