Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/64988
Pull Request resolved: https://github.com/pytorch/pytorch/pull/64968
The current wrapper (provided by [Vulkan-Tools](https://github.com/KhronosGroup/Vulkan-Tools/tree/master/common)) can't handle dynamically loading Vulkan on Windows/Mac. Therefore, we can bring in [volk](https://github.com/zeux/volk) to load the vulkan libraries for other platforms.
1. Use `volk` with `link_style="static"` only if Windows. Use `vulkan_wrapper` for all others (temporary solution)
2. Make DotSlash work on Windows when resolving glslc path
Test Plan:
For Android:
```
cd ~/fbsource
buck build -c ndk.custom_libcxx=false -c pt.enable_qpl=0 //xplat/caffe2:pt_vulkan_api_test_binAndroid\#android-arm64 --show-output
adb push buck-out/gen/xplat/caffe2/pt_vulkan_api_test_binAndroid\#android-arm64 /data/local/tmp/vulkan_api_test
adb shell "/data/local/tmp/vulkan_api_test"
cd -
```
For Mac:
```
buck build //xplat/caffe2:pt_vulkan_api_test_binAppleMac
./buck-out/gen/xplat/caffe2/pt_vulkan_api_test_binAppleMac\#macosx-x86_64
```
On Local OSS repo with `pr/64988` branch:
The build and test are fine. Note that `VulkanAPITest.log_softmax()` has been broken for the past month. Ivan will take a look at when he is available.
Build: `BUILD_TEST=1 USE_VULKAN=1 USE_VULKAN_SHADERC_RUNTIME=1 USE_VULKAN_WRAPPER=0 MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install`
Test: `$PYTORCH_ROOT/build/bin/vulkan_api_test /data/local/tmp`
```
Running main() from ../third_party/googletest/googletest/src/gtest_main.cc
[==========] Running 69 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 69 tests from VulkanAPITest
[ RUN ] VulkanAPITest.adaptive_avg_pool2d
[ OK ] VulkanAPITest.adaptive_avg_pool2d (228 ms)
[ RUN ] VulkanAPITest.add
[ OK ] VulkanAPITest.add (51 ms)
[ RUN ] VulkanAPITest.add_broadcast0
[ OK ] VulkanAPITest.add_broadcast0 (13 ms)
[ RUN ] VulkanAPITest.add_broadcast1
[ OK ] VulkanAPITest.add_broadcast1 (9 ms)
[ RUN ] VulkanAPITest.add_broadcast2
[ OK ] VulkanAPITest.add_broadcast2 (9 ms)
[ RUN ] VulkanAPITest.add_
[ OK ] VulkanAPITest.add_ (60 ms)
[ RUN ] VulkanAPITest.add_broadcast0_
[ OK ] VulkanAPITest.add_broadcast0_ (10 ms)
[ RUN ] VulkanAPITest.add_broadcast1_
[ OK ] VulkanAPITest.add_broadcast1_ (1 ms)
[ RUN ] VulkanAPITest.add_scalar
[ OK ] VulkanAPITest.add_scalar (24 ms)
[ RUN ] VulkanAPITest.add_scalar_
[ OK ] VulkanAPITest.add_scalar_ (8 ms)
[ RUN ] VulkanAPITest.addmm
[ OK ] VulkanAPITest.addmm (22 ms)
[ RUN ] VulkanAPITest.addmm_expand
[ OK ] VulkanAPITest.addmm_expand (12 ms)
[ RUN ] VulkanAPITest.avg_pool2d
[ OK ] VulkanAPITest.avg_pool2d (9 ms)
[ RUN ] VulkanAPITest.clamp
[ OK ] VulkanAPITest.clamp (92 ms)
[ RUN ] VulkanAPITest.clamp_
[ OK ] VulkanAPITest.clamp_ (60 ms)
[ RUN ] VulkanAPITest.conv2d
[ OK ] VulkanAPITest.conv2d (15 ms)
[ RUN ] VulkanAPITest.conv2d_dw
[ OK ] VulkanAPITest.conv2d_dw (15 ms)
[ RUN ] VulkanAPITest.conv2d_pw
[ OK ] VulkanAPITest.conv2d_pw (34 ms)
[ RUN ] VulkanAPITest.conv2d_winograd
[ OK ] VulkanAPITest.conv2d_winograd (10 ms)
[ RUN ] VulkanAPITest.copy
[ OK ] VulkanAPITest.copy (1 ms)
[ RUN ] VulkanAPITest.div
[ OK ] VulkanAPITest.div (32 ms)
[ RUN ] VulkanAPITest.div_broadcast0
[ OK ] VulkanAPITest.div_broadcast0 (11 ms)
[ RUN ] VulkanAPITest.div_broadcast1
[ OK ] VulkanAPITest.div_broadcast1 (9 ms)
[ RUN ] VulkanAPITest.div_broadcast2
[ OK ] VulkanAPITest.div_broadcast2 (7 ms)
[ RUN ] VulkanAPITest.div_
[ OK ] VulkanAPITest.div_ (46 ms)
[ RUN ] VulkanAPITest.div_broadcast0_
[ OK ] VulkanAPITest.div_broadcast0_ (9 ms)
[ RUN ] VulkanAPITest.div_broadcast1_
[ OK ] VulkanAPITest.div_broadcast1_ (2 ms)
[ RUN ] VulkanAPITest.div_scalar
[ OK ] VulkanAPITest.div_scalar (95 ms)
[ RUN ] VulkanAPITest.div_scalar_
[ OK ] VulkanAPITest.div_scalar_ (18 ms)
[ RUN ] VulkanAPITest.empty
[ OK ] VulkanAPITest.empty (0 ms)
[ RUN ] VulkanAPITest.hardsigmoid
[ OK ] VulkanAPITest.hardsigmoid (76 ms)
[ RUN ] VulkanAPITest.hardsigmoid_
[ OK ] VulkanAPITest.hardsigmoid_ (80 ms)
[ RUN ] VulkanAPITest.hardshrink
[ OK ] VulkanAPITest.hardshrink (630 ms)
[ RUN ] VulkanAPITest.hardshrink_
[ OK ] VulkanAPITest.hardshrink_ (573 ms)
[ RUN ] VulkanAPITest.leaky_relu
[ OK ] VulkanAPITest.leaky_relu (271 ms)
[ RUN ] VulkanAPITest.leaky_relu_
[ OK ] VulkanAPITest.leaky_relu_ (254 ms)
[ RUN ] VulkanAPITest.hardswish
[ OK ] VulkanAPITest.hardswish (83 ms)
[ RUN ] VulkanAPITest.hardswish_
[ OK ] VulkanAPITest.hardswish_ (72 ms)
[ RUN ] VulkanAPITest.max_pool2d
[ OK ] VulkanAPITest.max_pool2d (16 ms)
[ RUN ] VulkanAPITest.mean
[ OK ] VulkanAPITest.mean (17 ms)
[ RUN ] VulkanAPITest.mean2d
[ OK ] VulkanAPITest.mean2d (20 ms)
[ RUN ] VulkanAPITest.mm
[ OK ] VulkanAPITest.mm (12 ms)
[ RUN ] VulkanAPITest.mul
[ OK ] VulkanAPITest.mul (28 ms)
[ RUN ] VulkanAPITest.mul_broadcast0
[ OK ] VulkanAPITest.mul_broadcast0 (9 ms)
[ RUN ] VulkanAPITest.mul_broadcast1
[ OK ] VulkanAPITest.mul_broadcast1 (9 ms)
[ RUN ] VulkanAPITest.mul_broadcast2
[ OK ] VulkanAPITest.mul_broadcast2 (9 ms)
[ RUN ] VulkanAPITest.mul_
[ OK ] VulkanAPITest.mul_ (43 ms)
[ RUN ] VulkanAPITest.mul_broadcast0_
[ OK ] VulkanAPITest.mul_broadcast0_ (8 ms)
[ RUN ] VulkanAPITest.mul_broadcast1_
[ OK ] VulkanAPITest.mul_broadcast1_ (1 ms)
[ RUN ] VulkanAPITest.mul_scalar
[ OK ] VulkanAPITest.mul_scalar (64 ms)
[ RUN ] VulkanAPITest.mul_scalar_
[ OK ] VulkanAPITest.mul_scalar_ (17 ms)
[ RUN ] VulkanAPITest.reflection_pad2d
[ OK ] VulkanAPITest.reflection_pad2d (7 ms)
[ RUN ] VulkanAPITest.reshape
[ OK ] VulkanAPITest.reshape (73 ms)
[ RUN ] VulkanAPITest.reshape_
[ OK ] VulkanAPITest.reshape_ (41 ms)
[ RUN ] VulkanAPITest.sigmoid
[ OK ] VulkanAPITest.sigmoid (81 ms)
[ RUN ] VulkanAPITest.sigmoid_
[ OK ] VulkanAPITest.sigmoid_ (68 ms)
[ RUN ] VulkanAPITest.softmax
[ OK ] VulkanAPITest.softmax (28 ms)
[ RUN ] VulkanAPITest.log_softmax
Max Diff allowed: 5.87862e-05
../aten/src/ATen/test/vulkan_api_test.cpp:1470: Failure
Value of: check
Actual: false
Expected: true
[ FAILED ] VulkanAPITest.log_softmax (19 ms)
[ RUN ] VulkanAPITest.tanh
[ OK ] VulkanAPITest.tanh (63 ms)
[ RUN ] VulkanAPITest.tanh_
[ OK ] VulkanAPITest.tanh_ (68 ms)
[ RUN ] VulkanAPITest.sub
[ OK ] VulkanAPITest.sub (28 ms)
[ RUN ] VulkanAPITest.sub_broadcast0
[ OK ] VulkanAPITest.sub_broadcast0 (9 ms)
[ RUN ] VulkanAPITest.sub_broadcast1
[ OK ] VulkanAPITest.sub_broadcast1 (9 ms)
[ RUN ] VulkanAPITest.sub_broadcast2
[ OK ] VulkanAPITest.sub_broadcast2 (8 ms)
[ RUN ] VulkanAPITest.sub_
[ OK ] VulkanAPITest.sub_ (43 ms)
[ RUN ] VulkanAPITest.sub_broadcast0_
[ OK ] VulkanAPITest.sub_broadcast0_ (10 ms)
[ RUN ] VulkanAPITest.sub_broadcast1_
[ OK ] VulkanAPITest.sub_broadcast1_ (2 ms)
[ RUN ] VulkanAPITest.upsample_nearest2d
[ OK ] VulkanAPITest.upsample_nearest2d (5 ms)
[ RUN ] VulkanAPITest.mobilenetv2
[ OK ] VulkanAPITest.mobilenetv2 (82 ms)
[----------] 69 tests from VulkanAPITest (3885 ms total)
[----------] Global test environment tear-down
[==========] 69 tests from 1 test suite ran. (3885 ms total)
[ PASSED ] 68 tests.
[ FAILED ] 1 test, listed below:
[ FAILED ] VulkanAPITest.log_softmax
1 FAILED TEST
```
Differential Revision:
D30925995
fbshipit-source-id:
1b1b7f7f22090064424a5379d2f0559d0da7846a