CN103049241B - 一种提高cpu+gpu异构装置计算性能的方法 - Google Patents

一种提高cpu+gpu异构装置计算性能的方法 Download PDF

Info

Publication number
CN103049241B
CN103049241B CN201310028325.6A CN201310028325A CN103049241B CN 103049241 B CN103049241 B CN 103049241B CN 201310028325 A CN201310028325 A CN 201310028325A CN 103049241 B CN103049241 B CN 103049241B
Authority
CN
China
Prior art keywords
gpu
multiplicand
multiplier
cpu
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310028325.6A
Other languages
English (en)
Other versions
CN103049241A (zh
Inventor
李清都
胡明
杨芳艳
唐宋
冯鑫
胡诗沂
徐桂兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongyuan power intelligent robot Co., Ltd
Original Assignee
Chongqing University of Post and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN201310028325.6A priority Critical patent/CN103049241B/zh
Publication of CN103049241A publication Critical patent/CN103049241A/zh
Application granted granted Critical
Publication of CN103049241B publication Critical patent/CN103049241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

本发明涉及计算机高性能计算领域,提供一种提高CPU+GPU异构装置计算精度的方法,使大规模多精度运算在基于CPU+GPU的异构装置上获得加速。本发明的技术方案是:先利用CPU将所有乘数与被乘数传入GPU中;接着GPU每个线程块独立并行处理一对多精度乘法,同时每对乘法在各线程块内并行执行运算和并行进位;最后将结果整理后传回CPU内存,得出计算结果。本发明实现了大量计算任务的GPU并行处理,大幅提高了计算性能。

Description

一种提高CPU+GPU异构装置计算性能的方法
技术领域
本发明涉及计算机高性能计算领域,是一种提高CPU+GPU异构装置计算精度的方法。
背景技术
在数据加密解密、建筑仿真验证、科研可靠计算等领域,常常用到大规模的多精度数值计算。由于涉及的数值位数,远大于目前计算机处理器CPU硬件精度(最高只有64bit或128bit),因此需要在硬件精度的基础上进行扩展。传统的解决方案主要依靠CPU的串行处理,在计算速度方面受到处理发展的制约,有较大的局限性,已经不能满足日益增大的计算需求。
因此,利用GPU配合CPU进行大规模数据处理也逐渐出现,如:2012年5月30日授权的中国发明专利申请第200910088372.3所提出的基于GPU众核平台的矩阵并行转置方法,其基本思路是根据矩阵转置后的模型建立的索引,利用GPU多个线程并行工作,对二维矩阵每个元素同时转置,降低了传统遍历整个矩阵转置的时间。2011年9月28日授权的中国发明专利申请第201010107317.7所提出的实现GPU运算提高DR图像处理速度的方法,其基本思想是读取原始医学图像数据,用图像边缘像素对原始医学图像进行扩展和补齐,通过CUDA函数库对扩展和补齐的原始医学图像数据以及卷积核进行FFT变换和变换后矩阵乘法加速,提出了一种简易、低成本的医学影像处理方法。2012年3月21日授权的中国发明专利申请200910226769.4所提出的利用CPU和GPU协同工作对三角线性方程组求解的加速方法,技术方案是根据三角线性方程组A×X=α×B,为了提高A-1×B求解速度,将B矩阵按照切割比例K切割成B1和B2,使CPU和GPU分别并行计算A-1×B1和A-1×B2,实现CPU和GPU重叠计算,达到良好的负载平衡效果。
综上所述,CPU+GPU协作处理,可大幅度提高工作速度,是未来的计算设备的发展趋势。本专利所解决的问题是提高CPU+GPU异构装置计算精度,加速海量数据的多精度乘法运算,而这些研究目前未见到相关文献报道。
发明内容
本发明要解决的问题在于:针对现有技术平台计算速度等问题,本发明提出一种基于CPU+GPU异构装置,实现计算单元与相关存储器的合理分配与调度,解决大规模乘法计算精度和高效并行地处理最终结果的问题。
本发明解决上述技术问题的技术方案是,提出一种提高CPU+GPU异构装置计算精度的方法,发明内容如下:
CPU端接收M对N位被乘数和乘数输入并保存,M个被乘数分别标识为A1、A2……AM,M个乘数分别标识为B1、B2……BM;在CPU端控制流程包括GPU端空间分配、线程块模型设定、数据传输、启动和停止:⑴根据CPU端被乘数和乘数大小设定GPU端接收被乘数和乘数空间DA和DB;⑵根据乘法运算的个数设置线程块的个数和维数,根据被乘数和乘数位数设置线程个数和位数,在此我们设定线程块个数等于乘法运算的个数M,线程数等于被乘数和乘数位数N;⑶同时,为了提高运行速度,使用GPU端线程块的共享存储器,即在CPU端为GPU端每个线程开辟原始数据大小2倍的复数组共享存储区域;⑷CPU将所有的乘数与被乘数通过PCI总线分批异步传输至GPU全局存储器;⑸准备完成,启动GPU端,使GPU完成乘法对运算;启动GPU端后,GPU作为处理器,在GPU中,每个线程块负责一对乘法运算,同时每个线程块对单个乘法运算执行并行处理,GPU将并行处理获得的数据写回全局存储器;最后CPU端将全局存储器中的结果分批异步传输至CPU内存。因为每个线程块独立完成一个乘法运算,通过大量的线程块并行工作,就能实现大规模乘法运算。
并行处理具体为:每个线程块内并行:将DA、DB中的被乘数和乘数以N位分段进行切割,将切割的一对被乘数和乘数按传输到一个线程块共享存储器上,在每个线程块内部,对共享存储器上的被乘数和乘数进行FFT变换;对同一线程块变换后的乘数和被乘数,各子线将乘数和被乘数对应元素相乘,得到的乘积仍然存放于共享存储器,共享存储器中的乘积分别在各自的线程块内进行IFFT变换。并行进位处理:取各个共享存储器IFFT变换后元素实部并取整,按Ns分段,Ns满足显卡线程束的整数倍,一个线程控制一段数据,每一个线程从各段首元素开始循环执行:保留当前元素对所选进制X的余数并将其倍数加到下一个元素,令下一个元素为当前元素;直到当前元素小于所选进制X并且循环次数不小于每段元素个数为止。
本发明充分利用CPU与GPU的性能优势,根据CPU与GPU异构融合,通过核心计算任务并行化和向GPU转移,从而提供一种低延迟、高性能的多精度计算方法,可为具有大规模多精度的硬件装置提高计算能力。本发明技术优势如下:
本专利发明所涉及的异构计算装置,只需具备CPU和有运算能力的GPU等基本硬件即可,可以是一台有通用显卡的计算机、也可以是含CPU+GPU融合单芯片处理器的智能终端,具有移植性强、成本低廉、易于维护等优点;采用并行方式,将乘法运算并行求解,结果分段进位,大幅提高了处理速度。传统的多精度乘法通常采用CPU串行处理的方式,由于CPU频率受硅工艺的制约,内核数有限,因此这种方式在大规模计算任务时效率较低、性价比不高。而GPU内核数有数千之多,并行处理能力可达CPU的百倍。通过本发明提供的并行化多精度乘法方法,可以大幅提高效率和性价比;采用分批异步传输方式可隐藏传输延迟,使CPU与GPU各自任务并行执行;充分利用计算单元的高速缓存,降低读写冲突,进一步提高执行效率。
附图说明
图1本发明流程图;
图2进位并行处理实现流程图;
图3 CPU+GPU异构装置图。 
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步详细说明。
按照图3异构装置,可以是一台有通用显卡的计算机、也可以是含CPU+GPU融合单芯片处理器的智能终端。CPU作为控制器,包含对GPU端控制部分和数据存储部分;GPU作为处理器,包含存放数据的全局存储器和多个线程块,每个线程块可独立并行执行,其中每个线程块包含独立的共享存储器和多个线程,每个线程可以并行执行。在图3的异构装置上,按照图1流程,图1为本发明流程图,包括如下主要步骤:⑴CPU端接受用户需要计算M对N位乘法的被乘数和乘数,即内存上M个被乘数A1、A2……AM和M个乘数B1、B2……BM;⑵CPU端作为控制器,包含GPU端全局存储器和共享存储器规划(即图3CPU控制部分1)、规划GPU计算单元(即图3CPU控制部分1)和控制数据传输(即图3CPU端控制部分2),存储器规划包括:开辟与被乘数和乘数等大的存储空间,即DA1、DA2……DAM,DB1、 DB2……DBM;开辟被乘数和乘数原始大小2倍的共享存储器内复数组a和b,并初始化为零;规划GPU计算单元(为GPU端设定网格结构)包括:根据乘法运算的个数设置线程块的个数和维数,如设置线程块为一维,个数等于乘法对个数M;根据被乘数和乘数位数设置线程个数和维数,如线程设置为一维,线程个数等于被乘数和乘数位数N;控制数据传输包括将被乘数和乘数分批异步传输到GPU端全局存储器,DA1存放A1,DB1存放B1,以此类推,DAM存放AM,DBM存放BM;⑶启动GPU端进行计算(如图3控制部分3),此时GPU端作为处理器,每个线程处理一对多精度乘法,如图3将被乘数DA1和乘数DB1每一位分别放到0号线程块共享存储器复数组a和b前N位元素的实部,以此类推,被乘数DAM和乘数DBM的每一位分别放到M号线程块共享存储器复数组a和b前N位元素的实部;⑷每个线程块中,复数组a和b,完成FFT变换,按照DIT-FFT变换,级间串行执行,级内并行实现蝶形运算;⑸对变换后的复数组a和b,按照数组对应元素复数相乘,结果仍存放于复数组a中;⑹对⑸中相乘后的复数组a实现IFFT变换,采用与⑷相同方法完成;⑺根据图2进位并行处理流程图做进位处理,即对⑹中复数组a实部取整,按Ns分段,其中,Ns为满足显卡线程束的整数倍,一个线程控制一段数据,每一个线程从各段首元素开始循环执行:保留当前元素对所选进制X的余数并将其倍数加到下一个元素,令下一个元素为当前元素;直到当前元素小于所选进制X并且循环次数不小于每段元素个数为止;⑻等待每个线程块中所有线程完成后,将⑺中并行进位的结果拷贝到全局存储器中,终止GPU端工作,CPU端将GPU端全局存储器中结果传输到CPU端内存,显示计算结果。
以一具体实例说明。
设求解:A1×B1=C1,A2×B2=C2,…,A2000×B2000=C2000,其中Ai、Bi为512位16进制。
步骤1)在CPU端(主机端)2000对512位被乘数和乘数,被乘数分别标识为A1、A2……A2000,乘数分别标识为B1、B2……B2000
步骤2)CPU端(主机端)作为控制器,规划GPU端(设备端)中全局存储器、共享存储器、线程块维数和个数、线程维数和个数。开辟原始数据等大的全局存储空间DA1……DA2000、DB1……DB2000接收CPU端被乘数和乘数;线程块设置成一维,大小有乘法对数决定,即大小为2000;线程设置成一维,大小由乘法对 数据位数决定,即本例中512;在GPU共享存储器中,分别创建长度为数据位数两倍2N即1024、初值为0的复数数组a和b共享存储器区域;
步骤3)在CPU端通过PCI总线将被乘数和乘数分批异步传输到GPU全局存储器中,在全局存储器中乘法对数据也标记为A1,A2,…,A2000和B1,B2,…B2000
步骤4)启动GPU,GPU端作为处理器;
步骤5)在GPU端,将全局存储器中每对被乘数和乘数拷贝到对应编号的线程块的共享存储器开辟的复数组a和b中,即任意一个线程块i,读取全局存储器中Ai和Bi的第j位数,并分别存放于共享存储器中复数组a和b的第j个元素的实部;
步骤6)对每块共享存储器中复数组a和b做FFT变换,按照传统DIT-FFT模型,级间串行,级内并行完成蝶形计算,变换结果仍放回原位,直到完成所有变换;
步骤7)在每个线程块中并行实现共享存储器中复数组a与b的对应元素的复数相乘,结果存于共享存储器复数组a中,即a[j]=a[j]×b[j];
步骤8)对复数组a,各线程块内做IFFT变换,变换结果存于共享存储器复数组a中;
步骤9)对每块共享存储器复数组a实部取整后得数组ar,按Ns分段原则,即Ns满足显卡线程束的整数倍,所以可选择Ns=64,将ar分为长度为16位的64段,根据一个线程控制一段原则,采用本线程块的前64个子线程,分别从每段的段首元素开始并行进位处理。每个线程执行以下循环:保留当前元素对16(进制)的余数并将其倍数加到下一个元素,并令下一个元素为当前元素;直到当前元素小于16(进制)并且循环次数大于等于16(段长)为止。当每个线程块所有线程进位处理完毕后,将第i线程块中ar的实部拷贝回全局存储器Ci
步骤10)GPU端完成操作,退出GPU端。将全局存储器结果C1,C2,…,C2000分批异步传回CPU内存,C1,C2,…,C2000分别为每个乘法对相乘结果,显示结果,。
本发明采用并行方式,将结果分段进位,大幅提高了处理速度。针对总处理长度为2N,按NS等间隔分段的情况,本发明中的进位处理循环次数的均值为2N/NS+K,大量数值仿真可以验证,K约为5。而对于传统串行地进行进位处理方 式,进位处理需要循环2N-1次。例如、在N=1024、Ns=64时,可得本发明的速度可提高53.868倍;在方法构架上,传统的多精度乘法通常采用CPU串行处理的方式,由于CPU频率受硅工艺的制约,内核数有限,因此这种方式在大规模计算任务时效率较低、性价比不高。而GPU内核数有数千之多,并行处理能力可达CPU的百倍。通过本发明提供的并行化多精度乘法方法,可以大幅提高效率和性价比;本发明采用分批异步传输方式可隐藏传输延迟,使CPU与GPU各自任务并行执行;充分利用计算单元的高速缓存,降低读写冲突,进一步提高执行效率。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (3)

