SPMD程序移植及优化技术研究
摘要 | 第4-6页 |
Abstract | 第6-7页 |
第一章 绪论 | 第15-29页 |
1.1 课题研究背景 | 第15-18页 |
1.2 研究内容 | 第18-19页 |
1.3 研究现状及问题 | 第19-27页 |
1.3.1 研究现状 | 第20-24页 |
1.3.2 关键问题 | 第24-27页 |
1.4 论文的主要工作和创新 | 第27-28页 |
1.5 论文组织 | 第28-29页 |
第二章 SPMD模型抽象及移植框架 | 第29-42页 |
2.1 SPMD编程模型形式化描述 | 第29-30页 |
2.2 GPU、CUDA与SPMD | 第30-37页 |
2.2.1 GPU与CUDA | 第31页 |
2.2.2 CUDA编程模型 | 第31-35页 |
2.2.3 CUDA存储器模型 | 第35-36页 |
2.2.4 CUDA执行模型 | 第36-37页 |
2.3 SPMD移植框架 | 第37-41页 |
2.3.1 CPU和GPU代码分离 | 第38-40页 |
2.3.2 CPU代码翻译 | 第40页 |
2.3.3 GPU代码翻译 | 第40-41页 |
2.3.4 代码合成模块 | 第41页 |
2.4 总结 | 第41-42页 |
第三章 SPMD程序移植中的任务模型映射 | 第42-68页 |
3.1 问题的提出 | 第42-45页 |
3.1.1 多核架构上的任务分配 | 第42-44页 |
3.1.2 任务映射的选择 | 第44-45页 |
3.2 线程映射模型 | 第45-49页 |
3.2.1 构造线程循环 | 第45-46页 |
3.2.2 深度分裂 | 第46-49页 |
3.3 隐式同步的处理 | 第49-60页 |
3.3.1 隐式同步及其带来的问题 | 第49-52页 |
3.3.2 基于依赖分析的隐式同步检测 | 第52-54页 |
3.3.3 隐式同步的处理 | 第54-58页 |
3.3.4 实验测试 | 第58-60页 |
3.4 基于同步的优化 | 第60-66页 |
3.4.1 代码变换 | 第60-61页 |
3.4.2 运行时环境 | 第61-62页 |
3.4.3 优化 | 第62-65页 |
3.4.4 实验测试 | 第65-66页 |
3.5 总结 | 第66-68页 |
第四章 SPMD程序移植中的存储模型映射 | 第68-85页 |
4.1 问题的提出 | 第68-69页 |
4.1.1 多核架构的存储层次 | 第68-69页 |
4.1.2 PTX中间表示 | 第69页 |
4.2 存储映射 | 第69-71页 |
4.2.1 映射原则 | 第69页 |
4.2.2 映射策略 | 第69-71页 |
4.3 基于区域优先级的寄存器分配算法 | 第71-84页 |
4.3.1 寄存器分配背景 | 第71-73页 |
4.3.2 矩阵填充模型描述 | 第73-76页 |
4.3.3 寄存器分配算法 | 第76-78页 |
4.3.4 变量溢出和恢复位置优化 | 第78-81页 |
4.3.5 实验及分析 | 第81-84页 |
4.4 总结 | 第84-85页 |
第五章 SPMD程序移植中的向量化 | 第85-99页 |
5.1 问题的提出 | 第85-89页 |
5.1.1 SIMD指令集 | 第87页 |
5.1.2 数据并行程序 | 第87-88页 |
5.1.3 谓词执行与if转换 | 第88-89页 |
5.2 基本的函数级向量化方法 | 第89-93页 |
5.2.1 循环简化 | 第89页 |
5.2.2 变量分析 | 第89-90页 |
5.2.3 掩码生成 | 第90-91页 |
5.2.4 选择生成 | 第91-92页 |
5.2.5 CFG线性化 | 第92-93页 |
5.2.6 指令向量化 | 第93页 |
5.3 改进的if转换 | 第93-96页 |
5.3.1 谓词的代价 | 第93-94页 |
5.3.2 当前的改进研究现状 | 第94-95页 |
5.3.3 改进的if转换技术 | 第95-96页 |
5.4 实验 | 第96-97页 |
5.4.1 实验平台 | 第96-97页 |
5.4.2 测试方法 | 第97页 |
5.5 总结 | 第97-99页 |
第六章 分歧、汇聚与标量分析及优化 | 第99-108页 |
6.1 问题的提出 | 第99-100页 |
6.1.1 分歧的产生 | 第99页 |
6.1.2 影响移植效率的因素 | 第99-100页 |
6.2 相关研究 | 第100-102页 |
6.3 控制依赖图构建 | 第102-103页 |
6.4 综合的汇聚和标量分析 | 第103-105页 |
6.4.1 检测初始化 | 第103-104页 |
6.4.2 检测算法 | 第104-105页 |
6.5 等距向量分析 | 第105页 |
6.6 实验测试 | 第105-107页 |
6.6.1 汇聚识别率测试 | 第105-106页 |
6.6.2 标量化能力测试 | 第106-107页 |
6.6.3 性能提升测试 | 第107页 |
6.7 小结 | 第107-108页 |
第七章 移植系统实现及分析 | 第108-117页 |
7.1 移植环境介绍 | 第108-109页 |
7.1.1 源平台 | 第108-109页 |
7.1.2 目标平台 | 第109页 |
7.2 移植系统的实现 | 第109-113页 |
7.2.1 前端分析 | 第109页 |
7.2.2 中间处理 | 第109-110页 |
7.2.3 后端代码生成 | 第110页 |
7.2.4 一个具体的实现:矩阵转置 | 第110-113页 |
7.3 移植系统整体测试及分析 | 第113-117页 |
7.3.1 测试用例 | 第113-114页 |
7.3.2 测试方法 | 第114页 |
7.3.3 测试结果与分析 | 第114-117页 |
第八章 结论 | 第117-119页 |
一、论文工作总结 | 第117-118页 |
二、下一步研究工作展望 | 第118-119页 |
致谢 | 第119-120页 |
参考文献 | 第120-129页 |
作者简历 | 第129-130页 |