基于多核处理器的并行算法设计——以矩阵乘法为例

来源 :中国地质大学(武汉) | 被引量 : 0次 | 上传用户:swfcmoon
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
当前,由于科学技术的进步和人们生活水平的提高,对高性能计算提出了越来越高的要求。传统的超级计算机,虽然具有非常高的计算性能,但由于其价格昂贵,严重限制了其在高性能领域的应用范围。1990年以来分布式机群开始进入高性能计算领域,由于处理器和网络的性价比不断提升,这种技术开始变得流行,但是其复杂的机群算法设计、对于计算资源的利用不足和资源冗余的不足,使得其发展很受限,无法满足人们对高性能日益增长的需求。20世纪初,随着双核处理器的提出,普通计算机便开始进入了并行计算的时代。普通计算机上基于多处理器的并行计算的出现大大提升了单机的性能,可以向机群甚至是专用的高性能超级计算机想媲美。   计算机在计算数学领域的广泛应用,以及计算数学自身的发展,对计算要求提出了越来越高的要求,最终出现了并行计算。并行计算是高性能计算中涌现出来比较有代表性的高性能体系结构,是在上世纪六七十年代由于一些列复杂且实时性要求很高的问题中应运而生的,这向单核计算提出了挑战。并行计算的实质就是同时使用多个资源来解决某个复杂且实时性要求很高的问题。由于其价格价格低廉,易于编程,实现简单,越来越多的大型且复杂的计算问题都采用计算计算来解决,这其中包括数值计算和非数值计算问题。本文对并行计算的结构特点及其在高性能计算的优势进行简要的论述,并针对多核CPU和GPU两大类多核处理器在并行计算的应用进行了详细的论述。   许多科学计算问题最终都归结为矩阵乘法,比如天气预报系统,这是一种最常碰到同时也是最耗时的运算。矩阵乘法算法往往会是一些系统的性能的关键,提高效率具有很高的实用价值。因此本文将多核处理器应用于矩阵乘法,设计成并行算法,利用并行计算高性能优势优化该算法。   本文主要是根据矩阵乘法自身具有的并行特点来设计并行计算算法。针对矩阵乘法本身是每行与每列的对应相乘,而每个相乘的行与列之间没有直接的关联,因此这本身就是一种具有并行设计特性的算法。根据矩阵乘法的这一特点,本文对行与列进行并行乘法处理,再结合多核CPU和GPU各自结构的特点,设计了矩阵乘法并行算法设计。   多核CPU的芯片上集合了多个核心处理器,核心之间的距离较短,缩短了通信时间,提高了通信效率。片上资源的共享使得器件减少,这也降低了功耗。基于多核CPU的并行计算通过对任务的分解,将各个子任务集中于一个内核完成,最后将结果汇总到一个主处理器上。来保证每个子任务相对独立,但也能进行必要的通信。这样一来就解决了单个处理器存储器不足的问题,并且降低了并行算法设计的难度。   基于多核CPU的矩阵乘法并行计算主要是根据其多重循环及其分块相乘原理,进行了cache和寄存器分块设计。在cache级别进行分块设计中,主要是通过减少对cache的丢失率,提高数据的重复使用率,来提高算法的效率。由于寄存器的访问快于对cache的访问,因此本文在cache块的基础上设计寄存器分块,同样这也是为了提高数据重复使用率。但由于CPU中的寄存器个数通常很少,只能设计成很小的块来满足计算中重复读取的需要。同时本文还使用了intel的SSE技术,这种可以一次实现4个float数相乘的技术,可以方便的实现寄存器分块,同时也大大提高了算法的效率。文章通过Openmp技术来实现了矩阵乘法的并行计算,效率基本上是成倍的提高。   基于GPU的矩阵乘法并行计算主要就利用GPGPU的编程语言—CUDA来实现。GPU与CPU相比,处理器众多是其最大的特点。GPU通常是采取流处理器阵列和通用计算核心两种方式来排列,但是其没有控制能力,这就决定了其必须依赖CPU来程序执行,配合其自身强大的计算能力来进行并行计算。这种CPU控制和GPU计算的并行计算模式主要是利用CUDA语言来实现,这是C的扩展,同时也是GPU运算的架构。本文先介绍了GPU的体系结构以及存储器,阐述了GPU不同存储器的用途以及其的访问方法。接着着重介绍了GPU全新的CUDA架构的特点,主要对CUDA的存储结构和线程结构进行了详细介绍。对CUDA的三层存储结构即做了较为详细的阐述。CUDA的线程结构是按照网格、块和线程三个层次来设计的,这就可以方便的实现基于GPU的并行计算。   本文主要从矩阵乘法的并行程度以及存储器带宽两方面来优化矩阵乘法算法,通过CUDA并行分组、并行缩减和改善设备存储器的访问来提高矩阵乘法的效率。并行分组主要是利用GPU处理器众多的优势,而并行缩减类似基于多核处理器的cache分块,只是利用的是GPU中的共享存储器,同样是提高访问的命中率,同时也减少了主机与设备间的数据传输,提高了存储器的带宽。由于GPU的并行执行导致了设备存储器访问顺序的特别,这就要求改变访问顺序来适应设备存储器,这可以明显的提高存储器的访问带宽。   本文主要根据多核处理器的特点,对矩阵乘法进行了并行算法设计。针对多CPU和GPU之间的结构异同,分别进行了讨论,并就各自的特点,实现了矩阵乘法的并行计算,成功的优化了性能,体现出了多核处理器在高性能上的应用价值。
其他文献
随着电子商务在全球范围内持续繁荣,客户的需求变得日趋个性化,如何针对客户的个性化需求迅速制定精确的生产计划已成为传统的加工制造企业不得不面对的难题。针对这种离散制
精确的大气与动态云可视化可以为航天、航空和虚拟战场等领域的仿真应用提供逼真的虚拟环境,对仿真结果精度的提升具有重要的意义。可视化建模中的准确性与实时性一直都是矛盾
等离子体控制系统是托卡马克装置的一个子系统,是用来监视和控制包括等离子体形状、位置、电子温度、密度等在内的众多等离子体参数的软硬件系统。放电过程中产生的实验数据,以
物联网(IoT,InternetofThings)已成为当今信息技术领域世界关注的焦点问题,世界各主要国家纷纷加入到物联网的研究中,中国在物联网的研究方面与世界同步。无线射频识别技术(RFI
随着信息技术的发展,维文电子文档数目迅速增长,如何快速准确的从浩如烟海的电子文档中获得所需信息成为一个亟待解决的问题。文本分类是处理和组织维文电子文档的一项关键技术
随着近年来我国航天事业的快速发展,深空探测技术受到大家越来越多的关注。深空探测技术的研究对我国航天领域的持续发展有着非常重要的现实意义。与近地卫星轨道设计相比较,深
集成电路工艺的不断发展和体系结构设计复杂度的不断提高给处理器验证带来了越来越多的挑战。功能验证和性能验证是处理器验证中最重要的两类工作。功能验证是为了保证设计出
随着计算机技术的快速发展,计算机软硬件系统的规模也急速增大,系统中会出现较多的错误和设计缺陷,这给系统的可靠性验证带来较大的难度。此外,一些安全攸关的系统(如电子商务系统
三维空间规则数据场中等值面的构造是计算可视化的重要内容。现代科学计算所产生的数据呈现出了量大、抽象等特点,使人们很难直观形象地观察数据的属性特征。将等值面抽取应
软件测试是保证软件产品质量的重要手段。其中,如何生成最少的测试输入数据而能对程序进行最全面的测试,成为了人们研究的一个重要课题。测试方法主要分为动态测试和静态测试。