1.一种提高CPU+GPU异构装置计算性能的方法,其特征在于,包括步骤:CPU端接收输入的M对N位被乘数和乘数,将所有被乘数和乘数按照顺序分别组成一个一维数组,保存并标识被乘数和乘数; CPU端作为控制器为GPU端分配全局存储器空间和线程块共享存储空间,为GPU端设定网格结构,即线程块位数和线程位数, 以及将所有的乘数与被乘数分批异步传输至GPU全局存储器;启动GPU,GPU端作为处理器:在GPU中,将全局存储器中的每对被乘数和乘数分别拷贝到每个线程块,每个线程块对每对乘法运算执行并行处理,得到M对乘法的乘积,GPU将并行处理获得的乘积写回全局存储器;CPU端控制将全局存储器存储的数据分批异步传输至CPU内存;
所述每个线程块对每对乘法运算并行处理具体为:将GPU端全局存储器中的被乘数和乘数以原始数据位数分段进行切割,将切割的一对被乘数和乘数放入一个线程块共享存储器上,在每个线程块内部,对共享存储器上的被乘数和乘数进行扩展后FFT变换;对同一线程块变换后的乘数和被乘数,各子线程将乘数和被乘数对应元素相乘,得到的乘积存放于共享存储器,共享存储器中的乘积分别在各自的线程块内进行IFFT变换;将IFFT变换后的数据进行并行进位处理。
2.根据权利要求1所述的方法,其特征在于,为GPU端设定网格结构包括:根据乘法运算的个数设置线程块的维数和个数,线程块设置为一维,个数等于乘法对个数M;根据被乘数和乘数位数设置线程维数和个数,线程维数设置为一维,线程个数等于被乘数和乘数位数N。
3.根据权利要求1或2所述的方法,其特征在于,所述进位处理具体为:将取整后的结果按Ns分段,其中,Ns满足显卡线程束的整数倍,每一段由一个线程负责进位,每一个线程从各段首元素开始循环执行:保留当前元素对所选进制X的余数并将其倍数加到下一个元素,令下一个元素为当前元素;直到当前元素小于X并且循环次数不小于每段元素个数为止。
CN201310028325.6A 2013-01-24 2013-01-24 一种提高cpu+gpu异构装置计算性能的方法 Active CN103049241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310028325.6A CN103049241B (zh) 2013-01-24 2013-01-24 一种提高cpu+gpu异构装置计算性能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310028325.6A CN103049241B (zh) 2013-01-24 2013-01-24 一种提高cpu+gpu异构装置计算性能的方法

