One of the features sadly not found in the recent release of LLVM/Clang 3.2
is OpenMP support.
While OpenMP is a very common cross-platform parallel programming interface and its usage is very common to open-source projects with works spanning from desktop applications to super-computer workloads, OpenMP support in LLVM/Clang has been notably missing. There's been OpenMP patches before, talk of how to best represent OpenMP in LLVM, and other attempts, but nothing that's fully materialized within mainline for handling this industry-standard for parallel programming.
This past January it looked like OpenMP was finally coming to LLVM/Clang
, LLVM was getting close to handling OpenMP
, and then some out-of-tree patches
were floating around. Sadly though with OpenMP being around for the past decade there still isn't this support. The roadblocks up to this point with earlier work have been about LLVM IR changes for handling OpenMP that are complex and could lead to other messy changes.
Fortunately, the OpenMP LLVM/Clang discussion has been reignited. Intel's Compiler Team this week sent in an RFC about OpenMP support in Clang
. A couple Intel compiler engineers submitted a proposal for comments about the general design description for OpenMP constructs representation within LLVM's AST (Abstract Syntax Tree). "We seek feedback on the proposed design and ways to improve it." This document only covers handling OpenMP within the Abstract Syntax Tree but not the run-time library, ABI, or other design areas.
Hopefully with Intel investing in LLVM OpenMP now we'll see some real progress soon. The proposal and other information can be found from the Clang mailing list
. Another parallel programming standard that isn't widely loved by open-source compilers is OpenACC