Status of OpenMP in MLIR

Hello,

I see a detailed OpenMP dialect and we are contemplating having a summer student use it to parallelize loops within onnx-mlir.

Is it possible to get a status of this dialect, and see example of its use and deployment? Last post I saw date from Nov 2022. Technically, we may only need a very small subset (parallel loops with associated use of private/first private/last private memory attributes).

Your help is much appreciated, thank you

Alexandre

2 Likes

Hello @AlexEichenberger,

Thanks for your interest in the OpenMP dialect. We have made progress with OpenMP dialect over the last few years. Development is mostly driven by Flang. There is support for several constructs including parallel, worksharing loop (with reductions on scalars). Task, Atomic and Target constructs are a work in progress.

Currently privatisation is not handled inside the dialect. This is done separately before lowering to the Dialect. The longer term plan is to handle this in the dialect but we have not started on this.

The list of supported operations can be found in 'omp' Dialect - MLIR. We also have a status page for Flang OpenMP maintained at OMP builder + Flang OMP tasks - Google Sheets. This includes information about the Dialect as well.

For usage, you can consult the tests in

mlir/test/Dialect/OpenMP/ops.mlir
mlir/test/Target/LLVMIR/openmp*.mlir
flang/test/Lower/OpenMP/*.f90
flang/test/Fir/convert-to-llvm-openmp-and-fir.fir