This is an archive of the discontinued LLVM Phabricator instance.

[OpenMP] Add distributed plugin based on MPI
Needs ReviewPublic

Authored by gValarini on Oct 19 2022, 11:48 AM.

Details

Reviewers
jdoerfert
Summary

This patch adds a new device plugin that is able to distribute work to a cluster using MPI as its underlying communication layer. The plugin is entirely based on the paper "The OpenMP Cluster Programming Model" (The OpenMP Cluster Programming Model).

Diff Detail

Event Timeline

gValarini created this revision.Oct 19 2022, 11:48 AM
Herald added a project: Restricted Project. · View Herald TranscriptOct 19 2022, 11:48 AM
gValarini added a project: Restricted Project.
gValarini updated this revision to Diff 469231.Oct 20 2022, 7:44 AM

Removing draft

gValarini published this revision for review.Oct 20 2022, 7:45 AM

Thanks for putting this up for review. It's a lot and I think we should start with a presentation in our weekly meeting. I also would like you to take a look at the new plugin infrastructure that is under review. My hope would be that we target that one right away and avoid lots of duplication. Some of the features you build here might be useful to be generalized anyway.
One initial question I have is about the "main" and "on device" stuff, but I'll ask it for sure in our meeting. Some drive by comments below.

openmp/libomptarget/plugins/mpi/src/EventSystem.cpp
42

We certainly want to rename this.

80

I would recommend against custom "assert" macros, the && notation is literally not more to type. That said, assert(0) is not helpful. Either make it an llvm_unreachable or a printf + __builtin_trap.

openmp/libomptarget/src/rtl.cpp
30

Bottom of the list, please.

179

Some of these changes seam unrelated and should be split of. E.g., calling deinit if present seems reasonable for all plugins.