Khronos China Update Oct18
Total Page:16
File Type:pdf, Size:1020Kb
Connecting Software to Silicon China Outreach, October 2018 Neil Trevett | Khronos President NVIDIA | VP Developer Ecosystems Copyright © Khronos® Group Inc. 2018 - Page 1 Khronos Mission Asian Members Software Silicon Khronos is an International Industry Consortium creating royalty-free, open standards to enable software to access hardware acceleration for 3D Graphics, Virtual and Augmented Reality, Parallel Computing, Neural Networks and Vision Processing Copyright © Khronos® Group Inc. 2018 - Page 2 What is An Open Standard? An INTEROPERABILITY STANDARD enables two entities to COMMUNICATE. E.g. Software <-> Hardware Bad Standards Good Standards - Overprescribes implementation details - Prescribes ONLY interoperability - Forces lowest common denominator - Enables implementation diversity - Stifles innovation – Encourages innovation -> Commoditization -> Differentiation A Truly OPEN standard Is not controlled by a single company – but by the whole industry Is freely available to use by any company without royalty payments Has a well defined IP Framework to protect standard AND member’s IP Standards Grow Markets… … Reduce Costs … … Accelerate Time to Market By reducing consumer confusion and By sharing development between With well-proven functionality, increasing capabilities and usability many companies and driving volume testing and interoperability Copyright © Khronos® Group Inc. 2018 - Page 3 Khronos Standards Download 3D object and scene data Vision and sensor processing - including neural network inferencing for machine learning High-performance, low-latency 3D Graphics Portable interaction with VR/AR sensor, haptic and display devices Copyright © Khronos® Group Inc. 2018 - Page 4 Vulkan and New Generation GPU APIs Modern architecture | Low overhead| Multi-thread friendly EXPLICIT GPU access for EFFICIENT, LOW-LATENCY, PREDICTABLE performance Vulkan Porting Tools Non-proprietary, royalty-free open standard ‘By the industry for the industry’ Portable across multiple platforms - desktop and mobile Copyright © Khronos® Group Inc. 2018 - Page 5 What is an Explicit API? Explicit API • Provides information at the right time Timeline(s) state definitions - To prepare for efficient execution API Object • Better scheduling control over CPU and GPU generation - Split multi-threaded work creation from work submission api object - Explicit synchronization primitives usage • Predictable performance costs - Creating pipelines, allocating memory … Legacy API state context • No driver magic on-the-clock manipulation - Removes guesswork and late decision-making • Simpler drivers Implicit Internal - The application has the most complete Validation & knowledge for holistic optimization Objects Copyright © Khronos® Group Inc. 2018 - Page 6 Vulkan Explicit GPU Control Vulkan = high performance and low latency 3D and GPU Compute Ideal for VR/AR applications Resource management offloaded to app: low-overhead, low-latency Complex drivers Application driver cause overhead Single thread per context and inconsistent Application Consistent behavior: behavior across Memory allocation Multiple Front-end no ‘fighting with driver vendors Thread management heuristics’ Synchronization Compilers High-level Driver GLSL, HLSL etc. Always active Multi-threaded generation Validation and debug layers of command buffers error handling Abstraction loaded only when needed Layered GPU Control Full GLSL Context management SPIR-V SPIR-V intermediate preprocessor and Memory allocation pre-compiled shaders language: shading language compiler in Full GLSL compiler flexibility Error detection driver Thin Driver Loadable debug and Explicit GPU Control validation layers Multi-threaded command OpenGL vs. creation. Multiple graphics, OpenGL ES command and DMA queues GPU GPU Unified API across all platforms with feature set flexibility Vulkan 1.0 provides access to OpenGL ES 3.1 / OpenGL 4.X-class GPU functionality but with increased performance and flexibility Copyright © Khronos® Group Inc. 2018 - Page 7 Vulkan Multi-threading Efficiency 1. Multiple threads can construct Command Buffers in parallel Application is responsible for thread management and synch CPU Thread Command Buffer CPU Thread Command CPU Buffer Thread CPU Command Thread Command Buffer Queue GPU CPU Command Thread 2. Command Buffers placed in Command Buffer Queue by separate submission thread CPU Thread Command Buffer Copyright © Khronos® Group Inc. 2018 - Page 8 Vulkan Tools Architecture • Layered design for cross-vendor tools innovation and flexibility - IHVs plug into a common, extensible architecture for code validation, debugging and profiling during development without impacting production performance • Khronos Open Source Loader enables use of tools layers during debug - Finds and loads drivers, dispatches API calls to correct driver and layers Production Path Interactive (Performance) Debug Layers can be Debugger Vulkan-based Title installed during Development Validation and Sim Layers Vulkan’s Common Loader Debug Layers IHV’s Installable Client Debug information via Driver standardized API calls Copyright © Khronos® Group Inc. 2018 - Page 9 Vulkan – Now Available Everywhere VR-Related Features NOW Multi-GPU support Multiview Rendering Context priority Front buffer rendering IN DISCUSSION Variable Rate Rendering Tiled rendering (beam racing) Copyright © Khronos® Group Inc. 2018 - Page 10 Vulkan 1.1 Launch and Ongoing Momentum Strengthening the Ecosystem Improved developer tools (SDK, validation/debug layers) More rigorous conformance testing Building Vulkan’s Future Shader toolchain improvements (size, speed, robustness) Deliver complete ecosystem – not just specs Shading language flexibility – HLSL and OpenCL C support Listen and prioritize developer needs Vulkan Public Ecosystem Forum Drive GPU technology Released Vulkan 1.1 Extensions KHR_draw_indirect_count Vulkan 1.0 Extensions Source draw count parameter from a buffer in GPU-writable Maintenance updates plus additional functionality memory for greater flexibility for GPU-generated work Explicit Building Blocks for VR: KHR_8bit_storage e.g. multiview 8-bit types in uniform and storage buffers for improved compute Explicit Building Blocks for support in apps such as inferencing and vision Homogeneous Multi-GPU EXT_descriptor_indexing Enhanced Windows System Integration Dynamically non-uniform (aka bindless) resource access Increased Shader Flexibility: Required by some modern game engine architectures February 2016 16 bit storage, Variable Pointers Enhanced Cross-Process and Discussions in Flight Vulkan 1.0 March 2018 Cross-API Sharing Vulkan 1.1 Reduced precision arithmetic types in shaders Detailed driver property queries Integration of 1.0 Extensions. Variable-resolution rendering New Technology into Core e.g. Cross-vendor performance counter queries Subgroup Operations Memory residency management Depth/stencil resolve Ray tracing Widening Platform Support Video Pervasive GPU vendor native driver availability New synchronization primitives Open source drivers – ANV (Intel), AMDVLK/RADV (AMD) Port Vulkan apps to macOS/iOS and DX12 Copyright © Khronos® Group Inc. 2018 - Page 11 New Functionality in Vulkan 1.1 • Protected Content - Restrict access or copying from resources used for rendering and display - Secure playback and display of protected multimedia content • Subgroup Operations - Efficient mechanisms that enable parallel shader invocations to communicate - Wide variety of parallel computation models supported Example Subgroup Operations A subgroup is a set of invocations (tasks) running on a GPU Compute Unit (Note many GPUs typically support subgroup sizes of 32/64 invocations) 5 2 1 6 7 9 3 4 3 1 3 2 2 3 Active Invocations + X Inactive Invocations 5 5 5 5 3 9 9 7 9 9 9 9 6 6 Broadcast Shuffle Add Clustered Multiply Copyright © Khronos® Group Inc. 2018 - Page 12 Content is shipping on desktop… Vulkan-only AAA Titles on PC Dota 2 on PC and macOS AAA titles on Linux Copyright © Khronos® Group Inc. 2018 - Page 13 …and Mobile Plus…. Lineage 2 Revolution Heroes of Incredible Tales Dream League Soccer… Copyright © Khronos® Group Inc. 2018 - Page 14 Fortnite on Android! Fortnite on Android uses Vulkan on select phones for optimal performance, including the best-performing Samsung – the Galaxy Note9 Copyright © Khronos® Group Inc. 2018 - Page 15 Vulkan Developer Activity – SDK and GitHub LunarG Vulkan SDK Download rate increases every year since launch http://vulkan.lunarg.com SIGGRAPH 2016 Vulkan Related GitHub Repos SIGGRAPH 2018 2500 2000 1500 SIGGRAPH 2017 1000 500 0 SIGGRAPH GDC SIGGRAPH GDC SIGGRAPH 2016 2017 2017 2018 2018 Copyright © Khronos® Group Inc. 2018 - Page 16 NVIDIA Vulkan Raytracing Vendor Extension • Vulkan Raytracing Extension to access RTX Raytracing - Running on Turing-based boards • Nsight Graphics with increased Vulkan support - Including Raytracing extension Copyright © Khronos® Group Inc. 2018 - Page 17 OpenGL and OpenGL ES January 2018 June 2018 OpenGL 4.6 conformance test suite OpenGL ES CTS 3.2.5.0 released in open source released in open source Intel and NVIDIA released conformant Raises the quality bar for OpenGL OpenGL 4.6 drivers 3.2 implementations OpenGL ES still the most prevalent April 2018 3D API (billions of units!) More conformant products added OpenGL 4.6.0.1 CTS bugfix update OpenGL ES 3.2 adoption increasing released in April Working Group Meetings Merged under one Chairperson for Improved Efficiency 13.9% 30.6% GLSL and ESSL specs merged and migrated from LibreOffice to AsciiDoctor to improve