OpenMp和自动并行化
此文是Fred Chow在德拉华大学所讲open64课程讲义的翻译,转载请注明出处 http://www.lingcc.com
Fred Chow 原版讲义见最后一页

  • 并行化

两种在open64中获得粗粒度并行化的方法:OpenMP和自动并行化。前者使用选项-mp来指导并行化,在Fortran,C和C++中支持OpenMP2.5。后者需要选项-apo打开,功能是在LNO阶段检测并行的循环并插入指导。在同一个编译中,可以两个同时使用。

  • 对粗粒度并行化的支持

并行化的代码给出它自己函数的轮廓(?),轮廓函数嵌入到原始过程中,原始过程中的本地变量采用静态链的方式访问,指向轮廓函数的指针被传到libopenmp中的同步机制中用来做定型执行的调度。其中会有一段并行的代码保存下来以备串行执行之用

  • 并行运行时执行

通过大量产生线程来达到执行并行代码区域的效果,默认情况下的线程数是CPU的个数,libopenmp(PathScale专利)包含:线程控制和同步机制和OpenMP intrinsic相关机制.运行时的动作通过环境变量控制,如指定线程和处理器之间的亲和性

  • OpenMP 编译过程

首先前段将OpenMP直接翻译成WHIRL OMP编译指示和范围节点,然后OpenMP预lower(be/be/omp_lower.cxx),这一步在VHO后IPL前执行,对OpenMP的编译指示做初步的lower–使用OpenMP库中的例程调用代替intrinsics;接着做MP lowering(be/com/wn_mp.cxx),这一步在LNO之后WOPT之前执行,并行区域被扩充到多个例程中,每个例程都嵌入在原始函数中,并包含向上的对本地母函数的引用,还要插入代码在运行时决定并行还是串行执行,若并行,则调用OpenMP运行时库来产生大量线程执行并行代码,若串行则执行剩下的串行程序代码.大多数的OpenMP编译指示在这一步被删除.

  • 较早阶段的MP

是指当应用在LNO相关的MP lowering时,默认便已是用较晚的MP,MP的lowering多应用在LNO之后,LNO在有MP编译指示时运行–MP编译指示的出现让LNO的转换更加保守.选项-OPT:early_mp=on作用在较早的MP上,LNO引用并行例程时,若无MP编译指示,则使更激进的优化成为可能,附加的调用可能会抑制一些优化,在-apo选项下并不起作用.

整个Open64课程系列的文章包括以下,请阅读中指正

Open64课程-简介,概述和中间表示

Open64课程- 编译过程

Open64课程-内联

Open64 课程–全局标量优化(WOPT I) part 1

Open64 课程–全局标量优化(WOPT I) part II

Open64 课程–全局标量优化(WOPT II)

open64课程–过程间分析优化(IPA)

Open64课程—代码生成(CG)

Open64课程-循环嵌套优化(LNO)

Open64课程–反馈指导优化(FDO)

Open64课程–OpenMp和自动并行化

Open64课程-结语

此文是Fred Chow在德拉华大学所讲open64课程讲义的翻译,转载请注明出处 http://www.lingcc.com
Fred Chow 原版讲义见最后一页

相关文章:

  13 Responses to “Open64课程–OpenMp和自动并行化”

  1. [...] Open64课程–OpenMp和自动并行化 – 198 views [...]

  2. [...] Open64课程–OpenMp和自动并行化 [...]

  3. [...] Open64课程–OpenMp和自动并行化 [...]

  4. 我去下来看看,3Q~

  5. open64只做了openmp的自动并行化,有做mpi的么?
    orc有没有?虽然两个基本同源

    • @小丁, 我刚刚grep了一下open64的源码,是有MPI的支持的,德拉华大学的人已经做了相关的工作,请google搜索《Implementing an Open64-based Tool for Improving the Performance of MPI Programs》。我没有详细看过这篇文章,所以不了解具体内容。

  6. [...] Open64课程–OpenMp和自动并行化 [...]

  7. [...] Open64课程–OpenMp和自动并行化 [...]

  8. [...] Open64课程–OpenMp和自动并行化 [...]

  9. [...] Open64课程–OpenMp和自动并行化 [...]

  10. [...] Open64课程–OpenMp和自动并行化 [...]

  11. [...] Open64课程–OpenMp和自动并行化 [...]

  12. [...] Open64课程–OpenMp和自动并行化 [...]

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量