• WuZhiwen's avatar
    Merge pull request #12703 from wzw-intel:vkcom · 6e3ea8b4
    WuZhiwen authored
    * dnn: Add a Vulkan based backend
    
    This commit adds a new backend "DNN_BACKEND_VKCOM" and a
    new target "DNN_TARGET_VULKAN". VKCOM means vulkan based
    computation library.
    
    This backend uses Vulkan API and SPIR-V shaders to do
    the inference computation for layers. The layer types
    that implemented in DNN_BACKEND_VKCOM include:
    Conv, Concat, ReLU, LRN, PriorBox, Softmax, MaxPooling,
    AvePooling, Permute
    
    This is just a beginning work for Vulkan in OpenCV DNN,
    more layer types will be supported and performance
    tuning is on the way.
    Signed-off-by: 's avatarWu Zhiwen <zhiwen.wu@intel.com>
    
    * dnn/vulkan: Add FindVulkan.cmake to detect Vulkan SDK
    
    In order to build dnn with Vulkan support, need installing
    Vulkan SDK and setting environment variable "VULKAN_SDK" and
    add "-DWITH_VULKAN=ON" to cmake command.
    
    You can download Vulkan SDK from:
    https://vulkan.lunarg.com/sdk/home#linux
    
    For how to install, see
    https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html
    https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html
    https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html
    respectively for linux, windows and mac.
    
    To run the vulkan backend, also need installing mesa driver.
    On Ubuntu, use this command 'sudo apt-get install mesa-vulkan-drivers'
    
    To test, use command '$BUILD_DIR/bin/opencv_test_dnn --gtest_filter=*VkCom*'
    Signed-off-by: 's avatarWu Zhiwen <zhiwen.wu@intel.com>
    
    * dnn/Vulkan: dynamically load Vulkan runtime
    
    No compile-time dependency on Vulkan library.
    If Vulkan runtime is unavailable, fallback to CPU path.
    
    Use environment "OPENCL_VULKAN_RUNTIME" to specify path to your
    own vulkan runtime library.
    Signed-off-by: 's avatarWu Zhiwen <zhiwen.wu@intel.com>
    
    * dnn/Vulkan: Add a python script to compile GLSL shaders to SPIR-V shaders
    
    The SPIR-V shaders are in format of text-based 32-bit hexadecimal
    numbers, and inserted into .cpp files as unsigned int32 array.
    
    * dnn/Vulkan: Put Vulkan headers into 3rdparty directory and some other fixes
    
    Vulkan header files are copied from
    https://github.com/KhronosGroup/Vulkan-Docs/tree/master/include/vulkan
    to 3rdparty/include
    
    Fix the Copyright declaration issue.
    
    Refine OpenCVDetectVulkan.cmake
    
    * dnn/Vulkan: Add vulkan backend tests into existing ones.
    
    Also fixed some test failures.
    
    - Don't use bool variable as uniform for shader
    - Fix dispathed group number beyond max issue
    - Bypass "group > 1" convolution. This should be support in future.
    
    * dnn/Vulkan: Fix multiple initialization in one thread.
    6e3ea8b4
Name
Last commit
Last update
..
carotene Loading commit data...
cpufeatures Loading commit data...
ffmpeg Loading commit data...
include Loading commit data...
ippicv Loading commit data...
ittnotify Loading commit data...
libjasper Loading commit data...
libjpeg Loading commit data...
libjpeg-turbo Loading commit data...
libpng Loading commit data...
libtiff Loading commit data...
libwebp Loading commit data...
openexr Loading commit data...
openvx Loading commit data...
protobuf Loading commit data...
quirc Loading commit data...
tbb Loading commit data...
zlib Loading commit data...
.gitattributes Loading commit data...
readme.txt Loading commit data...