Publications (2)

Publication Number Publication Date
CN103049241A CN103049241A (zh) 2013-04-17
CN103049241B true CN103049241B (zh) 2015-10-14

Family

ID=48061894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310028325.6A Active CN103049241B (zh) 2013-01-24 2013-01-24 一种提高cpu+gpu异构装置计算性能的方法

Country Status (1)

Country Link
CN (1) CN103049241B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631660A (zh) * 2013-09-23 2014-03-12 中国科学院数据与通信保护研究教育中心 在gpu中进行大整数计算时的存储资源分配方法及装置
CN103577161A (zh) * 2013-10-17 2014-02-12 江苏科技大学 一种面向大数据的数据频度并行处理方法
CN104102476A (zh) * 2014-08-04 2014-10-15 浪潮(北京)电子信息产业有限公司 非规则流中高维数据流典型相关性并行计算方法及装置
CN104503731A (zh) * 2014-12-15 2015-04-08 柳州职业技术学院 二值图像连通域标记快速识别方法
CN104750560B (zh) * 2015-03-06 2018-12-14 联想(北京)有限公司 一种信息处理方法及电子设备
CN106502956A (zh) * 2016-10-28 2017-03-15 张军 一种多核异构cpu‑gpu系统架构的操作系统原型
CN110837395B (zh) * 2018-08-17 2022-03-25 北京图森智途科技有限公司 多gpu并行训练的归一化处理方法、装置和系统
WO2020080458A1 (ja) * 2018-10-19 2020-04-23 日本電信電話株式会社 データ処理システム、中央演算処理装置及びデータ処理方法
CN109597691A (zh) * 2018-12-03 2019-04-09 东南大学 一种大型稀疏矩阵乘以其转置矩阵的gpu加速方法
CN109902059B (zh) * 2019-02-28 2021-06-29 苏州浪潮智能科技有限公司 一种cpu与gpu之间的数据传输方法
CN109976810B (zh) * 2019-03-13 2021-07-13 西安交通大学 一种基于OpenCL的稠密矩阵乘GPU加速方法
CN113448706A (zh) * 2021-06-29 2021-09-28 中国工商银行股份有限公司 批量任务处理方法、装置及系统
CN115455061B (zh) * 2022-11-14 2023-04-18 广东电网有限责任公司佛山供电局 一种基于异构计算的用户特征快速检索方法
CN117742664A (zh) * 2024-02-19 2024-03-22 粤港澳大湾区数字经济研究院(福田) 基于gpu的求模方法、装置、设备及介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976207A (zh) * 2010-07-29 2011-02-16 西安交通大学 一种面向gpu的数据流处理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976207A (zh) * 2010-07-29 2011-02-16 西安交通大学 一种面向gpu的数据流处理方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Parallel processing of matrix multiplication in a CPU and GPU heterogeneous environment";Satoshi Ohshima等;《High Performance Computing for Computational Science-VECPAR 2006》;20061231;第305-318页 *
"利用GPGPU进行快速稀疏磁共振数据重建";王聪等;《计算机工程与应用》;20110630;第47卷(第17期);第203-206、209页 *
"基于GPU高性能计算的切割与布局问题的并行求解方法研究";许慧;《中国优秀硕士学位论文全文数据库 基础科学辑》;20101015;第2010年卷(第10期);第A002-233页 *
孙进平等."多核DSP系统结构与开发应用".《DSP/FPGA嵌入式实时处理技术及应用》.北京航空航天大学出版社,2011,第217-219页. *

