Webcl BOF Aug14

Webcl BOF Aug14

Neil Trevett Vice President Mobile Ecosystem at NVIDIA | President of Khronos SIGGRAPH, Vancouver 2014 © Copyright Khronos Group 2014 - Page 1 Khronos Standards 3D Asset Handling - 3D authoring asset interchange - 3D asset transmission format with compression Visual Computing - 3D Graphics - Heterogeneous Parallel Computing Over 100 companies defining royalty-free APIs to connect software to silicon Acceleration in HTML5 - 3D in browser – no Plug-in - Heterogeneous computing for JavaScript Sensor Processing - Vision Acceleration - Camera Control - Sensor Fusion © Copyright Khronos Group 2014 - Page 2 Motivation for WebCL • Parallel acceleration for compute-intensive web applications - Portable and efficient access to heterogeneous multicore devices in JavaScript • Typical Use Cases - 3D asset codecs, video codecs and processing, imaging and vision processing - Physics for WebGL games, Online data visualization, Augmented Reality • WebCL 1.0 specification officially released at GDC March 2014 - https://www.khronos.org/webcl http://www.youtube.com/user/SamsungSISA#p/a/u/1/9Ttux1A-Nuc © Copyright Khronos Group 2014 - Page 3 OpenCL – Portable Heterogeneous Computing • Portable Heterogeneous programming of diverse compute resources - Targeting supercomputers -> embedded systems -> mobile devices • One code tree can be executed on CPUs, GPUs, DSPs and hardware - Dynamically interrogate system load and balance work across available processors • OpenCL = Two APIs and C-based Kernel language - Platform Layer API to query, select and initialize compute devices - Kernel language - Subset of ISO C99 + language extensions - C Runtime API to build and execute kernels across multiple devices OpenCL KernelOpenCL CodeKernel OpenCL CodeKernel OpenCL CodeKernel Code GPU DSP CPU CPU HW © Copyright Khronos Group 2014 - Page 4 WebCL - Heterogeneous Computing for Web • WebCL defines JavaScript binding to the OpenCL APIs - Enables initiation of Kernels from within the browser • Kernels are still written in OpenCL C - Analogous to WebGL shaders use GLSL - Enables re-use of kernels across OpenCL and WebCL OpenCL KernelOpenCL CodeKernel OpenCL CodeKernel OpenCL C JavaScript Platform API CodeKernel JavaScript Runtime API To query, select and initialize Code To build and execute kernels compute devices across multiple devices GPU DSP CPU CPU HW © Copyright Khronos Group 2014 - Page 5 WebGL/WebCL Ecosystem Low-level APIs provide Content Content downloaded from the Web a powerful foundation JavaScript, HTML, CSS, ... for a rich JavaScript Middleware can make WebGL and WebCL middleware ecosystem accessible to non-expert programmers E.g. three.js library: http://threejs.org/ used by JavaScript Middleware majority of WebGL content Browser provides WebGL and WebCL Alongside other HTML5 technologies No plug-in required HTML5 JavaScript / CSS OS Provided Drivers WebGL uses OpenGL ES 2.0 or Angle for OpenGL ES 2.0 over DX9 WebCL uses OpenCL 1.X © Copyright Khronos Group 2014 - Page 6 WebCL Programming 1. Query host for OpenCL devices 2. Create a context to associate OpenCL devices Context 3. Create programs for execution on one or Memory Command Programs Kernels more associated devices Objects Queue 4. Select kernels to execute from the programs Kernel0 Images Progra Kernel1 5. Create memory objects accessible from ms Kernel2 Buffers In order & the host and/or the device out of order Create data & Send for 6. Copy memory data to the device as needed Compile arguments execution 7. Provide kernels to command queue for execution 8. Copy results from the device to the host © Copyright Khronos Group 2014 - Page 7 WebCL Architecture • HTMLWindow or WorkerUtils implements WebCLEnvironment - If WebCL object not present, then WebCL is not supported • Three Layers WebCLExtension - Platform Platform layer - Compiler WebCLPlatform WebCLDevice - Runtime HTMLWindow + webcl or WebCL WorkerUtils WebCLContext * * * * * WebCLMemoryObject WebCLProgram WebCLCommandQueue WebCLEvent WebCLSampler {abstract} WebCLKernel WebCLBuffer WebCLImage Compiler layer Runtime layer © Copyright Khronos Group 2014 - Page 8 WebCL - Designed-in Architectural Security • Leverages OpenCL 1.2 robustness/security extensions - Context Termination: to prevent DoS from long running kernels - Memory Initialization: no leakage from out of bounds memory access • API and Language Restrictions - To ensure no unsafe behavior is possible • WebCL Kernel Validator - Static and dynamic kernel checking © Copyright Khronos Group 2014 - Page 9 WebCL Language Restrictions • WebCL adds OpenCL C language restrictions for security • Structures are not supported as kernel arguments • Kernels name must be less than 256 characters • Mapping of CL memory objects into host memory space is not supported • Program binaries are not supported (for enhanced security) • Some OpenCL API functions & builtin functions may require translation © Copyright Khronos Group 2014 - Page 10 WebCL Kernel Validator • Open source on GitHub - https://github.com/KhronosGroup/webcl-validator • Cross platform compatible C API + library + command line client - Runs on Windows (Visual Studio), OSX (XCode) and Linux (Makefiles) • Parses and validates kernel code against specification - Checks that no WebCL restrictions are broken – with extensive error messages • Verifies that all memory accesses are inside valid memory areas - If not validated at compile-time, low overhead run-time checks injected in code • Works on all OpenCL devices - Input WebCL C code -> Output is valid OpenCL C code - Source to source transformation based on Clang 3.4 © Copyright Khronos Group 2014 - Page 11 Validation Overhead Example • NBody Force Simulation 190 Gflops No Protection 190 GFlops 22% Protected 148 GFlops Overhead © Copyright Khronos Group 2014 - Page 12 WebCL Test Suite • Source of tests openly available on GitHub - https://github.com/KhronosGroup/WebCL-conformance/ • Full API Test Coverage - WebCL requires a conformant underlying OpenCL on the host system - Input and output validation, and error handling checks for all methods in the API - WebCL validator conformance tests • Tests for security and robustness through exercising… - Data leakage, Denial of service, Out of bounds memory accesses • Test Suite Framework: - Allows selective execution of tests: skip tests per category or individually - Supports selection of available OpenCL platforms and devices - Allows different execution modes: relaxed and strict • Implementers must still become official adopters - If they wish to use the WebCL trademark © Copyright Khronos Group 2014 - Page 13 WebCL Implementations 1. Nokia - Firefox build with integrated WebCL - Firefox extension, open sourced May 2011 - Mozilla Public License 2.0 - https://github.com/toaarnio/webcl-firefox 2. Samsung - uses WebKit, open sourced June 2011 (BSD) - https://github.com/SRA-SiliconValley/webkit-webcl 3. Motorola Mobility: Uses Node.js, open sourced April ‘12 (BSD) - https://github.com/Motorola-Mobility/node-webcl 4. AMD – uses Chromium (open source) - https://github.com/amd/Chromium-WebCL • WebCL Kernel Validator (open source) https://github.com/KhronosGroup/webcl-validator • OpenCL to WebCL Translator https://github.com/wolfviking0/webcl-translator Based on Apple QJulia Based on Iñigo Quilez, Shader Toy http://fract.ured.me/ Based on Iñigo Quilez, Shader Toy © Copyright Khronos Group 2014 - Page 14 Chromium with WebCL • Sandboxed architecture Command Buffer See http://msdn.microsoft.com/en-us/library/bb625960.aspx © Copyright Khronos Group 2014 - Page 15 node-webcl • A cross-platform (Mac, Windows, Linux) implementation of WebCL 1.0 using Node.JS (uses V8 JS APP Google Chrome V8 JavaScript engine) - Many examples: ray casting, image processing… node-webcl node-webgl - Passing WebCL conformance tests with workarounds native for bugs in OpenCL drivers FreeImage GLFW • Extensions - Node’s Buffers for faster processing vs. TypedArrays OpenCL OpenGL (ES) - Multi-window and monitor support thanks to GLFW - Fully compatible with Node.JS async callbacks - OpenCL 1.1 & 1.2 features not (yet) in WebCL 1.0 - Experimental features for future WebCL specifications • WebGL interoperability and rendering with node-webgl, cross-platform Based on Iñigo Quilez, Shader Toy Raycasting - node-webcl v.1.0 to be released soon at WebGL https://github.com/Motorola-Mobility/node-webcl WebCL Based on Apple QJulia © Copyright Khronos Group 2014 - Page 16 Web Acceleration APIs • Khronos and W3C liaison for Web APIs - Leverage proven native APIs - Fast API development/deployment - Designed by hardware community - Familiar foundation reduces developer learning curve HTML Canvas WebVX? WebStream? WebKCAM? JavaScript Vision Sensor Fusion Camera Processing control Native Path Rendering JavaScript API shipping, Possible future Native APIs shipping acceleration being developed JavaScript APIs or or Khronos working group or work underway acceleration © Copyright Khronos Group 2014 - Page 17 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us