[go: up one dir, main page]

CN101751376A - 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 - Google Patents

利用cpu和gpu协同工作对三角线性方程组求解的加速方法 Download PDF

Info

Publication number
CN101751376A
CN101751376A CN200910226769A CN200910226769A CN101751376A CN 101751376 A CN101751376 A CN 101751376A CN 200910226769 A CN200910226769 A CN 200910226769A CN 200910226769 A CN200910226769 A CN 200910226769A CN 101751376 A CN101751376 A CN 101751376A
Authority
CN
China
Prior art keywords
gpu
cpu
matrix
calculation
triangular
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.)
Granted
Application number
CN200910226769A
Other languages
English (en)
Other versions
CN101751376B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN2009102267694A priority Critical patent/CN101751376B/zh
Publication of CN101751376A publication Critical patent/CN101751376A/zh
Application granted granted Critical
Publication of CN101751376B publication Critical patent/CN101751376B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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协同工作对三角线性方程组求解的加速方法
技术领域
本发明涉及对三角线性方程组求解进行加速的方法,尤指采用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为三角矩阵,求解的数据量为
Figure G2009102267694D00021
每个数据的计算需执行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)。计算方法为: T 1 = D 1 C 1 × ( 1 - k ) , T 2 = D 2 G 2 × k .
2.4根据CPU和GPU上负载平衡需求,需满足T1=T2,有 D 1 C 1 × ( 1 - k ) = D 2 G 2 × k 成立,
数据分割比例 k = D 1 C 1 D 1 C 1 + D 2 G 2 .
第三步、将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的计算执行时间 T 1 = D 1 C 1 × ( 1 - k ) , A-1×B2的计算执行时间 T 2 = D 2 G 2 × k , T1、T2的单位为纳秒ns;
2.4根据CPU和GPU上负载平衡需求,需满足T1=T2,有 D 1 C 1 × ( 1 - k ) = D 2 G 2 × k 成立,数据分割比例 k = D 1 C 1 D 1 C 1 + D 2 G 2 ;
第三步、将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的方法是按列合并。
CN2009102267694A 2009-12-30 2009-12-30 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 Expired - Fee Related CN101751376B (zh)

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 true CN101751376A (zh) 2010-06-23
CN101751376B 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)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436545A (zh) * 2011-10-13 2012-05-02 苏州东方楷模医药科技有限公司 一种基于gpu加速的化学结构多样性分析方法
CN102567283A (zh) * 2011-12-08 2012-07-11 清华大学 一种利用gpu对小矩阵求逆的方法
CN102609393A (zh) * 2012-02-08 2012-07-25 浪潮(北京)电子信息产业有限公司 一种线性方程组的数据处理方法及装置
CN102663149A (zh) * 2012-03-01 2012-09-12 浪潮(北京)电子信息产业有限公司 一种确定微、纳电子结构的方法及装置
CN102663207A (zh) * 2012-04-28 2012-09-12 浪潮电子信息产业股份有限公司 一种利用gpu加速介观体系物理问题求解的方法
CN104317768A (zh) * 2014-10-15 2015-01-28 中国人民解放军国防科学技术大学 面向cpu+dsp异构系统的矩阵乘加速方法
CN104484234A (zh) * 2014-11-21 2015-04-01 中国电力科学研究院 一种基于gpu的多波前潮流计算方法和系统
CN104580503A (zh) * 2015-01-26 2015-04-29 浪潮电子信息产业股份有限公司 一种高效动态负载均衡的处理大规模数据的系统及方法
CN104615584A (zh) * 2015-02-06 2015-05-13 中国人民解放军国防科学技术大学 面向gpdsp的大规模三角线性方程组求解向量化计算的方法
CN104615516A (zh) * 2015-02-06 2015-05-13 中国人民解放军国防科学技术大学 面向GPDSP的大规模高性能Linpack测试基准实现的方法
CN104662531A (zh) * 2012-04-23 2015-05-27 惠普发展公司,有限责任合伙企业 使用图形处理单元的统计分析
CN105183434A (zh) * 2015-10-14 2015-12-23 无锡江南计算技术研究所 采用隐式求解的众核流水线并行方法
CN105279137A (zh) * 2015-10-21 2016-01-27 浪潮(北京)电子信息产业有限公司 一种面向gpu并行的三对角矩阵方程求解方法
CN106537863A (zh) * 2013-10-17 2017-03-22 马维尔国际贸易有限公司 网络设备中的处理并发性
CN107392429A (zh) * 2017-06-22 2017-11-24 东南大学 一种gpu加速的电力潮流下三角方程组前推方法
CN109359247A (zh) * 2018-12-07 2019-02-19 广州市百果园信息技术有限公司 内容推送方法及存储介质、计算机设备
CN109871848A (zh) * 2017-12-01 2019-06-11 北京搜狗科技发展有限公司 一种移动终端的文字识别方法及装置
CN109871352A (zh) * 2017-12-01 2019-06-11 北京搜狗科技发展有限公司 一种协同计算方法及装置
CN110247913A (zh) * 2019-06-18 2019-09-17 电子科技大学 一种支持矩阵零元素隐私保护的安全矩阵乘法外包方法
CN110750358A (zh) * 2019-10-18 2020-02-04 上海交通大学苏州人工智能研究院 一种超算平台资源利用率分析方法
WO2025043837A1 (zh) * 2023-08-30 2025-03-06 鹏城实验室 数据处理方法、装置、系统及存储介质

