OpenCL Tooling Task Sub Group (TSG) is actively contributing to the LLVM compiler infrastructure project and is determined to bring first-class support for OpenCL and SPIR-V to LLVM. While the latest release of Clang brought the long-awaited support for the OpenCL 3.0 standard, C++ for OpenCL 2021 kernel language, and the SPIR-V generation interface utilizing an external tool llvm-spirv from the SPIRV-LLVM-Translator repository, the work on the native GlobalISel-based SPIR-V backend continues at full speed. SPIR-V updates and many other exciting changes in the SPIR-V and OpenCL world will be discussed in depth at the upcoming 2022 LLVM Developers’ Meeting.
Khronos has made substantial investments in strengthening the SPIR-V backend for LLVM and the OpenCL Working Group is pleased to release early results from testing that provide insights into compilation coverage using the OpenCL conformance test suite and LLVM’s tests. Work in the past months has been dedicated to the overall design of LLVM’s new backend and its integration with the Clang frontend, with particular focus on parsing OpenCL kernel language sources. Khronos will soon finalize this design and commence integration into the upstream LLVM repository. To speed progress, a special panel is going to take place at the LLVM Developers Meeting to discuss the overall design and formulate a concrete list of actions.
Beginning with Mesa 20.2 is OpenGL 4.5 support for LLVMpipe, the LLVM-based software rasterizer built as a Gallium3D driver. This succeeded LLVMpipe for years being limited to OpenGL 3.3. While the OpenGL 4.5 support has been enabled for weeks, The Khronos Group has now officially confirmed its implementation.
LLVM Clang 9.0 has been released and is now available for download. This is the first release to contain experimental support of C++ for OpenCL language mode in Clang. More details can be found in the Clang documentation. This new support will be discussed at the LLVM Developers meeting (October 2019) at the From C++ for OpenCL to C++ for accelerator devices talk by Khronos Member Anastasia Stulova.
LLVM 2019 wrapped up a couple of weeks ago, and some of the presentations are now rolling out. For a list of Khronos related session, visit our event page. For a complete list of presentations, please visit the LLVM website.
The Khronos OpenCL working group recently created a new Tooling Subgroup with the aim of improving the tools ecosystem for this widely-used open standard for heterogeneous computation—in particular, boosting the development of tooling components that can be shared by multiple vendors. Subgroup members have been meeting regularly to coordinate the overall direction for OpenCL tools, with an emphasis on strengthening the development of tools in open source, particularly by encouraging collaboration between the OpenCL and LLVM communities.
Intel compiler engineer Alexey Bader sent out a public “request for comments” on the idea of adding SYCL to the LLVM Clang compiler stack. He wrote, “We (Intel) would like to request to add SYCL programming model support to LLVM/Clang project to facilitate collaboration on C++ single-source heterogeneous programming for accelerators like GPU, FPGA, DSP, etc. from different hardware and software vendors.” Learn more about this initiative or read the original letter.
A libre-licensed software implementation of Vulkan has started up again. Originally started in c++ in 2017, for a reimplementation Rust has been chosen for its concurrency and memory-safety features, and Rust’s LLVM support makes it highly portable. With OpenGL having both llvmpipe and MesaGL for fallback and testing purposes, it seems strange that there does not exist a corresponding Reference Implementation for Vulkan: the only implementations available are in hardware, making it extremely challenging for anyone considering entering the market. Kazan helps fill that gap. Sponsorship of this entirely libre-licensed project welcomed.
The Khronos Group has made public the SPIRV LLVM Translator Github repository which contains source code for the LLVM/SPIR-V Bi-Directional Translator, a library for translating between LLVM and SPIR-V. The LLVM/SPIR-V Bi-Directional Translator is open source software.
The Khronos Group is proud to announce that the PeakHills Group has joined as an associate Member. The Peakhills group has a focus on custom compiler development services, LLVM optimization services, and software development.
Video’s from the LLVM Developers’ meeting in San Jose earlier in November are now line.
Portable OpenCL (pocl) is a MIT-licensed open source implementation of the OpenCL standard which can be easily adapted for new targets and devices, both for homogeneous CPU and heterogenous GPUs/accelerators. pocl uses Clang as an OpenCL C frontend and LLVM for the kernel compiler implementation, and as a portability layer. Thus, if your desired target has an LLVM backend, it should be able to get OpenCL support easily by using pocl.
In a quiet post on the LLVMdev mailing list, it was announced that AMD is going Open Source with the AMD IL Code Generator which is compatible with LLVM 2.9. Also, video and slides from the recent 2011 LLVM Developers’ Meeting are starting to appear online. Including SKIR: Just-in-Time Compilation for Parallelism with LLVM, Univeristy of Colorado; Intel OpenCL SDK Vectorizer, Intel; Polly - First successful optimizations - How to proceed?, ENS/INRIA and finally Symbolic Testing of OpenCL Code from Imperial College London.
Carlos Sánchez de La Lama announced Portable OpenCL on the LLVM development list. The Portable OpenCL project is self-described as “an open source implementation of the OpenCL standard which can be easily adapted for new targets. One of the goals of the project is improving performance portability of OpenCL programs, avoiding the need for target-dependent manual optimizations. A “native” target is included, which allows running OpenCL kernels on the host (CPU).” The source code is available online.