本发明专利技术公开一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置。本发明专利技术针对结构化问题的特点提出了一种改进的线程资源分配策略,有效改善了现有方法资源分配不均衡的问题。本发明专利技术还结合当今主流商用GPU的架构特点,利用硬件谓词执行等一系列手段,提供一套该算法的高效实现方法。本发明专利技术提供的算法框架处理规则结构化问题的性能大幅优于目前商用以及尚处研究阶段的框架。
【技术实现步骤摘要】
一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置
本申请涉及GPU平台上的高性能并行算法框架及实现方式,具体涉及一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置。
技术介绍
稀疏三角方程组求解(SparseTriangularSolver,SpTRSV)代指一类以一个行压缩(CompressedRow,CSR)格式存储的稀疏三角矩阵(L)以及一个右端项(Right-handSide,RHS)向量(b)作为输入,输出满足等式Lx=b的未知量向量(x)的计算过程。当多数矩阵元素为零的情况下,为节省存储空间,CSR格式是以三个数组Ai[·],Aj[·],Aa[·]记录矩阵非零元素(Nonzero,NNZ)位置以及其数值的数据结构。矩阵第r行的第k个非零元素的列下标及数值分别为Aj[Ai[r]+k]以及Aa[Ai[r]+k]。结构化稀疏三角方程组问题指一类在数值计算领域经常出现的,由规模为X×Y×Z的网格产生的,具有固定非零元分布(Ai[·],j[·])的SpTRSV问题。稀疏三角方程组求解在数值计算领域是一类非常重要的计算函数。此类应用对硬件的计算和访存性能要求较高,随着硬件平台的发展,像SpTRSV这类的计算操作大多已经被迁移到了GPU上进行。在当前的硬件构造体系下,SpTRSV的耗时主要受限于硬件访存带宽。为在反映SpTRSV效率的同时体现其硬件访存资源的利用情况,目前主要以有效访存带宽(EffectiveBandwidth)作为SpTRSV的性能评价指标,其计算方式如下:SpTRSV的有效访存带宽越高,说明其计算效率越高,相应地对硬件访存资源的利用效果越好。针对GPU平台,已处于商用阶段的SpTRSV求解器有NVIDIA公司CUSPASER数学库中包含的csrsv2。Csrsv2采用LevelScheduling方法,通过对三角方程组内各方程按求解的优先次序进行排列,再调动GPU资源并发计算各方程未知量的形式解决SpTRSV问题。该方法可以较为充分地利用GPU硬件资源,但对方程组的排序流程大幅增加了SpTRSV的执行时间,导致其有效访存带宽急剧下降。当前尚处研究阶段的SpTRSV以Liu等人提出的无同步(SynchronizationFree)方法为主。此类SpTRSV方法在对GPU硬件资源的利用上有所让步,但能够省去方程组的排序流程,实际有效访存带宽相比LevelScheduling方法反而有所提升。尽管目前有众多针对GPU平台的SpTRSV的计算方法,但它们在处理结构化SpTRSV问题时的有效访存带宽也仅仅只占GPU硬件访存带宽上限的极小部分,难以满足多数应用对SpTRSV计算模块的性能要求,因此有必要针对GPU平台提出更为有效的SpTRSV算法。
技术实现思路
本专利技术提供一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置,以满足对SpTRSV计算模块的性能要求,解决现有方法中GPU资源闲置的问题。本专利技术的一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法,其步骤包括:步骤一、根据输入结构化问题的网格维度对三角方程组进行任务划分。划分过程将产生Y×Z个子问题,归为Z个任务组。步骤二、根据任务划分结果,依序向任务组分配GPU资源。若分配过程中可用GPU资源不足,则等待先前任务的GPU资源释放后再继续分配GPU资源。步骤三、利用分配的GPU资源,并行计算方程组未知量向量并输出结果。计算部分采用了谓词执行进行了优化。进一步地,步骤一包括:对于规模为X×Y×Z的三维结构化问题,按其方程坐标将原问题切分为YZ个子问题,每个子问题包含X个子方程,在此基础之上将YZ个子问题组织成Z个任务组。进一步地,步骤二包括:按任务组中方程的序号,依次将GPU上可用硬件资源分配至各任务组,每个任务组获得的资源数量正比于任务组内子问题的数目;若分配至某一任务组时GPU无法提供更多资源,则分配过程暂停,待已获得GPU资源的任务组计算完成并回收其资源后再继续进行。进一步地,步骤三包括:GPU线程按顺序遍历并计算子问题中包含的方程,使用GPU的谓词执行功能消除计算部分中包含条件性判断语句的部分以提高执行效率。本专利技术还提供一种采用上述方法的面向GPU平台的稀疏结构化三角方程组求解装置(该装置也可以称为面向GPU平台的稀疏结构化三角方程组求解器),其包括:任务划分模块,用于根据输入结构化问题的维度对三角方程组进行任务划分,产生若干个子问题,并将各子问题组织成若干个任务组;资源分配模块,用于向任务划分后产生的任务组分配GPU资源;执行计算模块,用于利用分配的GPU资源,并行计算方程组未知量向量并输出结果。本专利技术取得了以下技术效果:本专利技术依据结构化SpTRSV问题的非零元分布规律,提出了一种有针对性地任务划分方式,让多个子问题可并行进行求解。本专利技术调整了GPU资源的分配利用方式,极大缓解了现有方法中GPU资源闲置的问题。本专利技术还根据GPU硬件的特点,采用谓词执行等一系列手段提高了计算求解的效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术面向GPU平台的稀疏结构化三角方程组求解的实现方法整体流程示意图;图2为资源分配步骤的流程图;图3为实施验证中所采用结构化问题的非零元分布示意图;图4为本专利技术与现有方法性能的对比图,其中(a)~(d)依次表示D3N7问题,D3N13问题,D3N27问题,D3N33问题。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参照图1所示,本实施例的面向GPU平台的稀疏结构化三角方程组求解的实现方法,包括如下步骤:步骤一、任务划分:假设输入结构化稀疏结构化三角方程组的网格规模为(X,Y,Z),那么方程组包含R≡XYZ个子方程,且可将子方程的序号r按如下形势解释为三维坐标:其中,X,Y,Z分别表示三维网格在坐标轴各方向的长度,g(r)表示与方程r对应的网格点的三维空间坐标,gX(r),gY(r),gz(r)分别表示各坐标分量,mod表示整数除取余数运算。首先将子方程按YZ-坐标归类,得到Y×Z子问题,每个子问题包含X个子方程。然后将子问题按其包含的子方程的Z-坐标增序排列,得到Z个任务组。步骤二、资源分配:图2为资源分配本文档来自技高网...
【技术保护点】
1.一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法,其特征在于,包括如下步骤:/n根据输入结构化问题的维度对三角方程组进行任务划分,产生若干个子问题,并将各子问题组织成若干个任务组;/n向任务划分后产生的任务组分配GPU资源;/n利用分配的GPU资源,并行计算方程组未知量向量并输出结果。/n
【技术特征摘要】
1.一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法,其特征在于,包括如下步骤:
根据输入结构化问题的维度对三角方程组进行任务划分,产生若干个子问题,并将各子问题组织成若干个任务组;
向任务划分后产生的任务组分配GPU资源;
利用分配的GPU资源,并行计算方程组未知量向量并输出结果。
2.根据权利要求1所述的方法,其特征在于,所述根据输入结构化问题的维度对三角方程组进行任务划分,包括:
对于规模为X×Y×Z的三维结构化问题,按其方程坐标将原问题切分为YZ个子问题,每个子问题包含X个子方程,在此基础之上将YZ个子问题组织成Z个任务组。
3.根据权利要求2所述的方法,其特征在于,所述根据输入结构化问题的维度对三角方程组进行任务划分,包括:
假设输入结构化稀疏结构化三角方程组的网格规模为(X,Y,Z),那么方程组包含R≡XYZ个子方程,将子方程的序号r按如下形势解释为三维坐标:
其中,X,Y,Z分别表示三维网格在坐标轴各方向的长度,g(r)表示与方程r对应的网格点的三维空间坐标,gX(r),gY(r),gZ(r)分别表示各坐标分量,mod表示整数除取余数运算;
首先将子方程按YZ-坐标归类,得到Y×Z子问题,每个子问题包含X个子方程,然后将子问题按其包含的子方程的Z-坐标增序排列,得到Z个任务组。
4.根据权利要求1所述的方法,其特征在于,所述向任务划分后产生的任务组分配GPU资源,包括:
按任务组中方程的序号,依次将GPU上可用硬件资源分配至各任务组,每...
【专利技术属性】
技术研发人员:陈道琨,杨超,刘芳芳,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。