Hal Finkel
2014-Oct-21 21:02 UTC
[LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass
----- Original Message -----> From: "Simone Atzeni" <simone.at at gmail.com> > To: "Hal Finkel" <hfinkel at anl.gov> > Cc: llvmdev at cs.uiuc.edu, cfe-dev at cs.uiuc.edu, openmp-dev at dcs-maillist2.engr.illinois.edu > Sent: Tuesday, October 21, 2014 3:52:38 PM > Subject: Re: [LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass > > > >> I want to use the pass Polly to find any data dependence in the > >> code. > >> Since it does not work on OpenMP, > > > > Why not? The loops in the outlined OpenMP regions are just regular > > loops (with runtime bounds). Can polly not handle them? > > I tried it, it does not work and I also talked already with the Polly > developers. They are slightly different, for example when the > pragmas are translated actually the compiler introduces new > functions and Polly get confused.Right. So the long-term solution here is to figure out what enhancements are necessary to the various components to make this work.> > > > >> I was thinking to apply it on the > >> not-OpenMP IR, then I need the results of Polly to apply other > >> passes to the OpenMP IR. > > > > I don't think this will work for the OpenMP'd loops. The IR will > > look completely different, be in different functions, etc. > > What I did, and it works, is to build a script that call clang with > Polly the first time and write the results in a file, then call > Clang again with OpenMP and at the point I can apply other passes on > the OpenMP IR reading the Polly results from that file. > But it’s kind of a “dirty" solution, I was wondering if I can, in > some way, introduce my own option "-myoption” that compile the code > in both ways and make it available to the passes I want to call.Not currently. -Hal> > Simone-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory
Simone Atzeni
2014-Oct-21 22:43 UTC
[LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass
Yes, this is what I have been thinking. I talked with the Polly developers and what they suggested me is to analyze the non-OpenMP IR code. But since I need to compile the OpenMP code, they were proposing to instruct in some way the OpenMP front-end keep the original IR code (without OpenMP), for example via metadata. Do you think this is something feasible? Thanks. Simone On Oct 21, 2014, at 15:02, Hal Finkel <hfinkel at anl.gov> wrote:> ----- Original Message ----- >> From: "Simone Atzeni" <simone.at at gmail.com> >> To: "Hal Finkel" <hfinkel at anl.gov> >> Cc: llvmdev at cs.uiuc.edu, cfe-dev at cs.uiuc.edu, openmp-dev at dcs-maillist2.engr.illinois.edu >> Sent: Tuesday, October 21, 2014 3:52:38 PM >> Subject: Re: [LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass >> >> >>>> I want to use the pass Polly to find any data dependence in the >>>> code. >>>> Since it does not work on OpenMP, >>> >>> Why not? The loops in the outlined OpenMP regions are just regular >>> loops (with runtime bounds). Can polly not handle them? >> >> I tried it, it does not work and I also talked already with the Polly >> developers. They are slightly different, for example when the >> pragmas are translated actually the compiler introduces new >> functions and Polly get confused. > > Right. So the long-term solution here is to figure out what enhancements are necessary to the various components to make this work. > >> >>> >>>> I was thinking to apply it on the >>>> not-OpenMP IR, then I need the results of Polly to apply other >>>> passes to the OpenMP IR. >>> >>> I don't think this will work for the OpenMP'd loops. The IR will >>> look completely different, be in different functions, etc. >> >> What I did, and it works, is to build a script that call clang with >> Polly the first time and write the results in a file, then call >> Clang again with OpenMP and at the point I can apply other passes on >> the OpenMP IR reading the Polly results from that file. >> But it’s kind of a “dirty" solution, I was wondering if I can, in >> some way, introduce my own option "-myoption” that compile the code >> in both ways and make it available to the passes I want to call. > > Not currently. > > -Hal > >> >> Simone > > -- > Hal Finkel > Assistant Computational Scientist > Leadership Computing Facility > Argonne National Laboratory-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141021/a6aece1a/attachment.html>
Hal Finkel
2014-Oct-21 22:48 UTC
[LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass
----- Original Message -----> From: "Simone Atzeni" <simone.at at gmail.com> > To: "Hal Finkel" <hfinkel at anl.gov> > Cc: llvmdev at cs.uiuc.edu, cfe-dev at cs.uiuc.edu, openmp-dev at dcs-maillist2.engr.illinois.edu > Sent: Tuesday, October 21, 2014 5:43:08 PM > Subject: Re: [LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass > > > Yes, this is what I have been thinking. > I talked with the Polly developers and what they suggested me is to > analyze the non-OpenMP IR code. > But since I need to compile the OpenMP code, they were proposing to > instruct in some way the OpenMP front-end keep the original IR code > (without OpenMP), for example via metadata. > > > Do you think this is something feasible?You could probably hack it to do this (I believe that in effect, it will do this already if there is an "if" clause in the OpenMP pragma). If you insert "if" clauses dependent on some variable you understand, perhaps you could analyze the branches on that variable and base your analysis on that. -Hal> > > Thanks. > Simone > > > > On Oct 21, 2014, at 15:02, Hal Finkel < hfinkel at anl.gov > wrote: > > > > ----- Original Message ----- > > > From: "Simone Atzeni" < simone.at at gmail.com > > To: "Hal Finkel" < hfinkel at anl.gov > > Cc: llvmdev at cs.uiuc.edu , cfe-dev at cs.uiuc.edu , > openmp-dev at dcs-maillist2.engr.illinois.edu > Sent: Tuesday, October 21, 2014 3:52:38 PM > Subject: Re: [LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and > OpenMP LLVM IR as input in a Pass > > > > > > > I want to use the pass Polly to find any data dependence in the > code. > Since it does not work on OpenMP, > > Why not? The loops in the outlined OpenMP regions are just regular > loops (with runtime bounds). Can polly not handle them? > > I tried it, it does not work and I also talked already with the Polly > developers. They are slightly different, for example when the > pragmas are translated actually the compiler introduces new > functions and Polly get confused. > > Right. So the long-term solution here is to figure out what > enhancements are necessary to the various components to make this > work. > > > > > > > > > > I was thinking to apply it on the > not-OpenMP IR, then I need the results of Polly to apply other > passes to the OpenMP IR. > > I don't think this will work for the OpenMP'd loops. The IR will > look completely different, be in different functions, etc. > > What I did, and it works, is to build a script that call clang with > Polly the first time and write the results in a file, then call > Clang again with OpenMP and at the point I can apply other passes on > the OpenMP IR reading the Polly results from that file. > But it’s kind of a “dirty" solution, I was wondering if I can, in > some way, introduce my own option "-myoption” that compile the code > in both ways and make it available to the passes I want to call. > > Not currently. > > -Hal > > > > > Simone > > -- > Hal Finkel > Assistant Computational Scientist > Leadership Computing Facility > Argonne National Laboratory >-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory