基于流处理器编程模型和集群架构的研究

VIP免费
3.0 牛悦 2024-11-19 4 4 6.43MB 86 页 15积分
侵权投诉
I
摘 要
今天,GPU 作为可编程通用流处理器的代表,其性能飞速发展,已经打破 CPU
发展所遵照的摩尔定律。而且,GPU 利用其可编程性和功能扩展性来支持复杂的
计算和处理,这个特性已经得到业界的公认。在架构上,主流 GPU 都是采用统一
的流体系架构,并且实现了细粒度的线程间通信,大大扩展了通用领域的应有范
围。因此,基于 GPU 的通用计算模型的研究也成为当今研究的焦点。
NVIDIA CUDA 编程模型的出现使基于 GPU 的通用计算GPGPU得到了突
破性的发展,传统 GPGPU Cg Brook+编程模型慢慢将退出历史的舞台。利用
GPU 大规模的线程级并行处理能力,可以将 GPU 作为计算的通用计算平台;通过
构建高性能集群系统,可以提供更高性能的科学计算能力。
本论文主要工作如下:
1) 深入研究了基于 NVIDIA GPU 的流编程模型 CUDA
2) 对基Tesla 硬件架CUDA 硬件映射机制SIMT 执行模型、多层存
储器技术、异步执行模式等的一系列 CUDA 技术进行了剖析;
3) 以控制和计算相分离的思想为前提,提出了不同于传统 x86 集群系统的流
处理器集群架构。并从 MKSDMulti-Kernels Single Data,多 Kernel 单数据流)
MKMDMulti-Kernels Multi-DataKernel 多数据流)两种并行模式上探
流处理器集群系统的设计模式;
4) 采用 MPI+CUDA 混合编程模型和通用流处理程序装载模型,分离了流处
理器集群的控制和计算,优化了对多数据流处理策略,使得流处理器集群系统较
传统 x86 集群系统拥有数倍性能的提升。
关键词:流处理器 GPU 编程模型 CUDA 技术 流处理器集群
II
ABSTRACT
Today, GPU as a representative of programmable general-purpose stream
processors, its developing performance is rapid, and the Moore's Law, according to
which CPU is developing, has been broken. Moreover, GPU makes use of its
programmability and scalability features to support complex computing and processing,
and this feature has been recognized by industry. In architecture, the mainstream GPU is
based on the unified stream architecture, and achieved a fine-grained inter-thread
communication, greatly expanded the application scope in the general field. Therefore,
the research on GPU based general-purpose computing model has become one of the
focuses of today’s research.
The emergence of NVIDIA CUDA programming model make general-purpose
GPU-based computing has been a breakthrough development. Cg and Brook +
programming model of traditional GPGPU will be gradually withdrawn from the
historic stage. Take full advantage of a large-scale thread-level parallelism processing
ability of GPU to provide general-purpose computing platform of the computing with
GPU; constructing high-performance cluster system, which can provide more
high-performance scientific computing ability.
The major works of this paper can be listed as follows:
1) The paper has an in-depth research on NVIDIA GPU-based stream
programming model.
2) Analyzed a series of the CUDA Technology including the CUDA mapping
mechanism for the Tesla hardware architecture, SIMT execution model,
multi-memory technology, asynchronous execution mode etc.
3) According to the precondition for the idea that separate control from computing,
this paper proposed a stream processor cluster that be different from the
traditional x86 architecture. Explore stream processor cluster system designing
patterns from two kinds of parallel patterns that MKSD (Multi-Kernel Single
Data) and MKMD (Multi-Kernel Multi-Data,).
4) Through the use of hybrid MPI + CUDA programming model and general
stream processing program loading model, we have separated stream processor
clusters control from compute, optimized processing strategy for multi-stream,
made the stream processor cluster system than the traditional x86 cluster
III
system has several times performance improved.
Key WordsStream ProcessorGPU Programming ModelCUDA
TechnologyStream Processor Cluster
IV
目 录
中文摘要
ABSTRACT
第一章 绪论 .....................................................................................................................1
§1.1 引言 ....................................................................................................................... 1
§1.2 多核并行 ............................................................................................................... 1
§1.3 课题来源及意义 ................................................................................................... 2
§1.3.1 CPU 多核并行 ................................................................................................2
§1.3.2 CPU 多核到 GPU 众核 .............................................................................3
§1.3.3 从超级计算机、集群与分布式计算到流处理器集群 .................................3
§1.4 论文的主要工作和组织结构 ............................................................................... 4
第二章 NVIDIA GPU 流计算硬件架构 .........................................................................6
§2.1 使GPU 成为高性能可编程流处理器的关键 ..................................................... 6
§2.2 Tesla 计算架构 ......................................................................................................7
§2.2.1 计算单元 .........................................................................................................9
§2.2.2 流多处理器 SM............................................................................................10
§2.2.3 理论性能的计算 ...........................................................................................12
§2.3 本章小结 ............................................................................................................. 12
第三章 GPU 通用计算技术 ..........................................................................................13
§3.1 GPU 通用计算 .................................................................................................... 13
§3.2 传统 GPGPU 开发的困难 .................................................................................. 14
§3.3 CUDA 编程模型 .................................................................................................15
§3.3.1 主机和设备代码的分离技术 .......................................................................15
§3.3.1.1 nvcc 编译器 ...........................................................................................16
§3.3.2 Kernel 函数两层并行技术 ...........................................................................17
§3.3.3 线程的组织结构及管理技术 .......................................................................18
§3.3.4 CUDA 硬件映射技术 .................................................................................. 20
§3.3.5 SIMT 执行模型 ............................................................................................ 20
§3.3.5.1 SIMT SIMD 的不同 ......................................................................... 22
§3.3.5.2 分支预测对 SIMT 执行效率的影响 .................................................... 22
§3.4 CUDA 多层存储技术 .........................................................................................22
§3.4.1 寄存器的使用 ...............................................................................................24
§3.4.2 局部内存技术 ...............................................................................................24
§3.4.3 共享内存技术 ...............................................................................................25
§3.4.4 全局内存技术 ...............................................................................................25
§3.4.5 常量内存技术 ...............................................................................................25
§3.4.6 数据加载/回收技术 ..................................................................................... 26
§3.5 CUDA 线程通信技术 .........................................................................................27
§3.5.1 GPU 线程同步函数 ......................................................................................27
V
§3.5.2 Kernel 间通信技术 .......................................................................................27
§3.5.3 CPU GPU 线程的共同同步机制 ............................................................28
§3.6 CUDA 异步执行技术 .........................................................................................28
§3.6.1 异步执行机制 ...............................................................................................28
§3.6.2 ...................................................................................................................28
§3.6.3 异步执行的意义 ...........................................................................................30
§3.7 本章小结 ............................................................................................................. 30
第四章 MKSD 流处理器集群架构设计及构建 .......................................................... 31
§4.1 基于流处理器的集群架构模型 ......................................................................... 31
§4.2 传统集群节点与流处理器集群节点 ................................................................. 32
§4.3 MPI+CUDA 混合编程技术 ............................................................................... 34
§4.3.1 消息传递接口 MPI ...................................................................................... 34
§4.3.2 CUDA 技术 .................................................................................................. 34
§4.3.2.1 典型 CUDA 应用程序一般执行流程 .................................................. 35
§4.3.2.2 任务的划分 ............................................................................................35
§4.3.2.3 线程的设置与流处理器的分配 ............................................................36
§4.3.3 MPI+CUDA 混合编程模型 .........................................................................38
§4.3.4 MPI CUDA 的初始化 ............................................................................. 39
§4.3.5 MPI 通信的消息数据组织结构 .................................................................. 40
§4.4 流处理器集群的构建 ......................................................................................... 41
§4.4.1 硬件环境 .......................................................................................................41
§4.4.2 软件环境 .......................................................................................................42
§4.4.3 集群性能测试 ...............................................................................................42
§4.5 本章小结 ............................................................................................................. 44
第五章 MKMD 流处理器集群系统设计及相关实验 .................................................45
§5.1 通用流处理程序装载模型 ................................................................................. 45
§5.1.1 设计目的 .......................................................................................................46
§5.2 集群系统整体布局 ............................................................................................. 46
§5.3 系统功能需求 ..................................................................................................... 47
§5.3.1 主控机功能需求 ...........................................................................................47
§5.3.2 从机功能需求 ...............................................................................................49
§5.4 系统数据流图 ..................................................................................................... 50
§5.5 集群系统相关处理策略 ..................................................................................... 53
§5.5.1 开发及运行环境 ...........................................................................................53
§5.5.2 缓冲池的设计 ...............................................................................................53
§5.5.3 主控机接收/发送策略 ................................................................................. 54
§5.5.4 从机数据处理策略 .......................................................................................55
§5.6 数据结构定义 ..................................................................................................... 56
§5.6.1 主控机缓冲池的数据结构映射 ...................................................................56
§5.6.2 视频质量指标计算结果数据类型 ...............................................................57
§5.6.3 任务类型数据结构 .......................................................................................57
VI
§5.7 流处理任务类型表的设计 ................................................................................. 58
§5.8 通信配置表的设计 ............................................................................................. 58
§5.9 通信协议的设计 ................................................................................................. 60
§5.9.1 有名通道 0上的协议 ...................................................................................60
§5.9.2 Socket 通信协议 ...........................................................................................60
§5.10 多流多 Kernel 执行的实验与分析 .................................................................. 61
§5.10.1 实验目的 .....................................................................................................61
§5.10.2 Kernel 启动模式 .........................................................................................61
§5.10.2.1 多线程 Kernel 启动模式 .....................................................................61
§5.10.2.2 Kernel 异步启动模式 ..........................................................................62
§5.10.3 数据流的加载/回收模式 ........................................................................... 62
§5.10.3.1 同步模式 ..............................................................................................62
§5.10.3.2 异步模式 ..............................................................................................62
§5.10.4 实验环境 .....................................................................................................62
§5.10.5 实验策略 .....................................................................................................63
§5.10.6 实验结果与分析 .........................................................................................63
§5.10.6.1 单流无数据装载/同构 Kernel .............................................................63
§5.10.6.2 单流无数据装载/异构 Kernel .............................................................64
§5.10.6.3 单流有数据装载/同构 Kernel .............................................................64
§5.10.6.4 多流异步数据装载/同构 Kernel .........................................................66
§5.10.6.5 流的规模对性能的影响 ......................................................................68
§5.10.7 数据装载 I/0 性能的提升 .......................................................................... 71
§5.10.7.1 Linux 内存文件系统 ........................................................................... 71
§5.10.7.2 I/O 性能测试实验 ............................................................................... 72
§5.11 本章小结 ........................................................................................................... 74
第六章 总结与展望 .......................................................................................................75
§6.1 结论 ..................................................................................................................75
§6.2 展望 ..................................................................................................................75
§6.2.1 对于非规则流的更好支持 .......................................................................75
§6.2.2 基于流模型的多核调度 ...........................................................................76
§6.2.3 流处理器集群节点间的通信机制 ...........................................................77
§6.2.4 通用邻域的发展 .......................................................................................77
参考文献 .........................................................................................................................78
在读期间公开发表的论文和承担科研项目及取得成果 .............................................81
.........................................................................................................................82
第一章 绪论
1
第一章 绪论
§1.1 引言
随着流体系结构日渐成熟,比如以 Imagine[6][22]为代表的专用流体系结构[1][2]
TRIP RAW 为代表的的通用流体系结构[2]还有众所周知 CELL 处理器[5]
它为代表的更复杂的专用流体系结构等,加之流处理、流计算等技术的发展,以
图形处理器GPU为代表的通用流处理器[3]凭借着普及度高、价格大众化、
算能力强等特点,已悄然走进人们的视线。对于基于 GPU 的计算技[3],将有可
能替代集群计算技术成为高性能计算的主流技术。充分利用 GPU 大规模线程级并
行处理能力,可以将 GPU 作为计算加速处理器为基CPU 的通用计算平台提
供高性能的科学计算能力补充、辅助,甚至取代,这样可以在现有通用计算平台
的基础上实现高性价比的高性能计算 HPC 解决方案。
§1.2 多核并行
并行是一个广义的概念,根据实现层次的不同,可以分为几种方式。如图 1.1
所示,最微观的是单核指令级并行(ILP,让单个处理器的执行单元可以同时执
行多条指令:向上一层是多核(multi-core)并行,即在一个芯片上集成多个处理
器核心,实现线程级并行TLP;再往上是多处理器multi-processor并行,在
一块电路板上安装多个处理器,实现线程和进程级并行;最后,可以借助网络实
现大规模的集群或者分布式并行,每个节点(node)就是一台独立的计算机,
现更大规模的并行计算。
1.1 并行层次图
基于流处理器编程模型和集群架构的研究
2
伴随着并行架构的发展,并行算法也在不断成熟与完善。从历史上看,并行
算法研究的高峰是在 20 世纪七八十年代。这一阶段,出现了很多采用不同互连架
构和存储器模型的 SIMD 机,以及许多优秀的并行算法,在整个并行算法研究历
史上谱写了辉煌的一页。20 世纪 90 年代中期以后,并行算法的研究更加注重面向
应用,不但研究并行算法的设计与分析,也兼顾并行机体系结构和并行应用程序
的设计[4]
§1.3 课题来源及意义
§1.3.1 CPU 多核并行
在过去 20 年间,IntelAMD 等厂家推出的 CPU 性能在不断提高,但发展速
度与 20 世纪 80 年代末 90 年代初的飞跃相比,已经不能相提并论。按照摩尔定律,
18~24 个月芯片上可集成的晶体管数量就会翻倍,这一速度带来了处理能力和
速度的飞速增长[1][2]CPU 提高单个核心性能的主要手段是提高处理器的工作频
率,以及增加指令级并行。这两种手段都遇到了问题:随着制造工艺的不断提高,
晶体管的尺寸越来越接近原子的数量级,漏电流问题愈加显著,单位尺寸上的能
耗和发热也越来越大,使得处理器的频率提高速度越来越慢。另一方面,通用计
算中的指令级并行并不多,因此费尽苦心设计获得的性能提高与投入的大量晶体
管相比,显得很不划算。使用流水线可以提高指令级并行,但更多更深的流水线
可能导致效率问题,例如,Intel Pentium 4 架构中有更长的流水线,但运算性能
还不及同频的 Pentium III为了实现更高的指令级并行,就必须用复杂的猜测执行
机制和大块的缓存保证指令和数据的命中率。现在 CPU 的分支预测正确率已经达
到了 99%以上,没有什么提高余地。缓存大小对 CPU 的性能有很大影响,过去低
端的赛扬和主流的 Pentium 处理器用于计算的单元基本一样,主要区别就在于缓存
大小。但是继续增加缓存大小,最多也就是让真正用于计算的少量执行单元满负
荷运行。其次主频的高低也决定了 CPU 的性能,而这些措施带来的将是系统发热
问题日趋突出,系统功耗不断上升这一唯一结果,这显然无助于 CPU 性能的进一
步提高。
由于上述原因限制了单核 CPU 性能的进一步提高,因此,近年来 CPU 技术的
发展采取了新的思路,主频提高的步伐放慢,而提高处理器并行处理能力逐步成
为主要技术思路。CPU 设计已全面采用多线程多核体系结构,在单块芯片内集成
更多的处理核心,每个核心也都使用了超标量、超级流水线、超长指令字、
SIMD
超线程、分支预测等手段,双核已成为 CPU 的主流产品,4CPU 产品也已经大
第一章 绪论
3
规模批量生产,预计 2008 年和 2010 年将可能推出 8核和 32 核产品,而英特尔前
期推出的 Polaris 原型芯片已经包含了 80 个核,CPU 正向多核方向发展。
§1.3.2 CPU 多核到 GPU 众核
在传CPU 由单核向多核发展的技术路线以外,当前活跃的基于 GPU 的通
用计算技术,这一新的技术发展路线可能代表着未来高性能计算技术发展的重要
方向与趋势。它主要应用图形处理芯片(GPU)的高性能并行处理能力实现科学
计算。实际上,目前开始流行于通用 CPU 的多核技术,已经在 GPU 中广泛应
很长一段时间了,GPU 与生俱来就是一种众核并行处理器[9][10][11],在处理单元的
数量上还要远远超过 CPU
CPU 相比,GPU 拥有数十乃至上百个核心的众核。因此,基于 GPU
的流编程模型得以发展并广泛应用。GPU 计算软件开发中的一个重要特点就是流
编程模型。
流体系结构是近年来提出的一种源于媒体处理的高性能体系结构[1] [2]这种结
构针对流媒体应用的计算、访存和通信特征,采用大规模的运算阵列和多级存储
体系结构,通过显式管理片上数据移动来隐藏访存和通信延迟,大幅度提高计算
效率,但需要采用流编程模型实现串行程序的流并行处理。而现有流编程模型,
诸如斯坦福大学开发的 Brook[6]MIT 开发的 StreamIt 等虽然都是当前比较成熟的
编程模型,但编译效率低下、只能单一使用像素着色器进行运算、缺乏有效的数
据通信手段使之不能很好地适用于其它的数据并行类应用领域,如科学计算,数
字信号处理,网络安全等,而今基于 NVIDIA Tesla 通用计算模型的 CUDA
Compute
Unified Device Architecture[8]编程模型简化了基于流编程模型的软件开发工作,
使得流编程模型更具可扩展性,GPU 正式走上了高性能计算的舞台,作为计算
加速器对 CPU 的高性能计算补充、甚至取代,对于它的研究是当前国际上的热点
研究问题。
§1.3.3 从超级计算机、集群与分布式计算到流处理器集群
超级计算机一般指在性能上居于世界领先地位的计算机,通常有成千上万个
处理器,以及专门设计的内存和 I/O 系统。它们采用的架构与通常的个人计算机有
很大区别,使用的技术也随着时代和具体应用不断变动。尽管如此,超级计算机
PC 的关系仍然十分紧密。一部分超级计算机使用的处理器在 PC 市场上也能找
到;而超级计算机使用的一些技术,SIMD 向量机、多核处理器,以及处理器
摘要:

I摘要今天,GPU作为可编程通用流处理器的代表,其性能飞速发展,已经打破CPU发展所遵照的摩尔定律。而且,GPU利用其可编程性和功能扩展性来支持复杂的计算和处理,这个特性已经得到业界的公认。在架构上,主流GPU都是采用统一的流体系架构,并且实现了细粒度的线程间通信,大大扩展了通用领域的应有范围。因此,基于GPU的通用计算模型的研究也成为当今研究的焦点。NVIDIACUDA编程模型的出现使基于GPU的通用计算(GPGPU)得到了突破性的发展,传统GPGPU的Cg和Brook+编程模型慢慢将退出历史的舞台。利用GPU大规模的线程级并行处理能力,可以将GPU作为计算的通用计算平台;通过构建高性能集群...

展开>> 收起<<
基于流处理器编程模型和集群架构的研究.pdf

共86页,预览9页

还剩页未读, 继续阅读

作者:牛悦 分类:高等教育资料 价格:15积分 属性:86 页 大小:6.43MB 格式:PDF 时间:2024-11-19

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 86
客服
关注