fix sort and topk with discontiguous out (#63029)
authorNatalia Gimelshein <ngimel@fb.com>
Tue, 10 Aug 2021 22:44:09 +0000 (15:44 -0700)
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>
Tue, 10 Aug 2021 22:45:28 +0000 (15:45 -0700)
commit790553811caade39428ad821113aac26711156fd
treeca8c09134aed258bf2e4434588ffa30042886f20
parent500b24e3031c1c3a34d5153e4c3fbcd32427aa2e
fix sort and topk with discontiguous out (#63029)

Summary:
Fixes https://github.com/pytorch/pytorch/issues/62645 and https://github.com/pytorch/pytorch/issues/62940. The root cause of those bugs is in the bad interaction between `collapseDims` and setting the size of sorting/topK dimension to 1. If all other dimensions happen to be 1, `collapseDims` thinks that that `1` dimension is collapsible (even though it was specifically marked to be preserved) and loses its stride information. If dimension was really of size 1, the stride information would be unimportant, but since in reality that dimension is not 1 and was set to 1 for convenience, the loss of stride information results in incorrect outputs.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/63029

Reviewed By: heitorschueroff

Differential Revision: D30224925

Pulled By: ngimel

fbshipit-source-id: 269dd375c5cd57c6007fe91f729f8c60a2e7a264
aten/src/ATen/native/cuda/Sort.cu
aten/src/ATen/native/cuda/TensorTopK.cu
test/test_sort_and_select.py