<div dir="ltr">Hi folks,<br><br>The 19th issue of LLVM GPU News, a bi-weekly newsletter on all the GPU things under the LLVM umbrella, is out: <<a href="https://llvm-gpu-news.github.io/2021/09/10/issue-19.html">https://llvm-gpu-news.github.io/2021/09/10/issue-19.html</a>>.<br><br>I also pasted the content below, in case you prefer to read in your email client.<br><br>-Jakub<br><br>======================================================================<br><br># LLVM GPU News #19, Sep 10 2021<br>Authors: Jakub Kuderski, Lei Zhang, Johannes Doerfert, Giorgis Georgakoudis, Joseph Huber<br clear="all"><div><br></div><div>Welcome to LLVM GPU News, a bi-weekly newsletter on all the GPU things under the LLVM umbrella.<br>This issue covers the period from August 20 to September 9 2021.<br><br>We welcome your feedback and suggestions. Let us know if we missed anything interesting, or want us to bring attention to your (sub)project, revisions under review, or proposals. Please see the bottom of the page for details on how to submit suggestions and contribute.<br><br><br>## Industry News and Conferences<br>*  Two new paper on using MLIR for GPU compilation:<br>   -  ["Domain-Specific Multi-Level IR Rewriting for GPU: The Open Earth Compiler for GPU-accelerated Climate Simulation"](<a href="https://dl.acm.org/doi/10.1145/3469030">https://dl.acm.org/doi/10.1145/3469030</a>)<br>   -  ["High Performance GPU Code Generation for Matrix-Matrix Multiplication using MLIR: Some Early Results"](<a href="https://arxiv.org/abs/2108.13191">https://arxiv.org/abs/2108.13191</a>)<br><br><br>##  LLVM and Clang<br><br>### Discussions<br><br>*  Alexander Yermolovich hit an issue with [relocation overflows from `.text` section into `.nv_fatbin`](<a href="https://lists.llvm.org/pipermail/llvm-dev/2021-September/152533.html">https://lists.llvm.org/pipermail/llvm-dev/2021-September/152533.html</a>) in the LLD linker. The following discussion revolves around section reordering and the CUDA ELF binary format.<br><br>### Commits<br><br>*  Clang now reports CUDA 11.4 as fully supported. Not all features offered by NVCC are actually supported, but Clang is expected<br>to handle CUDA headers and produce binaries for all GPUs supported by NVCC. The default GPU architecture is now `sm_35`. [D108239](<a href="https://reviews.llvm.org/D108239">https://reviews.llvm.org/D108239</a>), [D108248](<a href="https://reviews.llvm.org/D108248">https://reviews.llvm.org/D108248</a>), [D108235](<a href="https://reviews.llvm.org/D108235">https://reviews.llvm.org/D108235</a>)<br>*  Various AMDGPU MIR peephole optimizations for comparison instructions.<br>*  Various AMDGPU attribute handling and propagation improvements.<br><br><br>## MLIR<br><br>### Discussions<br><br>*  Xuanhuo asked about [the meaning of `gpu.all_reduce`](<a href="https://llvm.discourse.group/t/whats-the-meaning-of-gpu-all-reduce/4158">https://llvm.discourse.group/t/whats-the-meaning-of-gpu-all-reduce/4158</a>). Alex Zinenko explained how this relates to collective operations thread index linearization.<br><br>### Commits<br><br>*  A GPU memset op is [introduced](<a href="https://reviews.llvm.org/D107548">https://reviews.llvm.org/D107548</a>) for CUDA and ROCm.<br>*  Weiwei Li started to improve how image operands are represented in the SPIR-V dialect for graphics use cases.<br><br><br>## OpenMP (Target Offloading)<br><br>### Discussions<br><br>*  Problems that result from mixing non-debug and debug code have been discussed as part of [PR51737](<a href="https://bugs.llvm.org/show_bug.cgi?id=51737">https://bugs.llvm.org/show_bug.cgi?id=51737</a>).<br>*  The outdated [<a href="http://openmp.llvm.org">openmp.llvm.org</a>](<a href="https://openmp.llvm.org">https://openmp.llvm.org</a>) webpage has been replaced by the [new "documentation" page](<a href="https://openmp.llvm.org/docs">https://openmp.llvm.org/docs</a>).<br><br>### Commits<br><br>*  The SPMDzation optimization (introduced in [D102307](<a href="https://reviews.llvm.org/D102307">https://reviews.llvm.org/D102307</a>)) has been extended with guarding to enlarge the scope of possible kernels amenable to the optimization, see [D106892](<a href="https://reviews.llvm.org/D106892">https://reviews.llvm.org/D106892</a>). Additionally, guarding has been implemented more effectively to batch multiple side-effect instructions in a single guarded region when they share the same block being only separated by non-side-effect instructions, see [D109070](<a href="https://reviews.llvm.org/D109070">https://reviews.llvm.org/D109070</a>). Further, generic regions without any parallelism are no longer transformed by SPMDzation to avoid unnecessary guarding, see [D109438](<a href="https://reviews.llvm.org/D109438">https://reviews.llvm.org/D109438</a>).<br>*  [OpenMP `assumes`](<a href="https://reviews.llvm.org/D105937">https://reviews.llvm.org/D105937</a>) can now be used to provide information for the OpenMP-Opt pass, what information is required to perform an optimization is communicated via [optimization remarks](<a href="https://openmp.llvm.org/docs/remarks/OptimizationRemarks.html">https://openmp.llvm.org/docs/remarks/OptimizationRemarks.html</a>).<br>*  OpenMP declare variant now works with [functions that use reference types](<a href="https://reviews.llvm.org/D108774">https://reviews.llvm.org/D108774</a>), this fixes a problem [reported for certain C++ math functions](<a href="https://lists.llvm.org/pipermail/openmp-dev/2021-August/004094.html">https://lists.llvm.org/pipermail/openmp-dev/2021-August/004094.html</a>).<br>*  Initial support for AMDGPU gfx10 offloading. [D108708](<a href="https://reviews.llvm.org/D108708">https://reviews.llvm.org/D108708</a>)<br><br><br>## External Compilers<br><br>### LLPC<br><br>*  [Geometry shaders](<a href="https://www.khronos.org/opengl/wiki/Geometry_Shader">https://www.khronos.org/opengl/wiki/Geometry_Shader</a>) can now be compiled using [relocatable shaders](<a href="https://github.com/GPUOpen-Drivers/llpc/blob/dev/docs/DdnRelocatableShaderElf.md">https://github.com/GPUOpen-Drivers/llpc/blob/dev/docs/DdnRelocatableShaderElf.md</a>). [LLPC#1391](<a href="https://github.com/GPUOpen-Drivers/llpc/pull/1391">https://github.com/GPUOpen-Drivers/llpc/pull/1391</a>)<br><br>### Mesa<br><br></div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div>Jakub Kuderski</div></div></div>