-
Notifications
You must be signed in to change notification settings - Fork 25.7k
Reland #50999 (Added pow() on CPU for float16 & bfloat16) #55280
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
💊 CI failures summary and remediationsAs of commit f47c554 (more details on the Dr. CI page): 💚 💚 Looks good so far! There are no failures yet. 💚 💚 This comment was automatically generated by Dr. CI (expand for details).Follow this link to opt-out of these comments for your Pull Requests.Please report bugs/suggestions to the (internal) Dr. CI Users group. |
This comment has been minimized.
This comment has been minimized.
|
@imaginary-person Could you rebase this to get clean signals on the fixed upstream failure. |
|
Hello @heitorschueroff, I'll do that asap. Sorry for the inconvenience! |
Get changes from master repo
|
Hello @heitorschueroff, the 3 failed CI checks are related to PyTorch docs, and were fixed upstream earlier today. Please let me if any further changes are required. All other CI checks passed. |
Get fixes for docs CI checks
Codecov Report
@@ Coverage Diff @@
## master #55280 +/- ##
==========================================
+ Coverage 74.66% 77.46% +2.79%
==========================================
Files 1896 1896
Lines 187857 188005 +148
==========================================
+ Hits 140268 145631 +5363
+ Misses 47589 42374 -5215 |
|
@heitorschueroff has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
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, landing now.
|
Hello @heitorschueroff, a recently landed PR has introduced a conflict related to EDIT: now that I think of it, FB internal tests keep running even after another commit. So, I resolved the conflicts that GitHub was warning me about. The internal FB tests that were running are still running here - https://github.com/pytorch/pytorch/runs/2278377934 |
|
@heitorschueroff has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
|
@heitorschueroff has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Hello @heitorschueroff, please let me know if any further changes are required on this PR. Thanks! EDIT: I made the following changes:
|
This comment has been minimized.
This comment has been minimized.
Get changes from master repo
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
|
@heitorschueroff has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
|
@heitorschueroff merged this pull request in aceceb3. |
…orch#55280) Summary: #### Reason for relanding Line 1607 of `torch/testing/_internal/common_methods_invocations.py` of pytorch#50999 had `dtype` instead of `dtype=torch.bool`, so 4 of the 9 sample inputs for `bool` had incorrect dtype. This bug was caught by pytorch#54949. 1. Added support for pow() on CPU for `float16` (`Half`) and `bfloat16` types. Both `pow(Tensor, Scalar)` and `pow(Tensor, Tensor)` are now supported for the aforementioned types. However autograd isn't supported for `Float16` on CPU yet, as `log_vml_cpu` can't be enabled for it. 2. heitorschueroff added `pow_tensor_scalar_optimized_kernel` to refactor & simplify `PowKernel.cpp`. It provides a common path for all the complex types & floating point types (except Float16, due to lack of complete AVX2 vectorization support for it). It replaced code that had previously been duplicated for (float, double) and complex types, so PowKernel.cpp looks a lot cleaner now. 3. Enabled (unskipped) some tests for `erf`, `erfc`,`erfinv`, `tan` and `linalg.vector.norm` which were being skipped earlier due to `pow()` not having been implemented for `float16` & `bfloat16`. 4. Added an OpInfo for `pow()` & enabled some test cases for `pow()`. 5. Extended the coverage of existing tests for `pow` in `test_binary_ufuncs.py` in order to enable comparison with `numpy`, even with discontiguous tensors, and added a test to ensure that a runtime error is raised for `pow`'s inplace variant if resizing the base tensor is required during its invocation. 6. Added `float16` & `bfloat16` to `square`'s dtype lists in its `UnaryUfuncInfo`. 7. Removed redundant `dtypesIfCPU` and `dtypesIfCUDA` from `OpInfo`s where they are equal to `dtypes`. Pull Request resolved: pytorch#55280 Reviewed By: jbschlosser Differential Revision: D27591772 Pulled By: heitorschueroff fbshipit-source-id: c7420811b32595bb3353149a61e54a73f2eb352b
Reason for relanding
Line 1607 of
torch/testing/_internal/common_methods_invocations.pyof #50999 haddtypeinstead ofdtype=torch.bool, so 4 of the 9 sample inputs forboolhad incorrect dtype. This bug was caught by #54949.Summary
float16(Half) andbfloat16types.Both
pow(Tensor, Scalar)andpow(Tensor, Tensor)are now supported for the aforementioned types.However autograd isn't supported for
Float16on CPU yet, aslog_vml_cpucan't be enabled for it.pow_tensor_scalar_optimized_kernelto refactor & simplifyPowKernel.cpp.It provides a common path for all the complex types & floating point types (except Float16, due to lack of complete AVX2 vectorization support for it). It replaced code that had previously been duplicated for (float, double) and complex types,
so PowKernel.cpp looks a lot cleaner now.
erf,erfc,erfinv,tanandlinalg.vector.normwhich were being skipped earlier due topow()not having been implemented forfloat16&bfloat16.pow()& enabled some test cases forpow().powintest_binary_ufuncs.pyin order to enable comparison withnumpy, even with discontiguous tensors, and added a test to ensure that a runtime error is raised forpow's inplace variant if resizing the base tensor is required during its invocation.float16&bfloat16tosquare's dtype lists in itsUnaryUfuncInfo.dtypesIfCPUanddtypesIfCUDAfromOpInfos where they are equal todtypes.