基于GPU高性能并行算法研究.docVIP

  • 20
  • 0
  • 约4.24千字
  • 约 9页
  • 2018-07-03 发布于福建
  • 举报
基于GPU高性能并行算法研究

基于GPU高性能并行算法研究   随着计算机技术的发展,人们发现CPU有时候难以满足处理的需要,同时,人们发现了GPU(GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”)具有强大的处理能力,可以加强对GPU的使用。因此本文的研究目标是基于GPU的高性能并行算法。本文首先对并行计算和GPU进行简单的介绍,然后针对稀疏矩阵向量乘算法和空间最近邻搜索算法展开研究,利用GPU对这两个算法进行研究和实现,通过加速比来反应GPU的优良性能。   【关键词】GPU 高性能 并行算法 稀疏矩阵向量乘 空间最近邻搜索   GPU并行计算属于目前并行计算领域的一个新的分支,我们常见的并行计算有多线程,OpenMP[5]等等,它们都属于超负荷的使用CPU加快运算的速度。GPU并行计算是利用的图形处理器,也可以说是计算机上的显卡,充分的利用GPU的内部结构,加快运算的效率。目前,针对GPU并行计算,人们已经提出了很多的模型,甚至是开发平台,比如CUDA、OpenGL等。当前,产业界和学术界对GPU的并行计算都产生了很大的兴趣,甚至有人说,以后GPU必将取代CPU的存在。但是目前,能够被证明利用GPU达到高速计算的算法并不多,很多算法使用GPU并不如不使用GPU的效果好。因此,对GPU的研究更加迫切,证明那些算法,如何设计可以使用GPU得到最大的加速比是非常重要的。这不仅仅是学术研究的需要,同时对于工业界产业界都将发挥不可取代的作用。一旦GPU被证明可以取代CPU的地位,计算机界必将掀起再一次发展的高潮。本文针对GPU高性能并行算法进行研究,主要是对稀疏矩阵向量乘算法和空间邻搜索算法进行研究,通过一定的实验证明在GPU下的加速比,了解GPU的加速状况。   1 并行计算简介   并行计算是指在单位时间段内,同时执行多条数据计算和多条指令,可以充分的利用多个处理器单元。并行计算的提出是根据现实的需要,现实中,很多领域的数据利用传统的计算方法数据量非常大,计算很耗时,人们就思考,计算机能不能一次处理多个数据进行多次计算,然后就提出了并行计算。   2 GPU简介   GPU的体系架构在不停的更新,不同的体系架构必然要设计不同的模型才能进行并行加速操作。目前来说,GPU有存储器系统和可伸缩流处理器阵列两部分组成。可伸缩流处理器阵列都是有很多的线程处理器群组成,然后线程处理器群又有多个流处理器组成。流处理器都具有指令指针和寄存器,流多处理器有发射、取值、译码、执行单元等。目前多数GPU的体系结构如图1所示。   对于一般的计算机来说,GPU就是图形处理的一个硬件,计算机显示界面的效果,或者三维图片,视频播放效果的好坏都与GPU有关。GPU的主要工作其实是渲染图像和绘制图像。但是图像形态的生成、运动等图形处理操作还是由CPU所完成的。这就导致了CPU的工作量巨大,GPU长期处于空闲状态,没有被合理的利用。随着计算机行业的发展,GPU的体系结构也得到了进一步的改变,GPU开始适合于标准处理模式,大大简化了通用算法进行GPU并行计算的复杂程度。   下面本文将介绍基于GPU的高性能并行算法,通过对三种不同类型的算法的GPU并行计算,来展示GPU针对某些具体计算的并行计算效率。   3 基于GPU的稀疏矩阵向量乘算法研究   稀疏矩阵(矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律)与稠密矩阵(非0元素占所有元素比例较大的矩阵)不同,稠密矩阵可以采用m行n列的数组来存放数据即可,稀疏矩阵来说就不可以采用m行n列的数组来存放数据,因为这样就会浪费很多的存储单元和存储空间,增加计算的时间。对于稀疏矩阵来说,还有没一种统一的最好的存储结构来存储稀疏矩阵,通常都是根据稀疏矩阵不同的特征来确定具体的存储形式。   CSR(Corporate-Social-Responsibility)是一种存储没有规律的稀疏矩阵数据的形式,对于拥有q个元素的稀疏矩阵,采用CSR存储的话,要使用三个数组,一个是数组长度为q的数组Data,按行分为m段,一个是数组长度为q的列下标数组Indices,一个是数组长度为m+1的数组ptr,稀疏矩阵数组中的顺序号由该数组元素指向。CSR与其他稀疏矩阵的存储来比较,CSR具有相当好的空间效率,我们将采用该形式完成SPMV(Sparse Matrix-Vector Multiplication中文名稀疏矩阵向量乘)。   根据线程同步特性,一个线程块对应一行数据是比较适合GPU的内部结构的,但是每个线程块通常都有多个线程,当非零元素的个数不能与线程数匹配时,也会导致一些现成无事可做。结合GPU访问时,全局存储器合并的需要,我们采用Half-warp作为最小的单位,作为输入向量和稀疏矩阵一行相乘的

文档评论(0)

1亿VIP精品文档

相关文档