IWOCL – where you learn the latest on OpenCL
Five years ago The International Workshop on OpenCL (IWOCL – "eye-wok-ul") started as a small OpenCL-focused conference. In 2017 it has grown to three full days filled with tutorials, talks, posters and many technical discussions. You’ll hear attendees (and yourself) saying, "I did not know this was going on and I should have known it before." It is a great place to learn the latest on OpenCL.
IWOCL is May 16-18, 2017 in Toronto, Canada. This year’s conference program is on the IWOCL web page and includes four tutorials, 19 technical sessions, and a Khronos panel discussion. Below is a compact overview of the technical sessions, posters, and tutorials to give you the highlights in under three minutes.
Learning OpenCL in a day
The conference starts with a full day tutorial on OpenCL for beginners on Tuesday. If you're new to OpenCL this is where you need to start, as you'll learn all the important basics of OpenCL programming.
The material is fit for Python programmers to experienced CUDA hackers. Last years this day was well-attended also by experienced OpenCL developers, but this year advanced OpenCL developers can go to DHPCC++.
Distributed & Heterogeneous Programming for C/C++ Workshop
In parallel with the OpenCL tutorial, DHPCC++ takes place. This workshop focuses on C++ languages that can be run on OpenCL devices, such as SYCL, HPX, KoKKos, Raja, C++AMP, HCC, Boost.Compute, and CUDA.
The program is to be announced soon on their webpage.
Developer Tools and Tricks
An important part of the talks and posters discuss subjects to help OpenCL developers better understand OpenCL and the hardware.
- Subgroups and Intel Media Extensions (Wednesday morning tutorial): Learn how to unlock the full performance potential of Intel GPUs.
- Understanding what the driver does (poster): "Opening the black box" talks about real life examples which are confusing and not straight forward, and Intel's solutions.
- Auto-tuning (Thursday talk): Analyzing performance portability that exploits that black-box nature of automatic performance tuning technique.
- Native GPU Debugging (Thursday talk): All the ins and outs of GPU-debugging, with focus on Intel processor graphics: solving misaligned or out of range accesses to local/global memory, stack overflows, Illegal instructions, etc.
- Modeling Explicit SIMD Programming with Subgroup Functions (Thursday talk): Understanding the advantages of the “explicit SIMD” programming paradigm using OpenCL subgroups.
- Difficulties of OpenCL in HPC programming (Thursday talk): Discussion of practical issues in OpenCL programming in the domain of scientific HPC from an application developer’s and user’s point of view.
Libraries, Frameworks and Runtimes
OpenCL is designed to be extended in various ways, helping to make the life of OpenCL-developers more easy. Below are the talks and posters on recent improvements of the OpenCL ecosphere.
- SYCL C++ (Wednesday morning tutorial): How to program OpenCL devices using this new C++ based language.
- Easier Build and Testing Framework (poster): The Windsor framework is a modern test-framework for OpenCL drivers and compilers.
- Improving CPU-GPU memory transfers (poster): DlmCL is a memory abstraction layer to ease the needed work to have the best host-device transfers on many accelerators.
- Improving OpenCL + OpenVX (poster): suggestions to improve OpenVX for GPUs.
- Balancing workloads on CPU and GPU (Thursday talk): Symphony framework, to assist in task scheduling and memory management on typical CPU-GPU systems.
- Run CUDA-kernels on OpenCL-devices (Thursday talk): CUDA-on-CL, a compiler and runtime for running modern CUDA C++11 applications on OpenCL 1.2 devices.
OpenCL on FPGAs increasingly gets more interest. This is because OpenCL provides both a high level language and a runtime-environment, solving problems that i.e. C/C++ for FPGAs could not. Below are the talks and posters discussing FPGAs.
- A general introduction to OpenCL on FPGA (Wednesday morning tutorial): Learning how to program Altera FPGAs, and getting an "FPGA-mindset".
- Multi-FPGA partitioning (poster): Tools and Architecture for scaling up using FPGAs (Scalable OpenCL FPGA Computing Evolution)
- Speeding up PCIe transfers (poster): Using DMA an gzip for faster transfers between host and FPGA (Host Channels)
- FPGA as "devices" a good choice? (Thursday talk): A suggestion to improve OpenCL for FPGAs (Enabling FPGAs as a True Device in the OpenCL Standard)
- Applying different computation models (Thursday talk): Synchronous Dataflow, Bulk Synchronous Parallel and Discrete Event Domain (Applying Models of Computation to OpenCL Pipes for FPGA Computing)
- FPGAs in the cloud (Thursday talk): Cloud-deployment of Xilinx FPGAs (Accelerating Applications at Cloud Scale using FPGAs)
- Application that give over 1 TFLOPS on FPGAs (Thursday talk): Matrix multiply and CNN on Intel Arria 10 (Creating High Performance Applications with Intel’s FPGA OpenCL SDK)
Success stories are never 100% about successes. Learn from experienced OpenCL programmers how they got to their results and get tips and tricks for your own projects:
- Spotlight Synthetic Aperture Radar Simulator (Wednesday talk): FFT, Signal processing and GPUs.
- Risk Simulation of Complex Portfolios (Wednesday talk): Financial algorithms and GPUs.
- Molecular Docking (Wednesday talk): Bioinformatics, CPUs, GPUs and energy-benchmarks.
- Agent-based simulations (Wednesday talk): Agent-based model ported to OpenCL on CPUs.
- Bosonic system with two-particle interaction (poster): Quantum mechanics and GPUs.
- Video Encoding Algorithms (Thursday talk): Wavefront Parallel Processing and Intel GPUs.
Libraries for computer vision and AI were the first to be built on top of mathematics libraries. These talks discuss where others did the coding targeting OpenCL hardware.
- Vision and AI: autonomous driving and a smart camera (Wednesday talk): Inference on FPGAs and computer vision on GPUs.
- AI: TensorFlow (Thursday talk): Porting TensorFlow to SYCL, making it available on OpenCL hardware.
Vincent Hindriksen, Stream Computing
Next entry: Vulkan Runtime and Loader Security on Windows OS