• 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
..
FindCUDA Loading commit data...
android Loading commit data...
checks Loading commit data...
templates Loading commit data...
FindCUDA.cmake Loading commit data...
FindFlake8.cmake Loading commit data...
FindGstreamerWindows.cmake Loading commit data...
FindOpenVX.cmake Loading commit data...
FindPylint.cmake Loading commit data...
FindVulkan.cmake Loading commit data...
OpenCVCRTLinkage.cmake Loading commit data...
OpenCVCompilerDefenses.cmake Loading commit data...
OpenCVCompilerOptimizations.cmake Loading commit data...
OpenCVCompilerOptions.cmake Loading commit data...
OpenCVDetectApacheAnt.cmake Loading commit data...
OpenCVDetectCUDA.cmake Loading commit data...
OpenCVDetectCXXCompiler.cmake Loading commit data...
OpenCVDetectDirectX.cmake Loading commit data...
OpenCVDetectHalide.cmake Loading commit data...
OpenCVDetectInferenceEngine.cmake Loading commit data...
OpenCVDetectMediaSDK.cmake Loading commit data...
OpenCVDetectOpenCL.cmake Loading commit data...
OpenCVDetectPython.cmake Loading commit data...
OpenCVDetectTBB.cmake Loading commit data...
OpenCVDetectTrace.cmake Loading commit data...
OpenCVDetectVTK.cmake Loading commit data...
OpenCVDetectVulkan.cmake Loading commit data...
OpenCVDownload.cmake Loading commit data...
OpenCVExtraTargets.cmake Loading commit data...
OpenCVFindAtlas.cmake Loading commit data...
OpenCVFindIPP.cmake Loading commit data...
OpenCVFindIPPIW.cmake Loading commit data...
OpenCVFindIntelPerCSDK.cmake Loading commit data...
OpenCVFindLAPACK.cmake Loading commit data...
OpenCVFindLATEX.cmake Loading commit data...
OpenCVFindLibRealsense.cmake Loading commit data...
OpenCVFindLibsGUI.cmake Loading commit data...
OpenCVFindLibsGrfmt.cmake Loading commit data...
OpenCVFindLibsPerf.cmake Loading commit data...
OpenCVFindLibsVideo.cmake Loading commit data...
OpenCVFindMKL.cmake Loading commit data...
OpenCVFindOpenBLAS.cmake Loading commit data...
OpenCVFindOpenEXR.cmake Loading commit data...
OpenCVFindOpenNI.cmake Loading commit data...
OpenCVFindOpenNI2.cmake Loading commit data...
OpenCVFindProtobuf.cmake Loading commit data...
OpenCVFindVA.cmake Loading commit data...
OpenCVFindVA_INTEL.cmake Loading commit data...
OpenCVFindWebP.cmake Loading commit data...
OpenCVFindXimea.cmake Loading commit data...
OpenCVGenABI.cmake Loading commit data...
OpenCVGenAndroidMK.cmake Loading commit data...
OpenCVGenConfig.cmake Loading commit data...
OpenCVGenHeaders.cmake Loading commit data...
OpenCVGenInfoPlist.cmake Loading commit data...
OpenCVGenPkgconfig.cmake Loading commit data...
OpenCVMinDepVersions.cmake Loading commit data...
OpenCVModule.cmake Loading commit data...
OpenCVPCHSupport.cmake Loading commit data...
OpenCVPackaging.cmake Loading commit data...
OpenCVPylint.cmake Loading commit data...
OpenCVUtils.cmake Loading commit data...
OpenCVVersion.cmake Loading commit data...
cl2cpp.cmake Loading commit data...
copy_files.cmake Loading commit data...