流处理器核心技术的应用研究
VIP免费
流处理器核心技术的应用研究
摘 要
流处理器是近年来出现的一种起源于媒体图形处理的高性能处理器,它一
般采用大规模的运算阵列和多级存储,通过片内并行并结合面向媒体特征的指
令,实现对应用计算的高性能支持,其代表芯片包括 Imagine 、Merrimac、RAW
、Cheops 、TRIPS 、SCORE 、Cell 以及 FT64 等。流处理器已经在数字处理、多媒体
以及图像等领域得到了广泛应用。
CUDA(Compute Unified Device Architecture)是在 GPU 上进行计算的新
基础架构,它将 GPU 作为一种真正通用的数据并行计算设备,它可以使用 GPU
来解决商业、工业以及科学方面的复杂并行计算问题。它是一个完整的 GPU 解决
方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形 API
接口来实现 GPU 的访问,它给大规模的数据计算应用提供了一种比 CPU 更加强
大的计算能力。
通过查阅和阅读 CUDA 技术文献,对 CUDA 技术进行深入学习和研究:
1. 本文首先探讨了 CUDA 编程结构,其中包括 CUDA 的执行过程,CUDA 的运算
单元,CUDA 和主存储器间的数据传输,CUDA 的软件架构,CUDA 的编程模型。
2. 其次根据 CUDA 编程结构的特性,以实际科学计算中经常用到的矩阵乘法算
法作为实验,从内存存取的优化、共享内存的优化、线程块的优化三个角度
分别对该算法进行程序优化,通过实验结果总结了 CUDA 程序的优化原则。
3. 再次依据 CUDA 技术的特点,研究复杂网络计算同步的应用实例,建立环状
自相似结构复杂网络模型,确定进行同步的计算方法,构建复杂网络同步计
算模型。将该模型中抽象出的可以并行执行的数据集合,使用二分算法映射
到 CUDA 上执行计算。
4. 最后对小区固定电话用户复杂网络进行数值仿真计算,通过实验结果对并
行程序和串行程序进行数值对比,验证了 CUDA 在并行计算上的性能优势。
关键词:流处理器 并行计算 复杂网络应用
ABSTRACT
Stream Processor is the origin of the media of a high-performance graphics processors
in recent years, which generally use the large-scale computing and multi-level storage
array through the parallel-chip and media-oriented features of the Directive, to
achieve support high-performance computing applications. On behalf of chips
including Imagine, Merrimac, RAW, Cheops, TRIPS, SCORE, Cell and FT64 so on.
Stream Processor has been in data processing, multimedia, as well as images and
other fields has been widely applied.
CUDA (Compute Unified Device Architecture) is a new infrastructure which
calculated on the GPU, it makes GPU as a truly universal data parallel computing
devices, it can use the GPU to address the commercial, industrial and scientific
aspects of the issue of the complexity of parallel computing. It is a complete solution
of GPU to provide direct access to hardware interfaces, like the traditional way
without having to rely on the same graphics API interface to achieve GPU's visit,
which a large-scale data to provide a more powerful than the CPU computing power.
According to access and read the CUDA technology literature, for CUDA technology
to conduct an in-depth study and research:
1.At first this article introduce CUDA programming structure, including the CUDA
implementation, CUDA computing unit, CUDA and between the main memory
data transfer, CUDA software architecture, CUDA programming model.
2.Second followed by CUDA programming in accordance with the characteristics
of the structure to the actual scientific computing are often used as a matrix
multiplication algorithm experiment, from the memory access optimization, the
optimization of shared memory, thread pieces of the optimization of the three
angles The algorithm for process optimization through experimental results
summed up the principle of CUDA optimization process.
3.Third based on the characteristics of CUDA technology to study the complexity
of network computing application synchronization, the establishment of circular
self-similar structure of the complex network model to determine the calculation
of synchronization, to build complex network computing model synchronization.
The model can abstract out the implementation of the data set in parallel, the use
of the second sub-mapping algorithm to perform a calculation of CUDA.
4.Finally plot a complex network of fixed telephone subscribers to carry out
numerical simulation by the experimental results of parallel programming and
serial numerical comparison procedures to verify the CUDA parallel computing in
the performance advantages
Key Word :Stream Processor, Parallel Computing, Complex Network
Application
目 录
摘 要
ABSTRACT
目 录
第一章 绪 论......................................................1
§1.1 研究历史背景.............................................1
§1.2 研究现状.................................................5
§1.3 论文工作.................................................6
第二章 流体系结构..................................................7
§2.1 流处理思想...............................................7
§2.2 流编程模型...............................................8
§2.3 GPU 的流处理特征..........................................9
§2.4 流处理器的优缺点........................................11
第三章 CUDA 介绍..................................................13
§3.1 CUDA 的背景介绍..........................................13
§3.2 支持 CUDA 的 GPU 产品......................................16
§3.3 具有片上共享缓存的一组SIMD 多处理器.....................17
§3.4 PTX并行线程执行模型.....................................18
§3.5 CUDA 的执行过程..........................................20
§3.6 CUDA 的运算单元..........................................20
§3.7 CUDA 和主存储器间的数据传输..............................21
§3.8 CUDA 的软件架构..........................................21
§3.8.1 NVCC C 编译器......................................21
§3.8.2 Host 端程序与Device 端程序.........................22
§3.8.3 软件执行模型的特点.................................24
§3.9 CUDA 编程模型............................................25
§3.9.1 高度多线程协处理器.................................25
§3.9.2 线程批处理.........................................25
§3.9.3 协作线程阵列.......................................26
§3.9.4 协作线程阵列的线程格...............................26
§3.9.5 编程模型的特点.....................................27
§3.10 CUDA 的应用前景.........................................27
第四章 CUDA 程序的改进............................................29
§4.1 实验算法................................................29
§4.2 实验环境................................................29
§4.3 内存存取的优化..........................................30
§4.4 共享内存的优化..........................................36
§4.5 线程块的优化............................................38
§4.6 程序优化结论............................................42
§4.6.1 CUDA 共享缓存的读取优化............................42
§4.6.2 CUDA 全局内存的读取优化............................44
§4.6.3 CUDA 纹理内存的读取优化............................45
第五章 复杂网络同步计算的分析......................................47
§5.1 应用背景................................................47
§5.2 问题描述................................................48
§5.3 复杂网络同步计算模型的分析..............................49
§5.3.1 复杂网络的分解.....................................49
§5.3.2 复杂网络同步计算的分析.............................50
第六章 固定电话用户网络同步计算在 CUDA 的实现......................55
§6.1 复杂网络构建与算法分析..................................55
§6.2 数据结构定义............................................58
§6.3 初始装载过程............................................61
§6.4 线程分配................................................61
§6.4.1 单环复杂网络线程的分配.............................61
§6.4.2 多环复杂网络线程的分配.............................62
§6.5 内核启动................................................65
§6.6 同步计算算法描述.........................................65
§6.6.1 间隔的细分.........................................67
§6.6.2 特征值计数的计算...................................69
§6.7 数据返回.................................................70
第七章 CUDA 程序与串行程序性能对比................................72
§7.1 实验环境................................................72
§7.2 仿真数值计算结果及其分析................................72
第八章 总结和展望.................................................74
§8.1 全文总结................................................74
§8.2 未来展望................................................75
参考文献...........................................................76
第一章 绪论
第一章 绪 论
现在计算机图形处理器(GPU,Graphical Processing Unit)高速发展,
随着图形处理器性能的大幅度提高以及可编程特性的发展,人们逐渐开始不仅
仅用图形处理器处理图形渲染类的流水线计算,而更多的让其应用于通用计算。
由于图形图像的渲染需要高强度的并行计算,因此流处理器的体系结构就
是为计算密集型处理而设计,它具有数量庞大的运算单元、鲜明的存储层次结构
由于总线技术的进步,PCI-E 接口的出现,从而可以得到更高的片外带宽,更
多的晶体管被用于数据处理而不是数据存储与流控制,而其本身高的本地带宽
更适用于满足大规模的运算单元阵列的需求,因此流处理器又被称为计算密集
型处理器。
流处理器特别适合处理那些可以具有较高算法强度且可以被表达为并行数
据计算的问题[1],即同样的程序如果通过细分成众多数据元素的并行执行,会
具有较高的算术操作与存储操作之比。进行数据的并行处理,把数据元素映射、
规划为数以千计的并行处理线程。很多通用计算应用程序都有一个较大的数据集
就可以通过数据并行编程模式来加速他们的执行。这些通用计算应用程序包括:
地震模拟,计算生物学,选择商业风险计算,医学成像,模式识别,信号处理
物理仿真等。
§1.1 研究历史背景
对于把计算机图形处理器应用于通用计算技术,是目前科学研究的热点问
题。在 NVIDIA 公司发布 GT200 系列显示芯片之后,基于计算机图形处理器的通
用计算更加受到了人们的关注。而且Intel 公司也发布声明,声明其下一代独立
显卡 Larrabee 有十分超强的通用计算能力。
在 2003 年,Intel 和 AMD 就都在为生产出性能强大的处理器而努力。由于这
两大芯片公司的激烈竞争,在短短几年的时间里,处理器的主频时钟速度有了
显著的提升。尤其是到了 Intel 的 Pentium 4 推出的时候,处理器的时钟频率提
升到了一个前所未有的高度。
但是随着制造工艺技术的制约,这种时钟频率的提升很快就碰到了壁垒。从
2001 年至2003 年,Pentium 4 处理器的时钟频率从最初的 1.5GHz 提升到了
3GHz。然而从 2003 年到 2005 年,整整 2 年的时间里,处理器的时钟频率提升的
速度骤然放缓,只是从 3GHz 增加到 3.8GHz。
后来 Intel 公司充分的优化了处理器的架构,使之可以运行在更高的频率
上,Prescott 核心就是这种新处理器架构的代表。但是时钟频率的限制不只局
限于工业制造技术的方面,而且局限于最简单最基本的物理定律的壁垒。摩尔定
律描述了有关在一定面积内的晶体管的集成度。长期以来,处理器晶体管集成度
的提高都伴随着性能的提升和时钟频率的提高。因此随着处理器架构的革新,晶
体管的集成度也越来越高,其局限性也越来越明显。此时计算机图形处理器却迎
来了前所未有的发展,显示核心比 CPU 更适用摩尔定律。
CPU 的架构设计与计算机图形处理器完全不同。处理器的设计宗旨就是要从
指令流中得到最高的处理效能。因此处理器的设计使用了很多附加的措施,例如
将数据分为浮点、整数等不同的数据类型,嵌入随机存储装置,使用分支预测技
1
流处理器核心技术的应用研究
术等等。而好的处理器架构就能在同一时间处理更多条指令,就是指程序的并行
处理。由此,Pentium 处理器中引入了超标量执行的概念,例如每个时钟周期可
以处理 2 条指令。而在 Pentium Pro 处理器中,又引入了 out-of-order 乱序执
行的概念。为了更好的利用执行单元,处理器可以乱序执行指令,从而进一步提
高指令处理的效能。但是问题出现在指令流是连续的,它会大大制约并行执行单
元的效率。因此随意的在处理器中增加并行执行单元是毫无用处的,因为这些并
行执行单元可能在绝大多数时间处于空闲状态。这也是目前困扰多核心处理器的
一大问题。
而计算机图形处理器在执行时的工作原理就相对简单。它的工作就是要生成
一组多边形,同时产生一组像素填充到多边形中去。多边形和像素之间的处理操
作是独立的,因此可以使用并行处理的思想,在处理流水线中尽可能的加入更
多的并行执行单元来加快处理的速度。从而计算机图形处理器就会有更多的执行
处理单元处于忙碌状态,这会比 CPU 具备更高的处理效能。
计算机图形处理器与CPU 另一个不同之处就是记忆体。GPU 与显存之间的联
系十分紧密。当GPU 要读取一个材质单元时,需要使用几个时钟周期读取临近的
材质单元。并且当写入一个像素的时候,也需要花费几个时钟周期参考临近的单
元。这种机制对于内存来说是非常有利的,因此它可以更加合理的利用显存带宽
计算机图形处理器与CPU 不同之处在于,GPU 不需要庞大的高速缓存。缓存的目
的仅是加速材质的处理速度。
长期以来 CPU 与计算机图形处理器是完全两个独立处理部分。使用 CPU 来进
行办公、互联网浏览等应用。而计算机图形处理器是为了更快的绘制出立体的图
像。后来对计算机图形处理器处理新的理念的出现,改变了传统的独立处理。这
就是计算机图形处理器具备了可编程性。第一款被称作可编程的计算机图形处理
器是 NVIDIA 公司研发的 NV20芯片,就是 Geforce3 系列。它能够处理的程序指
令非常有限,大约在 10条左右,另外它所能处理的数据类型也非常之有限,只
能处理 9bit 或12bit 固定长度的数据。
当NVIDIA 公司研发的NV30芯片发布的时候,摩尔定律再次得到了印证,
不仅晶体管数量增加,计算单元的数量也成倍增长。同时这也使得显卡芯片更具
灵活性。因此 NVIDIA 的 NV30 具备许多革命性的突破,就是它使计算机图形处理
器看上去不仅仅是一个图形加速器。
从NV30芯片开始,计算机图形处理器开始支持单精度浮点运算,只是它并
不完全支持 IEEE754标准。另外它支持超过数以万记的指令处理。这一特点使得
计算机图形处理器可以通过一些途径找到突破芯片生产工艺技术的壁垒,制造
出性能更为强大的芯片。
使用图形加速器的架构设计思想,运用到数学计算中去,这种设计思想在
20世纪 90 年代就已经产生。这是只是简单的利用基于计算机图形处理器硬件布
线级别的功能,比如利用光栅和Z-buffers 来计算弹道轨迹或绘制 Voronoi 图
表。这是对计算机图形处理器最为原始的通用计算应用实例。Voronoi 图,又叫
泰森多边形或Dirichlet 图,它是由一组由连接两邻点直线的垂直平分线组成
的连续多边形组成。N个在平面上有区别的点,按照最邻近原则划分平面;每个
点与它的最近邻区域相关联。Delaunay三角形是由与相邻Voronoi 多边形共享
一条边的相关点连接而成的三角形。Delaunay三角形的外接圆圆心是与三角形
相关的Voronoi 多边形的一个顶点。Voronoi 三角形是 Delaunay图的偶图。
在 2003 年,计算机图形处理器架构设计中又出现了另一个新的概念——
2
第一章 绪论
Shader。这里计算机图形处理器的硬件已经可以进行通用的矩阵计算。在此后的
1 年时间里,SIGGRAPH美国计算机绘图专业组一直致力于 GPU 通用计算方面的
研究工作。由此他们率先提出了一个名为 GPGPU 的概念,意思是具有通用计算用
途的 GPU。后来在 2003 年年底,第一个通用计算程序 BrookGPU 发布。
BrookGPU 是斯坦福大学开发的一个科研项目,它展现出计算机图形处理器
的强大计算性能,虽然目前 GPU 尚不能完全取代 CPU,但是这个编译器为计算机
图形处理器模拟CPU 的一般应用提供了一个运行环境。BrookGPU 是一个编译器
和实时系统,可以为当前GPU 提供简单的类似 C 的编程环境。这个编程环境运行
在NVIDIA GeForce FX 5900 Ultra 的 shader 程序运算速度可达20 GFLOPS,相
当于 10GHz 的 Pentium 4,而且图形系统的内存带宽为 25.3 GB/sec,相比较
Pentium 4 只有 5.96 GB/sec。
在 2003 年,要想发挥计算机图形处理器的运算优势,只有两种图形 API 可
供选择:Direct3D 或 OpenGL。因此开发人员想利用计算机图形处理器强大的计
算能力就需要学习这些图形 API 的用法。但是进行计算机图形处理器通用计算开
发的开发人员一般并不是专业的绘图开发人员。这对于他们来说是一项非常严密
而复杂的技术。需要熟悉 3D 应用程序中的 Shader 着色单元、材质单元、帧等等各
种各样的概念。另外还要精通并行处理程序方面的技术例如:流处理,内核,分
布式计算,集群计算等等。所以一个难点就是类比计算机图形处理器和 CPU 之间
的差异,在两个完全不同的处理架构,寻找到相似的、共通的东西。
stream 流——可以把数据抽象成会数据流,数据流会在计算机图形处理器
中不断的流入流出。计算机图形处理器使用纹理来描绘出场景。而在普遍的 CPU
编程中,可以将它类比成一个数组。
kernel 内核——它的功能将适用于每一个独立的 stream 流。它相当于是
pixel shader 像素着色单元。它能够实现一个非常典型的程序内部循环,它适
合处理较长较大的数据。
从一个应用程序的内核中的流读取执行结果,这一步就相当于在材质单元
中进行渲染。因为处理器中并没有渲染这个概念,因此这可以看作是对内存的访
问。控制本地内存的写入地点,即分散操作。这可以使用 vertex shader 顶点着
色单元来完成,因为 pixel shader 像素着色单元在处理时,不能修改像素的坐
标值。
Brook程序制定了一套基于 C 语言的扩展指令集——“C with streams”。
Brook的目的就是将所有的 3D API 都封装起来,在应用程序中,充分的发挥计
算机图形处理器的并行处理能力,协助CPU 完成繁重的计算任务。因此 Brook带
有一个编译器,以*.br 文件包含有C++代码和扩展代码,并且可以生成标准的
C++代码。它不会受到其他3D API 的限制,可以适用于多种 3D API。无论是
DirectX、OpenGL ARB、OpenGL NV3x 还是x86。
Brook具备几个技术优势,首先是使用 GPU 做通用计算不再困难。现代处理
器越来越看重并行处理效能,它们的内部集成了越来越多的处理核心,同时还
在不断扩展着多线程技术和 SIMD(单指令多数据)处理单元。而目前的计算机
图形处理器朝着更庞大,更灵活的方向发展。计算机图形处理器开始支持单精度
浮点运算,开始支持整数运算,很快就将充分支持双精度计算。GPU 将吸纳 CPU
的功能,成为一个数学协处理器,而且Intel 和 AMD 公司都在紧张的致力于这
方面的研究。
Brook最初的优势就是要普及 GPGPU,不让3D API 限制 GPU 的应用。Brook
3
流处理器核心技术的应用研究
技术大大简化了 GPU 通用计算,但 Brook 仍然有很多不足,需要更多的完善,
它才能使 GPU 通用计算成为可以信赖的高效能计算技术。
目前 Brook发展所面临的问题不是跨API,跨平台方面的技术性瓶颈。它面
对了多样的 3D API,要将所有的 API 都整合到一起,所需的工作量相当庞大。
但是随着 3D 技术的不断发展,真正的问题还是兼容性。由于各大计算机图形处
理器制造厂商之间的竞争,制造厂商都会在计算机图形处理器中加入自己的特
色技术,从而会产生各种不同版本的驱动程序。微软公司研发的 DirectX API 也
没有在硬件方面完全统一过规格。针对游戏而优化的专门驱动,可以让游戏执行
的更佳快速,而这些对于 Brook的开发环境,兼容性问题就会产生。因此要统一
计算机图形处理器通用计算的 API 就会非常困难。因此长期以来,Brook 仍然只
是应用在开发人员和研究人员中,没有得到更广泛的普及。
Brook至今仍未不普及的主要原因,就是它并没有得到研发力量ATI 和
NVIDIA 公司的足够重视。因为这两个公司都关注了新的技术,在新技术背后蕴
含着更为广阔的研究前景。由此在Brook的研究基础上,在美国 Santa Clara 的
开发团队,与 NVIDIA 公司的开发工程师一起,进行了这个全新领域的研究工作。
结果是提供一套软件和硬件相结合的整体高性能计算解决方案——CUDA。
§1.2 研究现状
高性能计算,数据库技术的成熟,数据挖掘应用,生物基因技术的发展,历
史数据的几何级膨胀等要求高性能计算(High Performance Computing,HPC)。
虽然通过创建分布式系统可以解决部分大型计算的问题,但是分布式系统有通
信开销大,故障率高;数据的存取结构复杂,开销大;数据的安全性和保密性
较难控制等弱点。随着计算机处理器,特别是 GPU 计算能力的飞速提高,高性能
计算逐步进入桌面(低端)领域,因此进一步探讨并行编程模型与并行编程等
软件技术。
计算机图形处理器具有强大的计算能力,早期的3D游戏,显卡只是为屏幕
上显示像素提供一个缓存,所有的图形处理都是由CPU 单独完成。图形渲染适合
并行处理,擅长于执行串行工作的 CPU 不能执行这项任务。直到 1995 年,PC 机
领域第一款GPU 3dfx Voodoo 出来以后,游戏的速度、画质才取得了一个飞跃 。
GPU 的功能更新很迅速,平均每一年多便有新一代的计算机图形处理器诞生,
运算速度也越来越快。
计算机图形处理器做通用计算的概念,最早还是由ATI 公司所提出来,早
在 2006年9月的 Radeon X1000 时代,ATI 与斯坦福大学相关科研人员合作,开
发了首款使用 GPU 浮点运算能力做非图形渲染的软件——Folding @ Home 第一
代 GPU 运算客户端。
首款专门作流处理/并行计算的 GPU 产品并不是 NVIDIA 公司发布的 Tesla
芯片,而是 ATI 公司发布的 FireStream 芯片。早在 2006 年,ATI 就发布了基于
R580 核心的流处理加速卡,48个像素渲染单元成为流处理器的雏形 。后来
Tesla 芯片的 G80 核心成为高性能及并行计算的代名词,因此专门针对并行计算
设计的 Tesla 芯片显示出高性能的计算能力。
4
摘要:
展开>>
收起<<
流处理器核心技术的应用研究摘要流处理器是近年来出现的一种起源于媒体图形处理的高性能处理器,它一般采用大规模的运算阵列和多级存储,通过片内并行并结合面向媒体特征的指令,实现对应用计算的高性能支持,其代表芯片包括Imagine、Merrimac、RAW、Cheops、TRIPS、SCORE、Cell以及FT64等。流处理器已经在数字处理、多媒体以及图像等领域得到了广泛应用。CUDA(ComputeUnifiedDeviceArchitecture)是在GPU上进行计算的新基础架构,它将GPU作为一种真正通用的数据并行计算设备,它可以使用GPU来解决商业、工业以及科学方面的复杂并行计算问题。它是一个...
相关推荐
-
跨境电商商业计划书模版VIP免费
2025-01-09 27 -
跨境电商方案范文VIP免费
2025-01-09 14 -
创业计划书VIP免费
2025-01-09 18 -
xx生鲜APP计划书VIP免费
2025-01-09 12 -
跨境电商创业园商业计划书(盈利模式)VIP免费
2025-01-09 8 -
跨境电商计划书VIP免费
2025-01-09 13 -
绿色食品电商平台项目计划书VIP免费
2025-01-09 22 -
农产品电子商务商业计划书VIP免费
2025-01-09 9 -
农村电商平台商业计划书VIP免费
2025-01-09 13 -
生鲜商城平台商业计划书VIP免费
2025-01-09 21
作者:高德中
分类:高等教育资料
价格:15积分
属性:72 页
大小:2.57MB
格式:DOC
时间:2024-11-19

