基于Clang的C语言代码并行化转换工具的设计与实现
发布时间:2017-09-27 19:06
本文关键词:基于Clang的C语言代码并行化转换工具的设计与实现
【摘要】:在互联网飞速发展的今天,人们进入了一个数据爆炸的年代,针对于一些互联网后台核心的应用,每天有数以亿记的用户,完成海量的点击、访问,然而在大并发下的数据处理不可避免的面临着各种各样的瓶颈。目前,凭着拥有极高运算能力的高性能并行计算机成为现金计算机发展方向上的重要标杆,计算设备的计算能力成为了衡量一个国家的经济能力和科技实力的主要度量,同时在另一方面它也在不断促进国家经济的发展、科学技术的进步以及综合国力的提升。 现在,世界范围内的众多研究人员,正在对GPU运算进行着各类开发试验,并对这种并行计算的能力进行学习与研究。但是在这样的工作中,大多数工作都是基于一些原始的数据所进行的。当研究者和开发人员将开发的工作在GPU上执行时,他们需要考虑到GPU的并行编程,并且遵守GPU的底层架构。遵循这样的想法,本文提供了一种可以将传统的C遗产代码转换为可并行执行的OpenMP代码的工具。在本文基础上提供的主要工作内容如下: 1.在对代码进行分析时,代码中的嵌套循环的提取是工具中的重要部分,在此部分中,我们在结合工具原有的代码分析能力的基础上,对代码中的嵌套循环进行提取,从而进行进一步的分析与处理工作。 2.对嵌套循环代码中的数据依赖关系,我们也进行了相应的进一步的处理。根据分析代码所生成的抽象语法树与控制流图的基础上,我们对其中的数据依赖关系进行相应的分析,由此来建立一张有向的数据依赖关系图。通过此数据依赖关系图,对于嵌套循环的拆分与重建进行指导,我们就可以尽可能的对程序进行并行化处理。 3.针对程序中存在着非常复杂的上下文关系,在循环重构过程中,我们运用安德森指针分析的方法来对代码进行过程间分析。对于程序代码中的指针或大量的引用进行标记和跟踪,,分析一个变量的变化过程、存储状态以及内部的存储值。 4.Clang/LLVM作为一个轻量级的提示友好的编译器近年来获得了大量研究人员的关注。作为一个开源编译器,它在很大程度上提高了代码的执行效率。本文在此基础上进行开发,也是为了达到对代码的并行编译执行程度达到一个相对客观的程度。 本文在进行有关串行程序并行化的同时,针对目前国内并行编程发展的整体情况以及大量待处理遗产程序的需求,设计和实现了一种在Clang基础上可以将C语言程序自动并行化转换的工具。
【关键词】:自动并行化 Clang 源源转换
【学位授予单位】:吉林大学
【学位级别】:硕士
【学位授予年份】:2015
【分类号】:TP338.6
【目录】:
- 摘要4-6
- Abstract6-11
- 第1章 绪论11-17
- 1.1 研究背景11-12
- 1.2 并行编译的发展及现状研究12-14
- 1.2.1 并行编译的发展12-13
- 1.2.2 并行编译国内外研究现状13-14
- 1.3 论文主要工作14-16
- 1.4 本章小结16-17
- 第2章 Clang 基础上的代码转换工具设计17-33
- 2.1 代码转换工具功能分析17-24
- 2.1.1 Intel 编译器的自动并行化17-18
- 2.1.2 PGI 高性能并行编译器18
- 2.1.3 Clang/LLVM 编译器18-20
- 2.1.4 LLVM 前端 Clang 编译模块分析20
- 2.1.5 词法分析20-21
- 2.1.6 语法分析21
- 2.1.7 语义分析21
- 2.1.8 中间代码生成21-24
- 2.2 串并源源转换方法的设计24-32
- 2.2.1 控制流图25-26
- 2.2.2 抽象语法树26-29
- 2.2.3 指针指向分析29
- 2.2.4 循环依赖关系29-30
- 2.2.5 循环依赖的种类30-31
- 2.2.6 循环依赖分析31-32
- 2.3 本章小结32-33
- 第3章 基于 Clang 的代码自动转换编译功能的概要设计33-38
- 3.1 CTMP 代码转换功能设计思路33-34
- 3.2 基于 Clang 的 CTMP 相关模块34-37
- 3.2.1 驱动参数34-36
- 3.2.2 LLVM 的静态分析模块36-37
- 3.3 本章小结37-38
- 第4章 CTMP 扩展功能设计与实现38-53
- 4.1 过程间分析设计38-41
- 4.2 循环拆分模块设计策略41-46
- 4.2.1 循环检测41-43
- 4.2.2 嵌套循环的拆解43-45
- 4.2.3 循环的拆解重组45-46
- 4.3 变量替换在 CTMP 中的应用策略46-48
- 4.4 代码生成功能的实现48-51
- 4.4.1 代码生成的相关表示48-50
- 4.4.2 代码生成主要方法50-51
- 4.5 本章小结51-53
- 第5章 实验及测试结果53-55
- 第6章 总结与展望55-57
- 参考文献57-59
- 作者简介及在学期间所取得的科研成果59-60
- 致谢60
【参考文献】
中国期刊全文数据库 前2条
1 夏军,杨学军,曾丽芳,周海芳;基于投影分层技术的嵌套循环空间局部性优化方法[J];计算机学报;2003年05期
2 赵捷;赵荣彩;丁锐;黄品丰;;基于嵌套循环分类的并行识别技术[J];软件学报;2012年10期
中国博士学位论文全文数据库 前1条
1 李倩;Java程序指向分析研究[D];南京大学;2012年
本文编号:931380
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/931380.html