[llvm-dev] [RFC] IR-level Region Annotations
Daniel Berlin via llvm-dev
llvm-dev at lists.llvm.org
Thu Jan 19 12:04:25 PST 2017
On Thu, Jan 19, 2017 at 11:46 AM, Mehdi Amini via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> > On Jan 19, 2017, at 11:36 AM, Adve, Vikram Sadanand via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> > Hi Johannes,
> >> I am especially curious where you get your data from. Tapir  (and to
> >> some degree PIR ) have shown that, counterintuitively, only a few
> >> to LLVM passes are needed. Tapir was recently used in an MIT class with
> >> lot of students and it seemed to work well with only minimal changes
> >> to analysis and especially transformation passes.
> > TAPIR is an elegant, small extension and, in particular, I think the
> idea of asymmetric parallel tasks and control flow is a clever way to
> express parallelism with serial semantics, as in Cilk. Encoding the
> control flow extensions as explicit instructions is orthogonal to that,
> though arguably more elegant than using region tags + metadata.
> > However, Cilk is a tiny language compared with the full complexity of
> other languages, like OpenMP. To take just one example, TAPIR cannot
> express the ORDERED construct of OpenMP. A more serious concern, IMO, is
> that TAPIR (like Cilk) requires serial semantics, whereas there are many
> parallel languages, OpenMP included, that do not obey that restriction.
> Third, OpenMP has *numerous* clauses, e.g., REDUCTION or PRIVATE, that are
> needed because without that, you’d be dependent on fundamentally hard
> compiler analyses to extract the same information for satisfactory parallel
> performance; realistic applications cannot depend on the success of such
> I agree with this, but I’m also wondering if it needs to be first class in
> the IR?
> For example we know our alias analysis is very basic, and C/C++ have a
> higher constraint thanks to their type system, but we didn’t inject this
> higher level information that helps the optimizer as first class IR
FWIW, while i agree with the general point, i wouldn't use this example.
Because we pretty much still suffer to this day because of it (both in AA,
and devirt, and ...) :)
We can't always even tell fields apart
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev