[Pytorch][Vulkan] aten::flip (#106628)
Summary:
https://pytorch.org/docs/stable/generated/torch.flip.html
Implement flip for vulkan.
For batch and channel cases:
- Calculate the logical tensor values of N and C from pos.xyz
- Flip the logical tensor value of N, C or both
- Use `n*[C/4] + i/4, i%4` to get the new tensor value
Test Plan:
New tests:
```
lfq@lfq-mbp fbsource % buck run --target-platforms ovr_config//platform/macos:arm64-fbsource //xplat/caffe2:pt_vulkan_api_test_binAppleMac\#macosx-arm64 -c pt.vulkan_full_precision=1 -- --gtest_filter="*flip*"
Recommended: Free up disk space to speed up builds.
Only 17GB is available on disk. Buck is slow when free disk space is under
50GB.
Consider running this command (from your home directory) to reclaim purgeable
space:
sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs.util -P *
Downloaded 0/53 artifacts, 0.00 bytes, 100.0% cache miss (for updated rules)
Building: finished in 35.3 sec (100%) 536/536 jobs, 6/536 updated
Total time: 35.3 sec
BUILD SUCCEEDED
Running main() from xplat/third-party/gmock/googletest-1.12.1/googletest/src/gtest_main.cc
Note: Google Test filter = *flip*
[==========] Running 4 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 4 tests from VulkanAPITest
[ RUN ] VulkanAPITest.flip_1d
[ OK ] VulkanAPITest.flip_1d (117 ms)
[ RUN ] VulkanAPITest.flip_2d
[ OK ] VulkanAPITest.flip_2d (1 ms)
[ RUN ] VulkanAPITest.flip_3d
[ OK ] VulkanAPITest.flip_3d (2 ms)
[ RUN ] VulkanAPITest.flip_4d
[ OK ] VulkanAPITest.flip_4d (10 ms)
[----------] 4 tests from VulkanAPITest (132 ms total)
[----------] Global test environment tear-down
[==========] 4 tests from 1 test suite ran. (132 ms total)
[ PASSED ] 4 tests.
lfq@lfq-mbp fbsource %
```
clang-format on `Flip.cpp` and `flip.glsl`
Reviewed By: SS-JIA
Differential Revision: D47921025
Pull Request resolved: https://github.com/pytorch/pytorch/pull/106628
Approved by: https://github.com/SS-JIA