Also Published As

Publication number Publication date
CN103049241A (zh) 2013-04-17

Similar Documents

Publication Publication Date Title
CN103049241B (zh) 一种提高cpu+gpu异构装置计算性能的方法
CN104915322B (zh) 一种卷积神经网络硬件加速方法
KR102443546B1 (ko) 행렬 곱셈기
CN104899182B (zh) 一种支持可变分块的矩阵乘加速方法
CN109543832B (zh) 一种计算装置及板卡
CN109002659B (zh) 一种基于超级计算机的流体机械仿真程序优化方法
Budden et al. Deep tensor convolution on multicores
Yang et al. A hybrid computing method of SpMV on CPU–GPU heterogeneous computing systems
CN104835110B (zh) 一种基于gpu的异步图数据处理系统
CN103761215B (zh) 基于图形处理器的矩阵转置优化方法
CN106951926A (zh) 一种混合架构的深度学习系统方法及装置
CN103336758A (zh) 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法
CN107451097B (zh) 国产申威26010众核处理器上多维fft的高性能实现方法
Gao et al. Research on the conjugate gradient algorithm with a modified incomplete Cholesky preconditioner on GPU
Zhang et al. Performance analysis and optimization for SpMV based on aligned storage formats on an ARM processor
CN103577161A (zh) 一种面向大数据的数据频度并行处理方法
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
CN103019852B (zh) 一种适用于大规模集群的mpi并行程序负载问题三维可视化分析方法
CN102012802B (zh) 面向向量处理器数据交换的方法及装置
Shah et al. An efficient sparse matrix multiplication for skewed matrix on gpu
Jain et al. Optimizing distributed DNN training using CPUs and BlueField-2 DPUs
Wu et al. Optimizing dynamic programming on graphics processing units via data reuse and data prefetch with inter-block barrier synchronization
CN114117896A (zh) 面向超长simd管线的二值规约优化实现方法及系统
CN111368250B (zh) 基于傅里叶变换/逆变换的数据处理系统、方法及设备
CN114691142A (zh) 执行程序的编译方法、芯片、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210425

Address after: 450018 1601, 16th floor, Henan enterprise union building, Shangxian street, Mingli Road, Zhengdong New District, Zhengzhou City, Henan Province

Patentee after: Zhongyuan power intelligent robot Co., Ltd

Address before: 400065 Chongqing Nan'an District huangjuezhen pass Chongwen Road No. 2

Patentee before: CHONGQING University OF POSTS AND TELECOMMUNICATIONS