Arvind Sudarsanam
2010-Jul-01 18:25 UTC
[LLVMdev] Qualitative comparisons between Open64 and llvm
Hi, I have been working towards developing compiler optimization tools targeting multi core processors while using LLVM IR as the starting point and building on top of the analysis and optimization passes available in the llvm source. Recently, I looked into Open64 and its intermediate representation WHIRL. Documentation for developers to use Open64 seems to be inadequate (when compared to LLVM documentation). I am planning to download the source and look into it. I was wondering if anyone has worked with both LLVM and Open64 and has some qualitative comparisons between the two. Maybe, in terms of (a) Ease of developing new passes (2) Ease of debugging (3) Quality of results (4) Support for developers (5) Documentation (6) Ability to retarget towards multi core processors. Thanks in advance Sincerely Arvind CPU Technology Software Engineer
Hi, Arvind Sudarsanam: I know some of Open64. Above all, Open64 is designed for a high performance compiler. It is now supported by AMD, HP, ICT Chinese Academy of Science, etc. and has been ported to X86, Itanium, Loongson CPU etc. And to your questions 1, Open64 already have some main optimization phases, Inline for aggressive inline opt. LNO for loop opt, WOPT for machine independent opt( transform WHIRL to SSA , do opt, and transform back to WHIRL), CG for basic block control flow and target specific opt. You can add your passes depend on what your opt is. 2, Open64 has dump_* function and traces to get plenty of debugging information. It is very helpful for developers, According to my experience, WOPT phases is a little difficult to debug, because of SSA , alias computation,etc, however, nothing is difficult if you understand it :) 3,What do you mean by quality? According to SPEC CPU official websit, Open64(or pathscale) get better performance on some X86 and Itanium processors, you can find more at http://www.pathscale.com/node/18 . 4,Open64 has a maillist, you can get more help there. http://www.open64.net/mailing-list.html 5. Compare to LLVM and GCC, Open64's document is less. But code is the best way, and the comment gives many information. : ) 6, while for retarget, Open64 use a targ_info directory for machine description, such as instruction, register, and scheduling information. While for multi core processors, Open64 already have openmp support. While for LLVM, I think other guys in this maillist can give you much more information : ) yours, Ling kun On Fri, Jul 2, 2010 at 2:25 AM, Arvind Sudarsanam <A.Sudarsanam at cputech.com> wrote:> Hi, > > I have been working towards developing compiler optimization tools > targeting multi core processors while using LLVM IR as the starting > point and building on top of the analysis and optimization passes > available in the llvm source. > > Recently, I looked into Open64 and its intermediate representation > WHIRL. Documentation for developers to use Open64 seems to be inadequate > (when compared to LLVM documentation). I am planning to download the > source and look into it. > > I was wondering if anyone has worked with both LLVM and Open64 and has > some qualitative comparisons between the two. Maybe, in terms of (a) > Ease of developing new passes (2) Ease of debugging (3) Quality of > results (4) Support for developers (5) Documentation (6) Ability to > retarget towards multi core processors. > > Thanks in advance > Sincerely > Arvind > > CPU Technology > Software Engineer > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- http://www.lingcc.com
Hi, Arvind & Kun "Generates crap code, has tons of bugs, the community is disorganized selfish and driven by corporate bullshit" is Open64. 2010/7/2 Ling Kun <erlv5241 at gmail.com>> Hi, Arvind Sudarsanam: > I know some of Open64. Above all, Open64 is designed for a high > performance compiler. It is now supported by AMD, HP, ICT Chinese > Academy of Science, etc. and has been ported to X86, Itanium, Loongson > CPU etc. > > And to your questions > 1, Open64 already have some main optimization phases, Inline for > aggressive inline opt. LNO for loop opt, WOPT for machine independent > opt( transform WHIRL to SSA , do opt, and transform back to WHIRL), > CG for basic block control flow and target specific opt. You can add > your passes depend on what your opt is. > > 2, Open64 has dump_* function and traces to get plenty of debugging > information. It is very helpful for developers, According to my > experience, WOPT phases is a little difficult to debug, because of > SSA , alias computation,etc, however, nothing is difficult if you > understand it :) > > 3,What do you mean by quality? According to SPEC CPU official websit, > Open64(or pathscale) get better performance on some X86 and Itanium > processors, you can find more at http://www.pathscale.com/node/18 . > > 4,Open64 has a maillist, you can get more help there. > http://www.open64.net/mailing-list.html > > 5. Compare to LLVM and GCC, Open64's document is less. But code is > the best way, and the comment gives many information. : ) > > 6, while for retarget, Open64 use a targ_info directory for machine > description, such as instruction, register, and scheduling > information. While for multi core processors, Open64 already have > openmp support. > > > While for LLVM, I think other guys in this maillist can give you much > more information : ) > > > yours, > Ling kun > > > On Fri, Jul 2, 2010 at 2:25 AM, Arvind Sudarsanam > <A.Sudarsanam at cputech.com> wrote: > > Hi, > > > > I have been working towards developing compiler optimization tools > > targeting multi core processors while using LLVM IR as the starting > > point and building on top of the analysis and optimization passes > > available in the llvm source. > > > > Recently, I looked into Open64 and its intermediate representation > > WHIRL. Documentation for developers to use Open64 seems to be inadequate > > (when compared to LLVM documentation). I am planning to download the > > source and look into it. > > > > I was wondering if anyone has worked with both LLVM and Open64 and has > > some qualitative comparisons between the two. Maybe, in terms of (a) > > Ease of developing new passes (2) Ease of debugging (3) Quality of > > results (4) Support for developers (5) Documentation (6) Ability to > > retarget towards multi core processors. > > > > Thanks in advance > > Sincerely > > Arvind > > > > CPU Technology > > Software Engineer > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > > > -- > http://www.lingcc.com > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100707/eb8da10a/attachment.html>