学位论文 > 优秀研究生学位论文题录展示

面向高效能计算的编译关键技术:精度、性能与功耗

作 者: 杨灿群
导 师: 杨学军
学 校: 国防科学技术大学
专 业: 计算机科学与技术
关键词: 高效能计算 扩展双精度浮点运算 IA-64体系结构 编译优化 低功耗优化
分类号: TP314
类 型: 博士论文
年 份: 2007年
下 载: 224次
引 用: 1次
阅 读: 论文下载
 

内容摘要


随着计算机技术的不断发展,高端计算已经从追求单一的高性能转向追求综合的高效能,以求解决当前高性能计算领域所面临的实用性能、可编程性与低成本、可移植性、鲁棒性等方面的问题,另外,浮点舍入误差对大规模数值模拟等安全关键领域的精度影响越来越严重,64位的双精度浮点运算已经不能满足需求,必须将超64位的高精度浮点运算的研究也作为这些领域的高效能计算的目标之一。高效能计算的这五个目标相互影响,例如,高精度在提高程序置信度的同时,对性能优化和功耗优化提出了更高的要求。编译技术为实现高效能计算的各个目标提供基础支持,论文选取了高精度编译、针对高精度的编译优化、低功耗编译优化三个方面展开研究,取得了如下创新性成果:1、基于硬件对扩展双精度浮点运算的支持,设计并实现了支持扩展双精度浮点运算的FORTRAN编译器——CCRG编译器。该编译器的研制弥补了商用编译器不支持FORTRAN语言的扩展双精度浮点运算的不足,有效保证了科学计算中要求的高精度。采用精度敏感的圆周率计算BBP算法验证了CCRG编译器在扩展双精度浮点运算上的正确性。2、提出了把表驱动算法与多项式并行计算相结合的指数函数内联算法,该算法也可用于其它超越函数的内联。设计并实现了扩展双精度数学库中的乘幂、除法、方根、指数函数的内联,在有效降低函数调用开销的同时,为指令调度等其它编译优化提供了优化空间。测试表明,数学库函数内联使扩展双精度浮点运算的性能提高了17.8%。3、结合编译前端提供的数组访问信息,提出了分裂递归链的仿射数组下标依赖关系分析算法,同时,还改进了非仿射数组下标的依赖关系分析算法,增强了针对线性化数组访问的依赖关系分析能力,使CCRG编译器能够有效地进行循环变换,改善数据访问的局部性。4、从提高指令级并行的角度出发,设计并实现了别名分析、自动函数内联、数据预取、存取地址后增指令优化等多种编译优化算法,有效缓解了高精度计算中的“存储墙”问题。测试表明,这些编译优化算法使CCRG编译器的扩展双精度浮点运算性能提升了42.0%,对比GCC编译器,性能提升66.7%,达到了Intel商用编译器双精度浮点运算(不支持扩展双精度)性能的70.7%,是Intel商用编译器四倍精度浮点运算性能的15.8倍。5、针对扩展双精度浮点运算的MPI实现中的功耗问题,提出了基于MPI_Barrier的低功耗优化技术以及面向能量优化的MPI_Reduce与MPI_Bcast算法。测试表明,采用扩展双精度的NPB3.2-MPI程序在C级规模下,利用MPI_Barrier操作进行电压调节最大可获得19.2%的能量节约,平均能量节约也达到5.2%。采用面向能量优化的MPI_Reduce和MPI_Bcast算法,MG3D程序分别可获得17.7%和14.2%的能量节约。

全文目录


摘要  12-14
ABSTRACT  14-16
第一章 绪论  16-30
  1.1 引言  16-17
  1.2 相关工作  17-25
    1.2.1 高精度浮点运算的实现  17-20
    1.2.2 面向高精度运算的编译器和编译优化  20-23
    1.2.3 低功耗优化技术  23-25
  1.3 论文的主要工作与创新  25-27
    1.3.1 主要研究内容  25-26
    1.3.2 主要创新点  26-27
  1.4 论文结构  27-30
第二章 面向高效能计算的高精度编译技术  30-70
  2.1 扩展双精度浮点运算的硬件支持  30-36
    2.1.1 Intel IA-64对扩展双精度浮点运算的支持  31-34
    2.1.2 Intel 64与IA-32对扩展双精度浮点运算的支持  34-36
  2.2 扩展双精度浮点运算的语法  36-38
    2.2.1 扩展双精度浮点数据表示  36-37
    2.2.2 内部函数与标准数学库函数名字约定  37
    2.2.3 扩展双精度浮点数据的输出格式  37-38
  2.3 扩展双精度程序的编译实现  38-41
    2.3.1 编译前端  38-39
    2.3.2 编译中端与RTL生成  39
    2.3.3 编译后端  39-40
    2.3.4 机器描述  40
    2.3.5 FORTRAN内部函数库与I/O库  40-41
  2.4 扩展双精度浮点运算函数库  41-58
    2.4.1 乘幂运算展开  41-49
    2.4.2 除法与方根内联  49-52
    2.4.3 指数函数内联  52-58
  2.5 扩展双精度浮点运算并行支持  58-62
    2.5.1 MPI编程接口与MPI实现  58
    2.5.2 基于MPICH2的扩展双精度浮点并行计算  58-60
    2.5.3 基于其它系统的扩展双精度浮点并行计算  60-62
  2.6 扩展双精度浮点运算的功能验证  62-65
    2.6.1 计算π的BBP算法  62-64
    2.6.2 用BBP算法测试扩展双精度浮点运算的功能  64-65
  2.7 扩展双精度浮点运算的性能测试  65-69
    2.7.1 与Intel编译器的四倍精度浮点运算性能对比测试  65-66
    2.7.2 与Intel编译器的双精度浮点运算性能对比测试  66
    2.7.3 扩展双精度数学库函数内联优化效果测试与分析  66-67
    2.7.4 扩展双精度与双精度浮点运算性能对比与分析  67-69
  2.8 小结  69-70
