Clean-up error checking in linalg. (#80767)
This PR does a number of things:
- Fixes https://github.com/pytorch/pytorch/issues/80735 returning early in the most common case (no errors).
- Leaves just one entry to check the errors, so that it's as uniform as it gets (easy to get right, difficult to get wrong)
- Having all the error checking in one function simplifies the code
- We make sure that the `infos_ptr` sent over to LAPACK is always of type `int`, as it should
- We just access `infos.data_ptr<int32_t>` in `_linalg_check_errors`
Edit. I get a consistent x7-10 speed-up with this patch using the script in https://github.com/pytorch/pytorch/issues/80735, so I think we're good here.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/80767
Approved by: https://github.com/IvanYashchuk, https://github.com/ngimel