引用本文:陈永健,舒继武,李建江,王鼎兴.OpenMP指导语句全局嵌套类型的静态分析及应用.软件学报,2005,16(2):194-204
【打印本页】   【下载PDF全文】   查看/发表评论  【EndNote】   【RefMan】   【BibTex】
←前一篇|后一篇→ 过刊浏览    高级检索
本文已被:浏览 4919次   下载 6577 本文二维码信息
码上扫一扫!
分享到: 微信 更多
OpenMP指导语句全局嵌套类型的静态分析及应用
陈永健1, 舒继武1, 李建江1, 王鼎兴1
清华大学,计算机科学与技术系,高性能计算研究所,北京,100084
摘要:
由于指导语句动态嵌套与绑定规则的存在,OpenMP程序中线程的一些上下文只能在运行时刻才能完全确定.然而,通过编译时刻的静态分析可以部分确定指导语句的嵌套类型,这些信息可以用于指导后续的编译与优化.由于函数调用的存在,嵌套与绑定常常会跨越过程边界,除了通常的局部和全局分析之外,还需要过程间分析的支持.通过在通常的过程间分析的基础上附加信息,可以使得嵌套类型信息在过程调用图中进行传播.将这些全局信息与过程内的局部信息结合起来,就可以在编译时刻确定语句的嵌套类型.结果表明,编译时刻的嵌套类型分析可以有效地确定通常的科学与工程计算程序中指导语句的嵌套类型,基于嵌套类型的翻译与优化可以同时减少运行时开销和目标代码长度.
关键词:  OpenMP  编译  过程间分析  全局嵌套类型  OpenMP翻译
DOI:
分类号:
基金项目:Supported by the National Natural Science Foundation of China under Grant No.69933020 (国家自然科学基金)
Static Analysis of OpenMP Directive Nesting Types and Its Application
CHEN Yong-Jian,SHU Ji-Wu,LI Jian-Jiang,WANG Ding-Xing
Abstract:
Because of the rules of dynamic directive nesting and binding, some of the thread context in OpenMP programs can only be totally determined at runtime. However, by compiling time static analysis, nesting type can be partly determined and this information can be passed to other compiling phases to guide later translation and optimizations. Since the binding and nesting may span the procedure boundaries through calls, local and global analyses are not enough. It is the interprocedural analysis that provides the most required ability. By integrating information into traditional interprocedural analysis, the nesting type information of procedures is propagated along call graphs. And later translation and optimization phases can bind this global information with local information inside the procedure to determine the nesting types at compiling time. The results demonstrate that in typical science and engineering workload the nesting type is highly determinable at compiling time, and the application of this information may achieve less runtime overhead and the reduced code size.
Key words:  OpenMP  compiler  interprocedural analysis  global nesting type  OpenMP translation