多线程多SIMD自动向量化技术研究
发布时间:2022-10-11 18:34
当前,主流通用微处理器都已经实现了多核并行以及处理器核内的SIMD并行。多线程并行且每个线程尽可能地利用SIMD并行是充分开发此类微处理器性能的必然选择。多核多SIMD体系结构的发展需要与之相适应的编程模型和编译优化技术。本文研究多线程多SIMD并行下的自动向量化技术。OpenMP编程接口和编译实现是广泛使用的多线程并行机制,典型编译器都可以在支持OpenMP并行的同时实现面向SIMD的自动向量化,但是效果还不是很理想。本文首先介绍了面向SIMD并行的自动向量化技术,基于GCC编译器剖析了自动向量化编译框架,并详细分析了自动向量化的实现过程。其次,通过对典型并行循环的测试分析,发现GCC目前已支持多种多线程并行下的自动向量化,但是对于一些赋值类循环,编译结果显示不能进行自动向量化。之后,针对GCC编译器的OpenMP编译实现和自动向量化编译实现,本文分析了OpenMP编译实现过程,着重分析了GCC编译器的自动向量化代价模型。自动向量化代价模型抽象出了自动向量化所要考虑的诸多因素。通过分析,发现GCC中自动向量化及代价模型对多线程程序的数据对齐属性判断不准确,导致自动向量化代价模型对多线...
【文章页数】:73 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
第一章 绪论
1.1 多核多SIMD体系结构
1.1.1 多核体系结构
1.1.2 SIMD体系结构
1.1.3 多核多SIMD体系结构
1.2 多线程多SIMD编程模型和编译优化技术
1.2.1 并行编程模型
1.2.2 自动向量化技术
1.3 国内外研究现状
1.4 研究内容及意义
1.4.1 研究内容
1.4.2 研究意义
1.5 论文结构
第二章 自动向量化技术
2.1 自动向量化
2.1.1 基于循环的自动向量化
2.1.2 基于基本块的自动向量化
2.2 GCC的编译结构
2.2.1 GCC的中间表示
2.2.2 Tree-SSA优化框架
2.3 GCC的自动向量化
2.3.1 循环分析
2.3.2 循环变换
2.4 本章小节
第三章 多线程多SIMD自动向量化
3.1 多线程多SIMD自动向量化
3.2 GOMP
3.3 GCC的自动向量化代价模型
3.3.1 最小有收益迭代数
3.3.2 语句表达式的开销
3.3.3 向量化因子
3.3.4 向量迭代的内部开销
3.3.5 向量循环的外部开销
3.3.6 剥离的迭代数
3.3.7 标量迭代的内部开销
3.3.8 标量循环的外部开销
3.4 GCC的自动向量化局限性
3.5 本章小节
第四章 基于数据对齐属性指导的GCC自动向量化优化
4.1 数据对齐属性指导子句的设计
4.2 数据对齐属性指导子句的实现
4.2.1 前端分析
4.2.2 GENERIC表示转换为GIMPLE表示
4.2.3 OpenMP结构降低
4.2.4 OpenMP代码扩展
4.2.5 基于数据对齐属性指导的代价计算
4.3 本章小节
第五章 实验与分析
5.1 实验环境
5.2 实验验证
5.2.1 中间表示的转换
5.2.2 实验结果
5.3 实验效果及分析
5.4 本章小节
第六章 结束语
6.1 工作总结
6.2 工作展望
致谢
参考文献
作者在学期间取得的学术成果
【参考文献】:
期刊论文
[1]基于数据对齐属性指导的GCC自动向量化优化[J]. 李春江,黄娟娟,徐颖,董钰山. 计算机工程与科学. 2014(06)
[2]基于编译指示的向量化方法[J]. 姚远,赵荣彩. 计算机工程. 2012(12)
本文编号:3691079
【文章页数】:73 页
【学位级别】:硕士
【文章目录】:
摘要
ABSTRACT
第一章 绪论
1.1 多核多SIMD体系结构
1.1.1 多核体系结构
1.1.2 SIMD体系结构
1.1.3 多核多SIMD体系结构
1.2 多线程多SIMD编程模型和编译优化技术
1.2.1 并行编程模型
1.2.2 自动向量化技术
1.3 国内外研究现状
1.4 研究内容及意义
1.4.1 研究内容
1.4.2 研究意义
1.5 论文结构
第二章 自动向量化技术
2.1 自动向量化
2.1.1 基于循环的自动向量化
2.1.2 基于基本块的自动向量化
2.2 GCC的编译结构
2.2.1 GCC的中间表示
2.2.2 Tree-SSA优化框架
2.3 GCC的自动向量化
2.3.1 循环分析
2.3.2 循环变换
2.4 本章小节
第三章 多线程多SIMD自动向量化
3.1 多线程多SIMD自动向量化
3.2 GOMP
3.3 GCC的自动向量化代价模型
3.3.1 最小有收益迭代数
3.3.2 语句表达式的开销
3.3.3 向量化因子
3.3.4 向量迭代的内部开销
3.3.5 向量循环的外部开销
3.3.6 剥离的迭代数
3.3.7 标量迭代的内部开销
3.3.8 标量循环的外部开销
3.4 GCC的自动向量化局限性
3.5 本章小节
第四章 基于数据对齐属性指导的GCC自动向量化优化
4.1 数据对齐属性指导子句的设计
4.2 数据对齐属性指导子句的实现
4.2.1 前端分析
4.2.2 GENERIC表示转换为GIMPLE表示
4.2.3 OpenMP结构降低
4.2.4 OpenMP代码扩展
4.2.5 基于数据对齐属性指导的代价计算
4.3 本章小节
第五章 实验与分析
5.1 实验环境
5.2 实验验证
5.2.1 中间表示的转换
5.2.2 实验结果
5.3 实验效果及分析
5.4 本章小节
第六章 结束语
6.1 工作总结
6.2 工作展望
致谢
参考文献
作者在学期间取得的学术成果
【参考文献】:
期刊论文
[1]基于数据对齐属性指导的GCC自动向量化优化[J]. 李春江,黄娟娟,徐颖,董钰山. 计算机工程与科学. 2014(06)
[2]基于编译指示的向量化方法[J]. 姚远,赵荣彩. 计算机工程. 2012(12)
本文编号:3691079
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/3691079.html