Llvm tagged news

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 release 9.0 with experimental support of C++ for OpenCL

​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.

Khronos’ OpenCL, SYCL, and SPIR-V Standards Find Growing Synergy with LLVM’s Compiler Community

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.

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.