Cited By (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102436545A (zh) * 2011-10-13 2012-05-02 苏州东方楷模医药科技有限公司 一种基于gpu加速的化学结构多样性分析方法
CN102436545B (zh) * 2011-10-13 2015-02-18 苏州东方楷模医药科技有限公司 一种基于gpu加速的化学结构多样性分析方法
CN102567283A (zh) * 2011-12-08 2012-07-11 清华大学 一种利用gpu对小矩阵求逆的方法
CN102567283B (zh) * 2011-12-08 2014-12-31 清华大学 一种利用gpu对小矩阵求逆的方法
CN102609393A (zh) * 2012-02-08 2012-07-25 浪潮(北京)电子信息产业有限公司 一种线性方程组的数据处理方法及装置
CN102609393B (zh) * 2012-02-08 2015-07-22 浪潮(北京)电子信息产业有限公司 一种线性方程组的数据处理方法及装置
CN102663149A (zh) * 2012-03-01 2012-09-12 浪潮(北京)电子信息产业有限公司 一种确定微、纳电子结构的方法及装置
CN102663149B (zh) * 2012-03-01 2015-06-24 浪潮(北京)电子信息产业有限公司 一种确定微、纳电子结构的方法及装置
CN104662531A (zh) * 2012-04-23 2015-05-27 惠普发展公司,有限责任合伙企业 使用图形处理单元的统计分析
CN102663207A (zh) * 2012-04-28 2012-09-12 浪潮电子信息产业股份有限公司 一种利用gpu加速介观体系物理问题求解的方法
CN102663207B (zh) * 2012-04-28 2016-09-07 浪潮电子信息产业股份有限公司 一种利用gpu加速量子介观体系求解的方法
CN106537863A (zh) * 2013-10-17 2017-03-22 马维尔国际贸易有限公司 网络设备中的处理并发性
CN104317768A (zh) * 2014-10-15 2015-01-28 中国人民解放军国防科学技术大学 面向cpu+dsp异构系统的矩阵乘加速方法
CN104317768B (zh) * 2014-10-15 2017-02-15 中国人民解放军国防科学技术大学 面向cpu+dsp异构系统的矩阵乘加速方法
CN104484234B (zh) * 2014-11-21 2017-12-05 中国电力科学研究院 一种基于gpu的多波前潮流计算方法和系统
CN104484234A (zh) * 2014-11-21 2015-04-01 中国电力科学研究院 一种基于gpu的多波前潮流计算方法和系统
CN104580503A (zh) * 2015-01-26 2015-04-29 浪潮电子信息产业股份有限公司 一种高效动态负载均衡的处理大规模数据的系统及方法
CN104615516B (zh) * 2015-02-06 2019-01-29 中国人民解放军国防科学技术大学 面向GPDSP的大规模高性能Linpack测试基准实现的方法
CN104615584A (zh) * 2015-02-06 2015-05-13 中国人民解放军国防科学技术大学 面向gpdsp的大规模三角线性方程组求解向量化计算的方法
CN104615516A (zh) * 2015-02-06 2015-05-13 中国人民解放军国防科学技术大学 面向GPDSP的大规模高性能Linpack测试基准实现的方法
CN104615584B (zh) * 2015-02-06 2017-12-22 中国人民解放军国防科学技术大学 面向gpdsp的大规模三角线性方程组求解向量化计算的方法
CN105183434A (zh) * 2015-10-14 2015-12-23 无锡江南计算技术研究所 采用隐式求解的众核流水线并行方法
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加速的电力潮流下三角方程组前推方法
CN109871848A (zh) * 2017-12-01 2019-06-11 北京搜狗科技发展有限公司 一种移动终端的文字识别方法及装置
CN109871352A (zh) * 2017-12-01 2019-06-11 北京搜狗科技发展有限公司 一种协同计算方法及装置
CN109871848B (zh) * 2017-12-01 2022-01-25 北京搜狗科技发展有限公司 一种移动终端的文字识别方法及装置
CN109359247A (zh) * 2018-12-07 2019-02-19 广州市百果园信息技术有限公司 内容推送方法及存储介质、计算机设备
CN110247913A (zh) * 2019-06-18 2019-09-17 电子科技大学 一种支持矩阵零元素隐私保护的安全矩阵乘法外包方法
CN110750358A (zh) * 2019-10-18 2020-02-04 上海交通大学苏州人工智能研究院 一种超算平台资源利用率分析方法
WO2025043837A1 (zh) * 2023-08-30 2025-03-06 鹏城实验室 数据处理方法、装置、系统及存储介质

Also Published As

Publication number Publication date
CN101751376B (zh) 2012-03-21

Similar Documents

Publication Publication Date Title
CN101751376B (zh) 利用cpu和gpu协同工作对三角线性方程组求解的加速方法
CN101706741B (zh) 一种基于负载平衡的cpu和gpu两级动态任务划分方法
Tomov et al. Towards dense linear algebra for hybrid GPU accelerated manycore systems
Collange et al. Numerical reproducibility for the parallel reduction on multi-and many-core architectures
CN104317768B (zh) 面向cpu+dsp异构系统的矩阵乘加速方法
CN103440121A (zh) 一种面向向量处理器的三角矩阵乘法向量化方法
CN104731563B (zh) 基于fft的大整数乘法ssa算法多核并行化实现方法
CN102542149A (zh) 基于fpga的裂变自举粒子滤波算法的硬件实现方法
CN104615584B (zh) 面向gpdsp的大规模三角线性方程组求解向量化计算的方法
CN109635241A (zh) 求解对称或厄密对称正定矩阵逆矩阵方法
Rajaram et al. Improvement of Wallace multipliers using parallel prefix adders
Liang et al. Overlapping communication and computation of GPU/CPU heterogeneous parallel spatial domain decomposition MOC method
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
Haidar et al. Leading edge hybrid multi-GPU algorithms for generalized eigenproblems in electronic structure calculations
CN104615516A (zh) 面向GPDSP的大规模高性能Linpack测试基准实现的方法
CN109753682A (zh) 一种基于gpu端的有限元刚度矩阵模拟方法
Weng et al. Parallel Monte Carlo simulation of molecular weight distribution and chemical composition distribution for copolymerization on a graphics processing unit platform
CN104462020A (zh) 一种基于知识粒度的矩阵增量约简方法
Wang et al. A novel parallel finite element procedure for nonlinear dynamic problems using GPU and mixed-precision algorithm
US20040117423A1 (en) Signed integer long division apparatus and methods for use with processors
CN104793922A (zh) 一种大整数乘法Comba算法基于OpenMP的并行实现方法
Kumar et al. Efficient design and implementation of matrix multiplication
CN103699356B (zh) 一种并行除法计算器
Balagafshe et al. Matrix-matrix multiplication on graphics processing unit platform using tiling technique
Du et al. Providing GPU capability to LU and QR within the ScaLAPACK framework

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