|
摘要:
在信息化高速发展的今天,大数据爆发对传统的计算模式产生了巨大冲击。尤其在科研领域,有很多的面向科学计算的应用程序,它们的共性是都属于计算密集型的应用程序,当面对海量数据时传统的串行计算模式已不能满足它们快速求解、提升程序性能的需求,而且对硬件资源的利用率也非常低,这时就需使用并行计算技术来解决这样的问题。在超级计算机环境中更是如此,科学计算应用程序要想在由大规模硬件构成的超算平台上最大程度利用硬件资源、发挥最大性能,就需要利用并行计算技术对它们进行优化。并行计算是超算技术体系中的基础,实现并行计算也要依托硬件平台的支撑以及相应编程模型的支持。本文基于CPU和GPU两种硬件平台,并利用两种目前流行的并行计算技术解决两个实际问题,主要工作内容为:
(1)针对江门中微子实验的中心探测器事例重建过程模拟程序,基于CPU多核平台,采用OpenMP技术对该程序逐步实现并行化,最终实现相对原始串行版本程序43倍的运行速度与性能提升。
(2)针对高维度的矩阵相乘应用程序,基于GPU众核平台,采用NVIDIA CUDA框架对该程序进行异构平台移植,并逐步进行了优化改进,最终实现相对原始串行版本程序70倍的运行速度与性能的提升。
关键词:并行计算;CPU;OpenMP;GPU;CUDA
目录:
1 绪论 1
1.1 课题研究来源与目标 1
1.1.1 课题来源 1
1.1.2 课题目标 1
1.2 研究背景与意义 1
1.3 基于CPU和GPU并行优化技术的发展和研究现状 5
1.3.1 学术界研究 6
1.3.2 工业界研究 7
1.3.3 存在问题 8
1.4 论文研究内容 9
1.4.1 对基于CPU和GPU并行优化关键技术的研究 9
1.4.2 对特定科学计算应用程序进行并行优化改进 9
1.5 论文组织结构 9
1.6 本章小结 10
2 基于CPU和GPU并行优化关键技术概述 11
2.1 OpenMP并行优化技术 11
2.1.1 OpenMP简介 11
2.1.2 共享内存模型 12
2.1.3 OpenMP编译指导语句 12
2.1.4 OpenMP运行时库函数 14
2.1.5 OpenMP环境变量 15
2.1.6 OpenMP程序编译与运行 15
2.2 CUDA并行优化技术 16
2.2.1 CUDA简介 16
2.2.2 NVIDIA GPU支持CUDA的硬件实现 18
2.2.3 GPU存储器层次结构 20
2.2.4 CUDA线程组织模型 21
2.2.5 CUDA编程模型 22
2.2.6 CUDA扩展C语言之变量与函数类型限定符 23
2.2.7 CUDA内核函数与执行配置 25
2.2.8 CUDA运行时API与驱动API 26
2.2.9 CUDA程序编译与运行 26
2.3 本章小结 27
3 基于CPU并行优化探测器事例重建过程模拟程序 28
3.1 江门中微子实验物理背景介绍 28
3.2 JUNO中心探测器事例重建过程模拟程序的结构分析 29
3.3 使用VTune Amplifier对程序进行热点分析 31
3.4 对JUNO中心探测器事例重建过程模型程序进行优化 32
3.4.1 串行优化 32
3.4.2 原程序版本与串行优化版本程序性能对比 36
3.4.3 使用OpenMP进行并行优化 37
3.4.4 原始版本与最终优化版本性能对比 40
3.4.5 最终优化版本程序正确性验证 41
3.5 本章小结 42
4 基于GPU并行优化高维度矩阵相乘应用程序 43
4.1 研究高维度矩阵相乘算法并行化的意义 43
4.2 本章研究高维度矩阵相乘算法并行化的范畴 43
4.3 串行版本程序性能测试 44
4.4 使用CUDA技术对高维度矩阵相乘应用程序进行并行优化 45
4.4.1 CUDA软件环境配置 45
4.4.2 将原始版本程序的核心代码重构为kernel函数 46
4.4.3 实验确定线程块维度 48
4.5 使用共享内存优化CUDA版本程序 48
4.6 对共享内存CUDA版本程序进行for循环展开 51
4.7 各版本程序实验数据对比及结论 51
4.8 本章小结 53
5 基于CPU和GPU的并行优化技术总结 54
5.1 基于CPU的并行优化技术 54
5.1.1 基本技巧 54
5.1.2 进阶技巧 54
5.2 基于GPU的并行优化技术 55
5.2.1 基本技巧 55
5.2.2 进阶技巧 56
5.3 本章小结 57
6 总结与展望 58
6.1 工作总结 58
6.2 工作展望 59
6.3 自我感受 59
参考文献 60
致谢 62
外文文献 63
中文翻译 71
论文字数:36224
包含资料:
截图:
百度网盘下载地址(金币充值):
游客,本付费内容需要支付 100金币 才能浏览 支付
|
|