Hal Finkel
2014-Oct-21 20:47 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:42:03 PM > Subject: Re: [LLVMdev] [cfe-dev][Openmp-dev] Provide LLVM IR and OpenMP LLVM IR as input in a Pass > > > Hi Hal, > > > thanks for your answer. > > > > > I think it would be better if you gave us some idea of what you're > trying to do. clang's OpenMP implementation turns the OpenMP pragmas > into function calls to the runtime library. You can run passes on > this IR as you would any other IR. When you say, "Do some operation > on it and get results" do you mean generating code, linking and > executing that code? > > -Hal > > > > 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 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. -Hal> > > That is why I need both. > > > Best, > Simone > > > > > > > > > > > I hope this is clear and you can give me some suggestion. > > > > > > Thanks. > > > Best Regards, > Simone > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > -- > Hal Finkel > Assistant Computational Scientist > Leadership Computing Facility > Argonne National Laboratory >-- Hal Finkel Assistant Computational Scientist Leadership Computing Facility Argonne National Laboratory
Simone Atzeni
2014-Oct-21 20:52 UTC
[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.> >> 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. Simone
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