Extending an existing compiler intermediate language with parallel constructs is a challenging task. Maintainability dictates a minimal extension that will not disturb too many of the existing analyses and transformations. At the same time, the parallel constructs need to be powerful enough to express different, orthogonal execution scenarios. For C/C++, OpenMP is one of the most prominent parallelization frameworks that, on its own, allows for multiple parallelization schemes. Additionally, other parallel languages such as OpenCL, CUDA or Cilk++ would profit from the translation to lower level parallel constructs. Finally, automatic parallelizers and new (partially) parallel languages such as Julia can be utilized best with general parallel constructs that allow to express parallel (or better concurrent) execution in an independent and intuitive way throughout the compilation.
In this BOF we want to continue the discussion about PIR, a parallel extension of the LLVM-IR. The discussion began in the context of the LLVM-HPC working group on IR extensions for parallelization. We will introduce the design and concepts behind PIR and shortly report on the lessons learned during the ongoing development of our prototype. In the course of this introduction we will talk about the goals, common problems as well as use cases that motivated our current design. Afterwards we will initiate an open ended discussion with the audience for which we allocate the majority of time (≈20 minutes).