OpenMP Support for LLVM and clang

Hello,

I am a masters student interested in parallelization API’s and auto
parallelization. I have been following LLVM’s development for some time now
and would like to make a contribution. In particular I am interested in adding
OpenMP support for LLVM. I believe this will be useful both for clang as well
as LLVM Polly. I would like to know if anyone is already working on this.

Any helpful suggestions are welcome.

Hi,

  we use the llvm to lower c++ code to c code which can be run through our abstract interpretation framework
("goblint" based on CIL). Along with the c code we emit some structured text files that contain the "lost" information
(class hierarchy, private/public attributes etc). The backend is derived from the c backend (In addition to the c code
debug locations are emitted so that the c code lines can be mapped back to the original cpp code lines. Furthermore, a few
type checks are performed which are more restrictive than the actual c++ standard, but this could be moved further back in the tool chain.).
This is developed for a company as part of a science cooperation with our university.
Ideally, I would like to submit the backend as a patch to llvm so I don't need keep updating my llvm branch just to keep the backend alive
which is 95% identical to the c backend.

Maybe this could be handled as a new subtarget for the c backend?

Any ideas?

Thx,
Alex

Hey Gautam,

I think this is an excellent idea. At the moment I do not know of any official and public project regarding OpenMP support in LLVM/clang. It would be awesome if you could work on this.

I propose to take a look at the mpc project, which has a LGPL licensed OpenMP library. The explanations how to use MPC OpenMP directly are in a header file called mpcomp_abi.h located inside the mpc/MPC_OpenMP/include directory.

Furthermore I know people at the University of Innsbruck work on a Clang parser for OpenMP [1]. (I copied Peter)
Maybe he can give you some help for the clang part or even share the source code with you.

[1] http://www.dps.uibk.ac.at/projects/insieme/index.php?page=omp/omp

Cheers
Tobi

Hi Tobi,

I think this is an excellent idea. At the moment I do not know of any
official and public project regarding OpenMP support in LLVM/clang. It
would be awesome if you could work on this.

both llvm-gcc and dragonegg support OpenMP, by piggy-backing on gcc's
support for it.

Ciao,

Duncan.

Hello,

I propose to take a look at the mpc project, which has a LGPL licensed
OpenMP library. The explanations how to use MPC OpenMP directly are in a
header file called mpcomp_abi.h located inside the
mpc/MPC_OpenMP/include directory.

I had a look at MPC's OpenMP and it seems to be both well written and
suited for this purpose. Thanks for the pointer. I will update the
list once I have some code.

Hey Gautam,

I would be highly interested the approach you are taking. So if you find the time it would be great to get some updates on design decisions you are taking and about the general design you are planning to implement.

Furtermore, I recommend starting to post patches early. As smaller and self contained patches are as easier they can be reviewed.

Looking forward to read you

Cheers
Tobi