第三章 面向高效能计算的高性能编译技术  70-108
  3.1 针对FORTRAN语言特点的别名分析  70-72
    3.1.1 FORTRAN语言中的别名  70-71
    3.1.2 针对FORTRAN语言特点的别名分析  71-72
    3.1.3 针对FORTRAN语言特点的别名分析优化效果  72
  3.2 自动函数内联  72-75
    3.2.1 自动函数内联算法  73-74
    3.2.2 自动函数内联优化效果  74-75
  3.3 循环变换  75-81
    3.3.1 循环变换与数据依赖关系分析技术  75-76
    3.3.2 GCC中的数据依赖关系分析  76
    3.3.3 改进GCC中的数据依赖关系分析  76-80
    3.3.4 循环变换优化效果  80-81
  3.4 数据预取  81-92
    3.4.1 数据预取技术  82-83
    3.4.2 IA-64 Cache与预取支持  83-85
    3.4.3 GCC中的数据预取  85-86
    3.4.4 改进GCC中的数据预取  86-89
    3.4.5 数据预取优化效果  89-92
  3.5 存取地址后增指令优化  92-94
    3.5.1 归纳变量优化与存取地址后增指令  92-93
    3.5.2 GCC中的归纳变量优化  93
    3.5.3 改进GCC中的归纳变量优化  93-94
    3.5.4 存取地址后增指令优化效果  94
  3.6 软流水调度  94-102
    3.6.1 软流水调度技术  94-95
    3.6.2 资源模型  95-96
    3.6.3 基于DFA资源模型的模调度算法  96-101
    3.6.4 软流水调度优化效果  101-102
  3.7 性能评测  102-106
    3.7.1 串行性能测试  102-104
    3.7.2 并行性能测试  104-106
  3.8 小结  106-108
第四章 面向高效能计算的低功耗技术  108-124
  4.1 功耗基础  108-110
    4.1.1 功耗组成  109
    4.1.2 功耗分布  109-110
  4.2 基于MPI程序的低功耗优化技术  110-122
    4.2.1 基于MPI_Barrier操作的低功耗优化  111-117
    4.2.2 基于MPI_Reduce和MPI_Bcast操作的低功耗优化  117-122
  4.3 小结  122-124
第五章 结束语  124-126
  5.1 论文的主要贡献和创新点  124-125
  5.2 进一步的工作  125-126
致谢  126-128
参考文献  128-142
作者在攻读博士学位期间取得的学术成果  142-143
  发表的论文  142-143
  获得的科技奖励  143
  参加的科研工作  143

相似论文

  1. 嵌入式MSDCC异构多核编译器研究,TP314
  2. SIMD数据置换指令的自动生成与优化,TP332
  3. 面向MPI程序的进程数据相似性分析与优化技术,TP311.11
  4. 相变存储器低功耗优化研究及其在多态存储中的应用,TP333
  5. 无线传感器网络中编译优化工具的研究及实现,TN929.5
  6. 基于IMPACT的嵌入式汇编及编译指示的研究与实现,TP368.1
  7. 基于网络处理器的剖面分析优化,TP393.05
  8. 二维SIMD结构的编译优化与功耗研究,TN403
  9. 保证Java精确异常的指令调度技术,TP312.2
  10. 二维SIMD结构的低功耗调度,TP332
  11. 数据流分析技术研究与实例分析,TP314
  12. SIMD编译优化技术研究,TP314
  13. 一种用于测试编译优化的程序控制结构生成算法,TP314
  14. 基于谓词执行的编译优化技术的研究与实现,TP314
  15. IA-64指令调度研究,TP303
  16. 高级循环变换技术研究及实现,TP311.11
  17. 跨文件编译模式的研究和实现,TP314
  18. 优化编译的代码生成,TP314
  19. MPEG-4编码器在ADSP-BF561上的实现与优化,TN762
  20. 面向DSP的系统软件开发研究与应用,TP332
  21. 基于THUMP的编译优化技术研究,TP314

中图分类: > 工业技术 > 自动化技术、计算机技术 > 计算技术、计算机技术 > 计算机软件 > 编译程序、解释程序
© 2012 www.xueweilunwen.com