文件名称:代码优化-analysis i terence tao third edition
文件大小:4.28MB
文件格式:PDF
更新时间:2024-06-27 22:52:00
OpenMP
9.3 代码优化 在生成目标 C 代码的时候,可以在变换后的 AST 基础之上进行源代码级的优化,下面将 介绍一些基本的优化方法。 OpenMP 程序运行时额外开销的很大一部分是因为并行域上的线程 fork-join 开销,因此并 行域的合并可能对 OpenMP 程序性能有明显的作用。fork-join 是面向任务的模型,任务和线程 之间是动态的关系,而 SPMD 模型则是面向执行者的,不存在线程组的产生和撤销操作及时间 开销。并行域合并的优化思想是:通过将相邻的 OpenMP 并行域进行合并,减少线程组的产 生和撤销,从而接近于 SPMD 的执行模式,提高程序运行速度。 为了实现并行域的合并,需要解决如下几个问题: 1. AST 的裁剪、拼接和修改等能力,这个与前面讨论的 AST 变化要求相同; 2. 确定并行域合并的边界。从原理上说,可以将 OpenMP 程序全部改造成只带有一个 parallel 制导指令的 SPMD 类型的程序,至少通过人工修改是可能的。但是实际上利 用编译器进行优化是,并行域的合并很难跨越所在的函数。因此并行域的合并一般只 限于该 parallel 制导指令所在的函数内部。 共有 STSIZE 个 stentry 项 符号 a Hash 散列 a int, scope N a float, scope N+1