-
Notifications
You must be signed in to change notification settings - Fork 26.3k
Move halfbits2float and float2halfbits conversions to ATen. #10134
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
Conversation
This will be needed soon because I want to move Half.h into ATen/core, and then I cannot have a TH dependency. I also took the liberty of making the code more strict-aliasing safe (this is not actually useful, since we will never built Torch with strict aliasing) by replacing pointer casts between float and unsigned with a memcpy instead. Signed-off-by: Edward Z. Yang <[email protected]>
facebook-github-bot
left a comment
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.
ezyang has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
|
|
||
| // Reinterpret the result bit pattern as a float | ||
| float result_float; | ||
| std::memcpy(&result_float, &result_bit, sizeof(result_float)); |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
| { | ||
| // Reinterpret the float as a bit pattern | ||
| unsigned x; | ||
| std::memcpy(&x, &src, sizeof(x)); |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
cpuhrsch
left a comment
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.
LGTM aside from minor comment
…10134) Summary: This will be needed soon because I want to move Half.h into ATen/core, and then I cannot have a TH dependency. I also took the liberty of making the code more strict-aliasing safe (this is not actually useful, since we will never built Torch with strict aliasing) by replacing pointer casts between float and unsigned with a memcpy instead. Signed-off-by: Edward Z. Yang <[email protected]> Pull Request resolved: pytorch#10134 Differential Revision: D9121920 fbshipit-source-id: 2ab1012d3df3b4ad39ab6d0c5b26f9779d7f3521
Summary: This will be needed soon because I want to move Half.h into ATen/core, and then I cannot have a TH dependency. I also took the liberty of making the code more strict-aliasing safe (this is not actually useful, since we will never built Torch with strict aliasing) by replacing pointer casts between float and unsigned with a memcpy instead. Signed-off-by: Edward Z. Yang <[email protected]> Pull Request resolved: pytorch/pytorch#10134 Differential Revision: D9121920 Pulled By: ezyang fbshipit-source-id: 3b1f86a7c5880e8ac1a589a51f0635bb72e1fd40
…10134) Summary: This will be needed soon because I want to move Half.h into ATen/core, and then I cannot have a TH dependency. I also took the liberty of making the code more strict-aliasing safe (this is not actually useful, since we will never built Torch with strict aliasing) by replacing pointer casts between float and unsigned with a memcpy instead. Signed-off-by: Edward Z. Yang <[email protected]> Pull Request resolved: pytorch#10134 Differential Revision: D9121920 Pulled By: ezyang fbshipit-source-id: 3b1f86a7c5880e8ac1a589a51f0635bb72e1fd40
This will be needed soon because I want to move Half.h into
ATen/core, and then I cannot have a TH dependency.
I also took the liberty of making the code more strict-aliasing
safe (this is not actually useful, since we will never built Torch
with strict aliasing) by replacing pointer casts between
float and unsigned with a memcpy instead.
Signed-off-by: Edward Z. Yang [email protected]