CN113297537B - 一种稀疏结构化三角方程组求解的高性能实现方法和装置 - Google Patents
一种稀疏结构化三角方程组求解的高性能实现方法和装置 Download PDFInfo
- Publication number
- CN113297537B CN113297537B CN202110623380.4A CN202110623380A CN113297537B CN 113297537 B CN113297537 B CN 113297537B CN 202110623380 A CN202110623380 A CN 202110623380A CN 113297537 B CN113297537 B CN 113297537B
- Authority
- CN
- China
- Prior art keywords
- gpu
- task
- resources
- sub
- equation set
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/13—Differential equations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Operations Research (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置。本发明针对结构化问题的特点提出了一种改进的线程资源分配策略,有效改善了现有方法资源分配不均衡的问题。本发明还结合当今主流商用GPU的架构特点,利用硬件谓词执行等一系列手段,提供一套该算法的高效实现方法。本发明提供的算法框架处理规则结构化问题的性能大幅优于目前商用以及尚处研究阶段的框架。
Description
技术领域
本申请涉及GPU平台上的高性能并行算法框架及实现方式,具体涉及一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法和装置。
背景技术
稀疏三角方程组求解(Sparse Triangular Solver,SpTRSV)代指一类以一个行压缩(Compressed Row,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[·],Aj[·])的SpTRSV问题。
稀疏三角方程组求解在数值计算领域是一类非常重要的计算函数。此类应用对硬件的计算和访存性能要求较高,随着硬件平台的发展,像SpTRSV这类的计算操作大多已经被迁移到了GPU上进行。在当前的硬件构造体系下,SpTRSV的耗时主要受限于硬件访存带宽。为在反映SpTRSV效率的同时体现其硬件访存资源的利用情况,目前主要以有效访存带宽(Effective Bandwidth)作为SpTRSV的性能评价指标,其计算方式如下:
SpTRSV的有效访存带宽越高,说明其计算效率越高,相应地对硬件访存资源的利用效果越好。
针对GPU平台,已处于商用阶段的SpTRSV求解器有NVIDIA公司CUSPASER数学库中包含的csrsv2。Csrsv2采用Level Scheduling方法,通过对三角方程组内各方程按求解的优先次序进行排列,再调动GPU资源并发计算各方程未知量的形式解决SpTRSV问题。该方法可以较为充分地利用GPU硬件资源,但对方程组的排序流程大幅增加了SpTRSV的执行时间,导致其有效访存带宽急剧下降。
当前尚处研究阶段的SpTRSV以Liu等人提出的无同步(Synchronization Free)方法为主。此类SpTRSV方法在对GPU硬件资源的利用上有所让步,但能够省去方程组的排序流程,实际有效访存带宽相比Level Scheduling方法反而有所提升。
尽管目前有众多针对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为资源分配步骤的流程图。在步骤一的基础之上,按Z坐标增序,依次向各任务组分配一定数量的GPU线程单元。线程单元按任务组内子问题的Y坐标升序,依次计算各子问题的结果。其中,一定数量的GPU线程单元,优选为个GPU线程单元。
若输入问题Z方向的维度较大,超过了GPU所能承载的最大线程单元数量,则资源分配过程中会出现无可用线程资源的情况。此时线程分配过程将暂停并等待先前获得线程资源的任务组完成计算,待GPU线程单元被收回之后再进行余下任务组的资源分配工作。
步骤三、执行计算:
分配至任务组的GPU线程单元交替从任务组内获取待解子问题并计算其未知量向量。计算部分的代码包含若干条件语句,在现今NVIDIA的商用GPU所采用的CUDA C/C++编程环境下采用硬件提供的谓词执行(Predication Execution)功能替换条件判断产生的分支指令,以提高执行效率。
本实施例采用NVIDIA的V100加速卡对本发明的性能加速效果进行验证。实施例选取在数值计算应用中常见的几种结构化问题(图3)作为输入。图3中所有除(x,y,z)外,其余带有数字标记的网格点(方程)均依赖于坐标为(x,y,z)的方程。图4为V100加速卡上,本发明与其他现有方法的有效带宽比较,从中可以看出本发明相对目前商业CPUSARSE和研究领域已有无同步方法相比,有效访存带宽平均而言有275%的提高,最高可到475%。
图4中,D3N7、D3N13、D3N27、D3N33分别表示科学计算领域对偏微分方程采用7点,13点,27点以及33点格式离散化后,形成的稀疏矩阵,经不完全矩阵分解ILU(0)后,产生的SpTRSV问题的非零元素分布。
本实施例仅针对NVIDIA V100 GPU,将本发明的内容经简单变形后移植到其他GPU平台,或者在没有对本发明的任务划分以及资源分配策略进行创造性改进,抑或在执行计算阶段于本发明的基础上进行简单优化,本质上仍未脱离本发明所涵盖的内容,仍属于本发明保护的范畴。
本发明未详细阐述的部分属于本领域技术人员的公知技术。
以上所述的实施例仅是对本发明的特定实例进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
Claims (6)
1.一种面向GPU平台的稀疏结构化三角方程组求解的高性能实现方法,其特征在于,包括如下步骤:
根据输入结构化问题的维度对三角方程组进行任务划分,产生若干个子问题,并将各子问题组织成若干个任务组;
向任务划分后产生的任务组分配GPU资源;
利用分配的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资源,包括:
按任务组中方程的序号,依次将GPU上可用硬件资源分配至各任务组,每个任务组获得的资源数量正比于任务组内子问题的数目;
若分配至某一任务组时GPU无法提供更多资源,则分配过程暂停,待已获得GPU资源的任务组计算完成并回收其资源后再继续进行。
3.根据权利要求2所述的方法,其特征在于,所述向任务划分后产生的任务组分配GPU资源,包括:
按Z坐标增序,依次向各任务组分配一定数量的GPU线程单元,线程单元按任务组内子问题的Y坐标升序,依次计算各子问题的结果;
若输入问题Z方向的维度较大,超过了GPU所能承载的最大线程单元数量,则线程分配过程将暂停并等待先前获得线程资源的任务组完成计算,待GPU线程单元被收回之后再进行余下任务组的资源分配工作。
5.根据权利要求1所述的方法,其特征在于,所述利用分配的GPU资源,并行计算方程组未知量向量并输出结果,包括:
GPU线程按顺序遍历并计算子问题中包含的方程,使用GPU的谓词执行功能消除计算部分中包含条件性判断语句的部分。
6.一种采用权利要求1~5中任一权利要求所述方法的面向GPU平台的稀疏结构化三角方程组求解装置,其特征在于,包括:
任务划分模块,用于根据输入结构化问题的维度对三角方程组进行任务划分,产生若干个子问题,并将各子问题组织成若干个任务组;
资源分配模块,用于向任务划分后产生的任务组分配GPU资源;
执行计算模块,用于利用分配的GPU资源,并行计算方程组未知量向量并输出结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623380.4A CN113297537B (zh) | 2021-06-04 | 2021-06-04 | 一种稀疏结构化三角方程组求解的高性能实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623380.4A CN113297537B (zh) | 2021-06-04 | 2021-06-04 | 一种稀疏结构化三角方程组求解的高性能实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297537A CN113297537A (zh) | 2021-08-24 |
CN113297537B true CN113297537B (zh) | 2022-10-25 |
Family
ID=77327104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110623380.4A Active CN113297537B (zh) | 2021-06-04 | 2021-06-04 | 一种稀疏结构化三角方程组求解的高性能实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297537B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114385972B (zh) * | 2021-12-20 | 2023-09-01 | 北京科技大学 | 一种直接求解结构化三角稀疏线性方程组的并行计算方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368454A (zh) * | 2017-06-22 | 2017-11-21 | 东南大学 | 一种大量同构稀疏下三角方程组的gpu加速前推方法 |
CN111079078A (zh) * | 2019-11-25 | 2020-04-28 | 清华大学 | 面向结构网格稀疏矩阵的下三角方程并行求解方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9760538B2 (en) * | 2014-12-22 | 2017-09-12 | Palo Alto Research Center Incorporated | Computer-implemented system and method for efficient sparse matrix representation and processing |
-
2021
- 2021-06-04 CN CN202110623380.4A patent/CN113297537B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368454A (zh) * | 2017-06-22 | 2017-11-21 | 东南大学 | 一种大量同构稀疏下三角方程组的gpu加速前推方法 |
CN111079078A (zh) * | 2019-11-25 | 2020-04-28 | 清华大学 | 面向结构网格稀疏矩阵的下三角方程并行求解方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113297537A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8751556B2 (en) | Processor for large graph algorithm computations and matrix operations | |
US8959135B2 (en) | Data structure for tiling and packetizing a sparse matrix | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
CN111062472A (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
CN109145255B (zh) | 一种稀疏矩阵lu分解行更新的异构并行计算方法 | |
KR20100013257A (ko) | 멀티 프로세서 시스템 상에서 데이터 세트를 분할 및 정렬하는 방법 및 장치 | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
US20120144130A1 (en) | Optimizing Output Vector Data Generation Using A Formatted Matrix Data Structure | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN109918182A (zh) | 虚拟化技术下的多gpu任务调度方法 | |
CN109726441B (zh) | 体和面混合gpu并行的计算电磁学dgtd方法 | |
CN111368484B (zh) | 基于神威架构的宇宙n体数值模拟优化方法及系统 | |
CN103177414A (zh) | 一种基于结构的图节点相似度并行计算方法 | |
CN113297537B (zh) | 一种稀疏结构化三角方程组求解的高性能实现方法和装置 | |
CN112765094A (zh) | 一种基于数据划分和计算分配的稀疏张量典范分解方法 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN109753682B (zh) | 一种基于gpu端的有限元刚度矩阵模拟方法 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN110162736A (zh) | 基于消去树的大型稀疏对称线性方程组并行处理方法 | |
CN116303219A (zh) | 一种网格文件的获取方法、装置及电子设备 | |
CN115756605A (zh) | 一种基于多gpu的浅积云对流参数化方案异构计算方法 | |
CN107608786A (zh) | 一种基于gpu和分布式计算的高层建筑群震害分析方法 | |
Cambier et al. | A task-based distributed parallel sparsified nested dissection algorithm | |
CN116774968A (zh) | 具有一组线程束的高效矩阵乘法和加法 | |
CN109670001A (zh) | 基于cuda的多边形栅格化gpu并行计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |