CN101751376B - 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 - Google Patents
利用cpu和gpu协同工作对三角线性方程组求解的加速方法 Download PDFInfo
- Publication number
- CN101751376B CN101751376B CN2009102267694A CN200910226769A CN101751376B CN 101751376 B CN101751376 B CN 101751376B CN 2009102267694 A CN2009102267694 A CN 2009102267694A CN 200910226769 A CN200910226769 A CN 200910226769A CN 101751376 B CN101751376 B CN 101751376B
- Authority
- CN
- China
- Prior art keywords
- cpu
- gpu
- matrix
- linear equation
- triangular linear
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种利用CPU和GPU协同工作对三角线性方程组求解的加速方法,目的是提供一种加速方法,使基于CPU平台的三角线性方程组求解方法在CPU+GPU的异构平台上获得加速。技术方案是先利用CPU进行矩阵求逆,获得三角矩阵A的逆矩阵A-1;接着将矩阵B分割成两个矩阵B1、B2;接着在CPU与GPU上并行执行A-1×B1和A-1×B2两个计算,达到CPU、GPU的负载平衡,A-1×B1和A-1×B2的结果分别为X1、X2;将X2返回CPU,将X1、X2合并成一个矩阵X输出。采用本发明实现了CPU和GPU的重叠计算,达到了良好的负载平衡效果,实现了对三角线性方程组求解的加速。
Description
技术领域
本发明涉及对三角线性方程组求解进行加速的方法,尤指采用CPU和GPU协同工作对三角线性方程组求解进行加速的方法。
背景技术
三角线性方程组广泛应用于许多科学领域,形如op(A)×X=α×B或者X×op(A)=α×B。其中A是一个上三角或者下三角矩阵,op(A)或者为A,或者为AT;X、B为矩阵,α为常量。三角线性方程组求解过程是已知矩阵A、B和系数α,求解矩阵X。现有基于CPU求解矩阵X的实现是一个三重循环,最外层循环次数为矩阵X的列数,中间层循环次数为矩阵X的行数,两重循环中计算了矩阵X的每一个元素。为了计算矩阵X的第i行,第j列元素,需要进行i-1次的乘加操作temp=temp-A(i,k)×B(k,j),这构成了最内层循环。由于在DNA生物计算、核物理科学计算、HPLinpack测试等领域大量存在三角线性方程组的求解,三角线性方程组求解的加速性能成为这些领域计算性能提高的瓶颈,如何对三角线性方程组求解进行加速成为这些领域技术人员极为关注的问题。
目前对三角线性方程组求解的加速方法主要有以下几类:采用硬件的加速方法、采用软件的加速方法。采用硬件的加速方法成本高,采用软件加速的方法在加速效果上不太理想。随着近年来GPU计算能力的飞速发展,单精度浮点性能已超过1Tflops,双精度浮点性能也已达到480Gflops,适合于进行计算密集型程序的运算。同时GPU的编程模型也日渐成熟,OpenCL,Brook+,CUDA等编程模型为开发人员提供了更加方便的编程接口。利用GPU加速关键代码段,协同CPU共同完成科学计算成为当前许多科学计算应用提升性能的主要手段。而目前采用CPU和GPU协同工作对三角线性方程组求解进行加速的方法还没有公开文献涉及。
目前三角线性方程组求解的加速方法都是针对单一平台的,或者是在CPU上实现的,不能利用GPU加速部件,达不到性能要求;或者是仅在NVIDIAGPU上实现的,无法利用CPU资源,不适合在CPU+GPU异构平台上进行加速。本发明基于CPU+GPU的异构计算平台,利用GPU超强的浮点计算能力和CPU/GPU任务划分方法对三角线性方程组求解进行加速。
发明内容
本发明要解决的技术问题在于:提供一种利用CPU和GPU协同工作对三角线性方程组求解的加速方法,使基于CPU平台的三角线性方程组求解方法在CPU+GPU的异构平台上获得加速。基于CPU求解矩阵X的方法的最外层循环可完全并行,但并行粒度大,不适合在GPU上的并行计算。如何变换计算次序以适合GPU并行计算是需要解决的问题之一。其次需要进行CPU和GPU的任务划分,如何计算数据分割比例以达到良好的负载平衡效果是影响加速效果的又一关键。
本发明的技术方案为:改变三角线性方程组求解过程,先利用CPU进行矩阵求逆运算,获得三角矩阵A的逆矩阵A-1;接着将矩阵B根据数据分割比例分割成两个矩阵B1、B2,数据分割比例根据CPU和GPU可达到的最高性能指标,以及两部分并行数据量进行计算;接着在CPU与GPU上并行执行A-1×B1和A-1×B2两个计算过程,达到CPU、GPU的负载平衡,其中A-1×B2的计算使用专门针对GPU优化的数学库函数实现,A-1×B1和A-1×B2两个计算过程的计算结果分别为X1、X2;并行计算过程结束时将GPU的计算结果X2返回CPU,将X1、X2合并成一个矩阵X,作为三角线性方程组的结果输出。
设待求解的三角线性方程组为A×X=α×B,其中A为m×m的矩阵,X、B为m×n的矩阵,α为常量,X为三角线性方程组的解,m和n均为正整数。
具体技术方案为:
第一步、对三角线性方程组中涉及的矩阵A在CPU上执行求逆操作,得到A-1。
第二步、将矩阵B按列分割成两部分B1、B2,即B=[B1,B2],B1为m×(n-k)的矩阵,分到CPU上,参与CPU上的计算,B2为m×k的矩阵,分到GPU上,参与GPU上的计算。数据分割比例k为矩阵B分配到GPU上的数据量占矩阵B整个数据量的百分比。k的获取方法如下:
2.1统计CPU和GPU上A-1×B1和A-1×B2求解过程在未进行任务分割之前的计算量,
分别为D1和D2,单位为flop。由于A-1×B1求解中A-1为三角矩阵,求解的数据量为每个数据的计算需执行n次乘法操作和n次加法操作,总计算量D1=m2n。A-1×B2的求解取决于调用的GPU数学库函数,或者为三角矩阵乘法函数,或者为矩阵乘法函数,前者满足D2=m2n,后者满足D2=2m2n。
2.2统计A-1×B1和A-1×B2求解在数据分割比例k下的计算量,分别为D1×(1-k),D2×k。
2.2统计CPU和GPU上A-1×B1和A-1×B2求解操作可达到的最高性能,分别为C1,G2,单位为Gflops。最高性能的获取方法可以是实际测试,也可以是通过官方网站公布的数据。
2.3设A-1×B1和A-1×B2的计算执行时间分别为T1、T2,单位为纳秒(ns)。计算方法为:
2.4根据CPU和GPU上负载平衡需求,需满足T1=T2,有 成立,
数据分割比例
第三步、将A-1和B2从CPU传输至GPU。
第四步、同时启动CPU和GPU,由CPU计算X1=A-1×B1,由GPU计算X2=A-1×B2。其中A-1×B2计算调用GPU上的数学库函数,实现GPU高效计算。
第五步、将GPU上计算结果X2传回CPU。
第六步、在CPU上通过按列合并的方式将X1、X2合并成一个矩阵X,即X=[X1,X2],输出三角线性方程组的解X。
与现有技术相比,采用本发明可达到以下技术效果:
1.本发明通过对原始三角线性方程组求解方法进行矩阵变换、CPU/GPU的任务分割、将一部分三角矩阵乘法计算利用GPU进行加速,同时利用CPU的计算能力执行另一部分三角矩阵乘法,实现CPU和GPU的重叠计算,达到了良好的负载平衡效果,实现了对三角线性方程组求解的加速。通过与运行在Intel Xeon四核CPU上原始求解方法进行比较,采用本发明在m=1712,n=24473的规模下,可以获得1.5倍的加速效果,在m=1712,n=17625的规模下,可以获得1.6倍的加速效果;
2.本发明通过精确计算数据分割比例k使CPU和GPU的负载平衡达到理想的效果。
附图说明
图1为本发明的总流程图。
具体实施方式
图1是本发明的总流程图。
步骤1)、对矩阵A在CPU上执行求逆操作,得到A-1;
步骤2)、按照数据分割比例k将矩阵B按列分割成CPU和GPU上执行的两部分B1、B2,即B=[B1,B2];
步骤3)、将A-1和B2从CPU传输至GPU;
步骤4)、同时启动CPU和GPU上的计算任务,分别为X1=A-1×B1和X2=A-1×B2;
步骤5)、将GPU上计算结果X2传回CPU;
步骤6)、在CPU上通过按列合并的方式将X1、X2合并成一个矩阵X,即X=[X1,X2],输出三角线性方程组的解X。
Claims (2)
1.一种利用CPU和GPU协同工作对三角线性方程组求解的加速方法,其特征在于包括以下步骤:
第一步、对三角线性方程组A×X=α×B中涉及的矩阵A在CPU上执行求逆操作,得到A-1,A为m×m的矩阵,X、B为m×n的矩阵,α为常量,X为三角线性方程组的解,m和n均为正整数;
第二步、将矩阵B按列分割成两部分B1、B2,即B=[B1,B2],B1为m×(n-k)的矩阵,分到CPU上,参与CPU上的计算,B2为m×k的矩阵,分到GPU上,参与GPU上的计算;数据分割比例k为矩阵B分配到GPU上的数据量占矩阵B整个数据量的百分比,k的获取方法如下:
2.1统计CPU和GPU上A-1×B1和A-1×B2求解过程在未进行任务分割之前的计算量,分别为D1和D2,单位为flop,D1=m2n,当GPU数学库函数为三角矩阵乘法函数时D2=m2n,当GPU数学库函数为矩阵乘法函数时D2=2m2n;
2.2统计A-1×B1和A-1×B2求解在数据分割比例k下的计算量,分别为D1×(1-k),D2×k;
2.2统计CPU和GPU上A-1×B1和A-1×B2求解操作可达到的最高性能,分别为C1,G2,单位为Gflops;最高性能的获取方法是实际测试或通过官方网站公布的数据;
2.3计算A-1×B1的计算执行时间 A-1×B2的计算执行时间 T1、T2的单位为纳秒ns;
2.4根据CPU和GPU上负载平衡需求,需满足T1=T2,有 成立,数据分割比例
第三步、将A-1和B2从CPU传输至GPU;
第四步、同时启动CPU和GPU,由CPU计算X1=A-1×B1,由GPU计算X2=A-1×B2,其中A-1×B2计算调用GPU上的数学库函数;
第五步、将GPU上计算结果X2传回CPU;
第六步、在CPU上将X1、X2合并成一个矩阵X,即X=[X1,X2],输出三角线性方程组的解X。
2.如权利要求1所述的利用CPU和GPU协同工作对三角线性方程组求解的加速方法,其特征在于将X1、X2合并成一个矩阵X的方法是按列合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102267694A CN101751376B (zh) | 2009-12-30 | 2009-12-30 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102267694A CN101751376B (zh) | 2009-12-30 | 2009-12-30 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751376A CN101751376A (zh) | 2010-06-23 |
CN101751376B true CN101751376B (zh) | 2012-03-21 |
Family
ID=42478368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102267694A Expired - Fee Related CN101751376B (zh) | 2009-12-30 | 2009-12-30 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751376B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436545B (zh) * | 2011-10-13 | 2015-02-18 | 苏州东方楷模医药科技有限公司 | 一种基于gpu加速的化学结构多样性分析方法 |
CN102567283B (zh) * | 2011-12-08 | 2014-12-31 | 清华大学 | 一种利用gpu对小矩阵求逆的方法 |
CN102609393B (zh) * | 2012-02-08 | 2015-07-22 | 浪潮(北京)电子信息产业有限公司 | 一种线性方程组的数据处理方法及装置 |
CN102663149B (zh) * | 2012-03-01 | 2015-06-24 | 浪潮(北京)电子信息产业有限公司 | 一种确定微、纳电子结构的方法及装置 |
US20150088936A1 (en) * | 2012-04-23 | 2015-03-26 | Lei Wang | Statistical Analysis using a graphics processing unit |
CN102663207B (zh) * | 2012-04-28 | 2016-09-07 | 浪潮电子信息产业股份有限公司 | 一种利用gpu加速量子介观体系求解的方法 |
US9467399B2 (en) * | 2013-10-17 | 2016-10-11 | Marvell World Trade Ltd. | Processing concurrency in a network device |
CN104317768B (zh) * | 2014-10-15 | 2017-02-15 | 中国人民解放军国防科学技术大学 | 面向cpu+dsp异构系统的矩阵乘加速方法 |
CN104484234B (zh) * | 2014-11-21 | 2017-12-05 | 中国电力科学研究院 | 一种基于gpu的多波前潮流计算方法和系统 |
CN104580503A (zh) * | 2015-01-26 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种高效动态负载均衡的处理大规模数据的系统及方法 |
CN104615584B (zh) * | 2015-02-06 | 2017-12-22 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
CN104615516B (zh) * | 2015-02-06 | 2019-01-29 | 中国人民解放军国防科学技术大学 | 面向GPDSP的大规模高性能Linpack测试基准实现的方法 |
CN105183434B (zh) * | 2015-10-14 | 2017-08-11 | 无锡江南计算技术研究所 | 采用隐式求解的众核流水线并行方法 |
CN105279137A (zh) * | 2015-10-21 | 2016-01-27 | 浪潮(北京)电子信息产业有限公司 | 一种面向gpu并行的三对角矩阵方程求解方法 |
CN107392429A (zh) * | 2017-06-22 | 2017-11-24 | 东南大学 | 一种gpu加速的电力潮流下三角方程组前推方法 |
CN109871352A (zh) * | 2017-12-01 | 2019-06-11 | 北京搜狗科技发展有限公司 | 一种协同计算方法及装置 |
CN109871848B (zh) * | 2017-12-01 | 2022-01-25 | 北京搜狗科技发展有限公司 | 一种移动终端的文字识别方法及装置 |
CN109359247B (zh) * | 2018-12-07 | 2021-07-06 | 广州市百果园信息技术有限公司 | 内容推送方法及存储介质、计算机设备 |
CN110247913A (zh) * | 2019-06-18 | 2019-09-17 | 电子科技大学 | 一种支持矩阵零元素隐私保护的安全矩阵乘法外包方法 |
CN110750358B (zh) * | 2019-10-18 | 2023-06-23 | 上海交通大学苏州人工智能研究院 | 一种超算平台资源利用率分析方法 |
-
2009
- 2009-12-30 CN CN2009102267694A patent/CN101751376B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101751376A (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751376B (zh) | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 | |
US20200151019A1 (en) | OPU-based CNN acceleration method and system | |
US9817661B2 (en) | Floating point number rounding | |
US20210350204A1 (en) | Convolutional neural network accelerator | |
TW202123092A (zh) | 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置 | |
de la Guia Solaz et al. | A flexible low power DSP with a programmable truncated multiplier | |
CN102446160B (zh) | 面向双精度simd部件的矩阵乘实现方法 | |
CN101178645A (zh) | 一种并行浮点乘加单元 | |
CN102945224A (zh) | 基于fpga的高速可变点fft处理器及其处理方法 | |
CN102253919A (zh) | 基于gpu和cpu协同运算的并行数值模拟方法和系统 | |
CN109388373A (zh) | 用于低功耗内核的乘除法器 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN102722472A (zh) | 一种复数矩阵的优化方法 | |
CN104793922A (zh) | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 | |
CN102129419A (zh) | 基于快速傅立叶变换的处理器 | |
CN107368459A (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
Demmel et al. | Prospectus for the Next LAPACK and ScaLAPACK Libraries: Basic ALgebra LIbraries for Sustainable Technology with Interdisciplinary Collaboration (BALLISTIC) | |
RU75072U1 (ru) | Устройство для вычисления тригонометрических функций | |
CN103699729B (zh) | 模乘法器 | |
CN105204003A (zh) | 一种新型的基于fpga的波控运算方法 | |
Targett et al. | Lower precision for higher accuracy: Precision and resolution exploration for shallow water equations | |
Li et al. | Fast Montgomery modular multiplication and squaring on embedded processors | |
RU2436151C1 (ru) | Способ определения структуры гибридной вычислительной системы | |
CN108268349A (zh) | 一种基于intel avx指令集的浮点峰值计算吞吐测试算法 | |
CN101330620B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120321 Termination date: 20161230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |