audio
audio copied to clipboard
[rocm] Fix current torch.linalg.lstsq limitation in InverseMelScale module
This PR fixes the following error:
RuntimeError: torch.linalg.lstsq: only overdetermined systems (input.size(-2) >= input.size(-1)) are allowed on CUDA. Please rebuild with cuSOLVER
Checking the pytorch code https://github.com/ROCm/pytorch/blob/main/aten/src/ATen/native/cuda/linalg/BatchLinearAlgebra.cpp, it calls magma. According to magma documentation, least squares method - magma_sgels_gpu supports only overdetermined systems https://icl.utk.edu/projectsfiles/magma/doxygen/group__magma__gels.html
The proposed temporary solution uses https://docs.pytorch.org/docs/stable/generated/torch.linalg.pinv.html as a replacement for linear least squares. This change can be reverted once torch.linalg.lstsq uses hipSolver for underconstrained systems.
Tested on rocm with
pytest test/torchaudio_unittest/transforms/transforms_cuda_test.py -k test_inverse_melscale