摘要 | 第4-5页 |
ABSTRACT | 第5-6页 |
第1章 绪论 | 第10-22页 |
1.1 课题背景及研究目的和意义 | 第10-11页 |
1.2 性能分析中的插桩技术介绍 | 第11页 |
1.3 国内外研究现状 | 第11-14页 |
1.4 实验对象CGPOP介绍 | 第14页 |
1.5 实验对象NPB介绍 | 第14页 |
1.6 实现平台编译框架LLVM的介绍 | 第14-15页 |
1.7 LLVM的静态分析与插桩技术 | 第15-18页 |
1.7.1 动态分析方法简介 | 第16页 |
1.7.2 静态分支概率技术 | 第16-17页 |
1.7.3 动态和静态方法的比较 | 第17-18页 |
1.8 高精度计时TSC | 第18-19页 |
1.9 使用到的一些基准测试 | 第19-20页 |
1.9.1 lmbench | 第19页 |
1.9.2 mpbench | 第19-20页 |
1.10本文的主要研究内容及组织结构 | 第20-22页 |
第2章 性能预测的方法和整体设计 | 第22-38页 |
2.1 术语和符号定义 | 第22-23页 |
2.2 计算模型建模 | 第23-25页 |
2.2.1 获取机器特征 | 第24页 |
2.2.2 获取程序特征 | 第24-25页 |
2.3 通信模型建模 | 第25页 |
2.4 生成DwarfCode的整体过程 | 第25-27页 |
2.5 基本块插桩部分 | 第27-33页 |
2.5.1 循环的基本块频率 | 第27-29页 |
2.5.2 视点 | 第29-30页 |
2.5.3 提升视点 | 第30-33页 |
2.6 通信插桩部分 | 第33-34页 |
2.7 删减过程 | 第34-35页 |
2.8 结合机器参数预测执行时间 | 第35-36页 |
2.9 本章小结 | 第36-38页 |
第3章 基于LLVM的关键系统实现 | 第38-63页 |
3.1 基本块插桩部分 | 第38-43页 |
3.1.1 寻找循环次数的实现 | 第38-42页 |
3.1.2 插入PredProfiling算法描述 | 第42-43页 |
3.2 通信插桩MPIProfiling算法描述 | 第43-44页 |
3.3 具体的删减过程 | 第44-58页 |
3.3.1 基于规则的依赖分析 | 第44-46页 |
3.3.2 定义的规则 | 第46-49页 |
3.3.3 定义的过滤 | 第49-53页 |
3.3.4 删减代码的方法 | 第53-58页 |
3.4 运行DwarfCode | 第58-59页 |
3.5 机器特征与模型求解 | 第59-61页 |
3.5.1 测量IR指令时间 | 第59-60页 |
3.5.2 获取MPI通信参数 | 第60页 |
3.5.3 获取库函数调用时间 | 第60页 |
3.5.4 计算时间 | 第60-61页 |
3.6 本章小结 | 第61-63页 |
第4章 实验结果与分析 | 第63-79页 |
4.1 实验平台介绍 | 第63页 |
4.2 目标平台的机器特征参数 | 第63-65页 |
4.3 单元实验 | 第65-69页 |
4.3.1 找到的循环次数 | 第65-66页 |
4.3.2 删减的结果比较 | 第66-69页 |
4.4 CGPOP实验过程 | 第69-77页 |
4.4.1 实验数据及分析 | 第70-74页 |
4.4.2 基本块误差 | 第74-75页 |
4.4.3 静态分支概率误差 | 第75-76页 |
4.4.4 预测代价与预测性价比 | 第76-77页 |
4.5 EP实验 | 第77-78页 |
4.6 本章小结 | 第78-79页 |
结论 | 第79-80页 |
参考文献 | 第80-83页 |
攻读硕士学位期间发表的论文及其他成果 | 第83-85页 |
致谢 | 第85页 |