CN117311948B - Cpu与gpu异构并行的自动多重子结构数据处理方法 - Google Patents
Cpu与gpu异构并行的自动多重子结构数据处理方法 Download PDFInfo
- Publication number
- CN117311948B CN117311948B CN202311585574.5A CN202311585574A CN117311948B CN 117311948 B CN117311948 B CN 117311948B CN 202311585574 A CN202311585574 A CN 202311585574A CN 117311948 B CN117311948 B CN 117311948B
- Authority
- CN
- China
- Prior art keywords
- node
- matrix
- cpu
- gpu
- nodes
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 239000011159 matrix material Substances 0.000 claims abstract description 86
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000006243 chemical reaction Methods 0.000 claims abstract description 22
- 230000008030 elimination Effects 0.000 claims abstract description 16
- 238000003379 elimination reaction Methods 0.000 claims abstract description 16
- 230000009467 reduction Effects 0.000 claims abstract description 6
- 238000000547 structure data Methods 0.000 claims abstract 3
- 238000004364 calculation method Methods 0.000 claims description 68
- 230000008569 process Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 7
- 238000010168 coupling process Methods 0.000 claims description 7
- 238000005859 coupling reaction Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 claims 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 9
- 238000006467 substitution reaction Methods 0.000 abstract description 7
- 238000000354 decomposition reaction Methods 0.000 abstract description 2
- 239000000243 solution Substances 0.000 description 11
- 238000004088 simulation Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000011259 mixed solution Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开一种CPU与GPU异构并行的自动多重子结构数据处理方法,包括分界线划分与CPU子树并行,基于CPU+GPU的节点混合并行计算,基于GPU的降维特征值问题并行计算,回代转换的并行策略。本发明根据稀疏矩阵重排序算法形成的子结构消去树节点分布特征和CPU线程数量确定消去树的分解线,界限之上的节点采用多节点CPU与GPU混合并行的计算模式,尽可能保证计算资源的有效利用;界限之下使用CPU多核并行计算独立的子树任务,并为此设计一种减少数据同步的并行策略。
Description
技术领域
本发明涉及工程中的高性能数值计算技术领域,具体涉及一种CPU与GPU异构并行的自动多重子结构数据处理方法。
背景技术
自动多重子结构方法在诸如结构动力学分析、结构优化设计、振动控制、电磁学、流固耦合问题等工程领域中具有广泛的应用,能够提供高效、准确的动力学分析与优化设计的解决方案。以结构仿真分析为例,随着工业水平的发展,有限元仿真计算规模逐步增大,自动多重子结构方法已经成为计算模型本征模态的首要选择,通常占据模态求解时间的一半以上,直接决定了整个仿真分析的计算效率。随着计算机技术的不断发展,利用GPU( Graphics Processing Unit,图形处理器)大规模并行计算能力提高计算速度已成为高性能数值计算的一种高效选择。目前,自动多重子结构方法主要在共享内存环境下利用CPU多核并行计算来提高计算效率,这在一定程度上闲置了GPU的计算资源。
现在与本发明较为接近的SLEPc稀疏特征方程求解器,包含了多种类型方程的求解算法,但是对线性广义特征方程求解并没有提供自动多重子结构求解算法。使用SLEPc默认的Krylov子空间算法求解有限元的特征方程所需时间是自动多重子结构算法的数倍甚至数十倍,难以满足大规模模型仿真计算的实际需求。
发明内容
本发明的目的在于针对现有技术的不足之处,提供一种CPU与GPU异构并行的自动多重子结构数据处理方法,将自动多重子结构方法中的计算任务合理地分配到GPU上,提出了一种高鲁棒性的异构并行策略,充分利用GPU计算资源加速广义特征方程的求解。
本发明提供一种CPU与GPU异构并行的自动多重子结构数据处理方法,包括:
步骤一,确定子树并行与节点并行的分界层级,分界线下方的节点根据消去树分布划分为相互独立的子树,每颗子树的转换视为可以并行求解的计算任务,通过OpenMP的动态线程调度让每个CPU线程领取预设数量的子树任务;
步骤二,以每一层所有节点计算完毕作为数据同步点,计算开始时,CPU端多线程并行从左右孩子节点中提取并合并对应的更新矩阵,组装当前节点的刚度矩阵与质量矩阵,同时利用CUDA提供的异步流将数据拷贝到GPU内存中,之后在CPU端使用迭代法计算节点特征方程并对区间有解的子结构更新对应质量矩阵;
步骤三,利用刚度矩阵是对角矩阵,质量矩阵是对角线全为1的稀疏对称块状矩阵的特点,得到稀疏矩阵的CSR表示格式并存储在GPU上;通过在GPU上实施Arnoldi方法,利用CUDA提供的数值计算库,计算稀疏矩阵向量乘法与向量重正交操作;
步骤四,从消去树的根节点开始从上至下依次增加节点数量直至所需节点内存大于设备显存,并通过页锁定内存一次性将数据传输到设备端,在GPU上完成这些节点的全部回代求解过程。
进一步地,步骤一中,通过下式确定子树并行与节点并行的分界层级;
其中,Lc是分解的层数,Nt是CPU线程数量,Nk表示消去树第k层的节点数量,k表示消去树的层数,Z表示整数集,Vj 代表第k层第j个节点的子结构自由度,叶子节点的Vj取0。
进一步地,步骤一中,在子结构矩阵转换过程中,所有约束矩阵的求解以及当前节点与祖先节点的连接矩阵的乘法运算均只计算拥有非零元的行列,并将对所有祖先节点的矩阵更新数据都暂存在当前孩子节点对象中,消除不同线程同时对同一节点的数据更新的竞争问题;对于叶子节点的刚度矩阵与质量矩阵计算,采取CSR稀疏矩阵格式存储与计算。
进一步地,步骤二中,设备端利用同级子结构的相互独立性,对每个节点绑定一个CUDA的数据流,将内存复制的执行时间隐藏到核函数的计算时间之中;如果在消去树某层的计算过程中无法一次性将所有节点的计算数据拷贝到GPU内存中,确定一次性能拷贝到GPU内存中的最大结构数量并开始这些节点的矩阵计算,每个节点计算完毕后,释放占据的内存空间,从未计算的节点中选出尺寸合适的绑定数据流开始计算。
进一步地,步骤三中,
求解方程在区间/>内的特征对,其中,得到的刚度矩阵与质量矩阵具有如下形式结构:
其中,为刚度矩阵,/>为质量矩阵,/>、/>、/>分别为子结构矩阵转换过程计算得到的第1、第i、第n阶特征值;n为转换过程计算得到的特征对总数;/>为降维后第i个子结构与第j个子结构的耦合质量矩阵;λ表示降维特征方程的特征值,x表示与之对应的特征向量;
表示实际工况分析设置的频率上限;
利用刚度矩阵是对角矩阵,质量矩阵是对角线全为1的稀疏对称块状矩阵的特点,得到稀疏矩阵/> 的CSR表示格式并存储在GPU上,原问题转化为计算方程/>转换为在区间/>内的特征及解,δ为特征值。
进一步地,步骤四中,
计算的节点集合称为SetA,剩下的全部子结构节点集合为SetB;SetB中节点的计算任务可以分为CPU与GPU两块,CPU端计算当前节点位于SetB中的祖先节点的计算,GPU则计算位于SetA中的祖先节点,之后经过一次数据相加即可得到最终结果,在每一个节点计算完毕之后,如果当前节点是非叶子节点,即可同步创建左右孩子节点的计算任务,通过OpenMP的任务机制实现高效的线程调度与切换。
本发明具有以下有益效果:本发明提供的CPU与GPU异构并行的自动多重子结构数据处理方法,针对CAE仿真领域对大规模稀疏广义特征方程高效近似求解的计算需求,在自动多重子结构求解的消去树转换阶段根据子结构尺寸与GPU显存划分为子树并行以及节点任务CPU与GPU异构并行两个阶段,实现了强鲁棒的负载均衡异构计算方案。此外,在降维的特征值问题以及回代转换求解阶段通过在GPU上分配适当的计算任务显著提高了计算速度,实现了高效的大规模稀疏广义特征方程自动多重子结构的GPU异构算法,能有效满足有限元仿真分析、计算流体力学、电磁学等一众领域中稀疏广义特征方程快速近似求解的需求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是消去树并行示意图;
图2是CPU并行子树流程图;
图3是CPU与GPU异构混合计算流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
本发明提供一种CPU与GPU异构并行的自动多重子结构数据处理方法,本发明根据稀疏矩阵重排序算法形成的子结构消去树节点分布特征和CPU线程数量确定消去树的分解线,界限之上的节点采用多节点CPU与GPU混合并行的计算模式,尽可能保证计算资源的有效利用;界限之下使用CPU多核并行计算独立的子树任务,并为此设计一种减少数据同步的并行策略。
本发明主要包括四个步骤:
步骤一,分界线划分与CPU子树并行:
整棵消去树的矩阵转换过程是整个特征方程求解最耗时的步骤,其中节点有着严格的计算顺序要求,每个节点都必须在其所有孩子节点计算完毕之后才能开始,并且单个节点的计算任务可以大致分为小规模稠密矩阵特征值问题计算、约束矩阵计算、节点质量矩阵更新、祖先节点质量矩阵更新、主祖先节点刚度矩阵更新、孩子节点质量矩阵更新等多个计算任务,这些任务耗时长短不一且存在大量的并行的机会。
图1是由稀疏矩阵重排序算法产生的消去树示意图,在使用GPU加速计算的过程中,由于显存的计算限制,无法一次性将所有数据拷贝到设备显存中展开计算。考虑将消去树下面几层数量众多但计算量极小的节点计算依旧保留在CPU端求解。基于这种思路,本发明通过下式确定子树并行与节点并行的分界层级。
其中Lc是分解的层数,Nt是CPU线程数量,Nk表示消去树第k层的节点数量,k表示消去树的层数,Z表示整数集,Vj 代表第k层第j个节点的子结构自由度,其中由于叶子节点采用稀疏矩阵计算,计算量很小,故叶子节点的Vj取0。
分界线下方的节点根据消去树分布划分为相互独立的子树,每颗子树的转换视为可以并行求解的计算任务,通过OpenMP(Open Multi-Processing,共享存储并行编程)的动态线程调度让每个CPU线程领取一定数量的子树任务,每个独立子树的计算流程如图2所示,在子结构矩阵转换过程中,所有约束矩阵的求解以及当前节点与祖先节点的连接矩阵的乘法运算均只计算拥有非零元的行列,并将对所有祖先节点的矩阵更新数据都暂存在当前孩子节点对象中,消除不同线程同时对同一节点的数据更新的竞争问题。对于叶子节点的刚度矩阵与质量矩阵计算,由于其不规则稀疏性,采取CSR稀疏矩阵格式存储与计算。
步骤二,基于CPU+GPU的节点混合并行计算:
分界线上方的节点尺寸较大,在以前的CPU并行计算过程中,约束矩阵求解和对父节点的更新矩阵计算占据每个节点计算时间的80%以上。在异构混合算法中,考虑将这部分计算任务转移至GPU中。
整体的计算思路如图3所示,其中蓝色箭头表示通过PCIe总线进行数据传输,以每一层所有节点计算完毕作为数据同步点,计算开始时,CPU端多线程并行从左右孩子节点中提取并合并对应的更新矩阵,组装当前节点的刚度矩阵与质量矩阵,同时利用CUDA(Compute Unified Device Architecture,统一计算设备架构)提供的异步流将数据拷贝到GPU内存中,之后在CPU端使用迭代法计算节点特征方程并对区间有解的子结构更新对应质量矩阵。由于存在区间解的子结构占比很小,而且解的数量绝大多数不超过10个,利用CPU强度的逻辑处理能力简单高效地完成这一类任务。
设备端利用同级子结构的相互独立性,对每个节点绑定一个CUDA的数据流,将内存复制的执行时间尽可能地隐藏到核函数的计算时间之中,实现更高的并行性和吞吐量。如果在消去树某层的计算过程中无法一次性将所有节点的计算数据拷贝到GPU内存中,确定一次性能拷贝到GPU内存中的最大结构数量并开始这些节点的矩阵计算,每个节点计算完毕后,释放占据的内存空间,从未计算的节点中选出尺寸合适的绑定数据流开始计算。
步骤三,基于GPU的降维特征值问题并行计算:
子结构的矩阵转换可以将原稀疏矩阵特征方程规模降低两个数量级以上,考虑求解方程在区间/>内的特征对,其中得到的刚度矩阵与质量矩阵具有如下形式结构
其中,为刚度矩阵,/>为质量矩阵,/>、/>、/>分别为子结构矩阵转换过程计算得到的第1、第i、第n阶特征值;n为转换过程计算得到的特征对总数;/>为降维后第i个子结构与第j个子结构的耦合质量矩阵;λ表示降维特征方程的特征值,x表示与之对应的特征向量;
表示实际工况分析设置的频率上限;
利用刚度矩阵是对角矩阵,质量矩阵是对角线全为1的稀疏对称块状矩阵的特点,得到稀疏矩阵/> 的CSR表示格式并存储在GPU上,原问题转化为计算方程/>转换为在区间/>内的特征及解,δ为特征值。通过在GPU上实施Arnoldi方法,可以利用CUDA提供的数值计算库,快速计算稀疏矩阵向量乘法(SPMV)与向量重正交(GEMM)等操作,显著提高计算矩阵的极端特征值效率。
步骤四,回代转换的并行策略:
由于设备内存大小的限制,整个回代转换阶段的节点无法单独在GPU上进行,因此从消去树的根节点开始从上至下依次增加节点数量直至所需节点内存大于设备显存,并通过页锁定内存一次性将数据传输到设备端,在GPU上完成这些节点的全部回代求解过程,这种形式计算的节点集合称为SetA,剩下的全部子结构节点集合为SetB。这种划分将尺寸较大的节点计算放置于GPU上,CPU端只用负责小规模的计算任务,显著降低了需要传输的数据量。
由于节点的回代转换计算需要遍历所有祖先节点数据但对计算顺序没有要求,因此SetB中节点的计算任务可以分为CPU与GPU两块,CPU端计算当前节点位于SetB中的祖先节点的计算,GPU则计算位于SetA中的祖先节点,之后经过一次数据相加即可得到最终结果,在每一个节点计算完毕之后,如果当前节点是非叶子节点,即可同步创建左右孩子节点的计算任务,通过OpenMP的任务机制实现高效的线程调度与切换。
由以上实施例可知,本发明提供的一种CPU与GPU异构并行的自动多重子结构数据处理方法,根据GPU显存与消去树节点分布特征划分了子树并行与节点并行计算策略,设计了一种能消除不同孩子节点同时对同一父节点更新从而产生多线程确定性竞争问题的计算方案。在矩阵转换阶段利用叶子节点与非叶子节点的矩阵不同的稀疏性设计相应的计算格式,有效减少了非必要的运算量与内存需求,提高求解效率。实现了单节点的基于GPU与CPU的异构混合求解计算,充分利用GPU大量并行资源加速稠密矩阵运算的同时使用CPU计算小规模计算任务,最大程度上避免计算资源的闲置浪费。在降阶的广义特征值问题和回代转换过程中使用GPU加速运算过程。 根据GPU显存弹性调整并行策略,保证不同GPU设备的兼容性,并在多节点并行过程中通过GPU的流式处理重合的数据传输与计算。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、 “第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施方式例如能够以除了在这里图示或描述的那些以外的顺序实施。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种CPU与GPU异构并行的自动多重子结构数据处理方法,其特征在于,包括:
步骤一,确定子树并行与节点并行的分界层级,分界线下方的节点根据消去树分布划分为相互独立的子树,每颗子树的转换视为可以并行求解的计算任务,通过OpenMP的动态线程调度让每个CPU线程领取预设数量的子树任务;
步骤二,以每一层所有节点计算完毕作为数据同步点,计算开始时,CPU端多线程并行从左右孩子节点中提取并合并对应的更新矩阵,组装当前节点的刚度矩阵与质量矩阵,同时利用CUDA提供的异步流将数据拷贝到GPU内存中,之后在CPU端使用迭代法计算节点特征方程并对区间有解的子结构更新对应质量矩阵;
步骤三中,求解方程在区间/>内的特征对,其中,得到的刚度矩阵与质量矩阵具有如下形式结构:
;
其中,为刚度矩阵,/>为质量矩阵,/>、/>、/>分别为子结构矩阵转换过程计算得到的第1、第i、第n阶特征值;n为转换过程计算得到的特征对总数;/>为降维后第i个子结构与第j个子结构的耦合质量矩阵;λ表示降维特征方程的特征值,x表示与之对应的特征向量;
表示实际工况分析设置的频率上限;
利用刚度矩阵是对角矩阵,质量矩阵是对角线全为1的稀疏对称块状矩阵的特点,得到稀疏矩阵/> 的CSR表示格式并存储在GPU上,原问题转化为计算方程转换为在区间/>内的特征及解,δ为特征值;
步骤四,从消去树的根节点开始从上至下依次增加节点数量直至所需节点内存大于设备显存,并通过页锁定内存一次性将数据传输到设备端,在GPU上完成这些节点的全部回代求解过程。
2.根据权利要求1所述的CPU与GPU异构并行的自动多重子结构数据处理方法,其特征在于,步骤一中,通过下式确定子树并行与节点并行的分界层级;
;
其中,Lc是分解的层数,Nt是CPU线程数量,Nk表示消去树第k层的节点数量,k表示消去树的层数,Z表示整数集,Vj 代表第k层第j个节点的子结构自由度,叶子节点的Vj取0。
3.根据权利要求1所述的CPU与GPU异构并行的自动多重子结构数据处理方法,其特征在于,步骤一中,在子结构矩阵转换过程中,所有约束矩阵的求解以及当前节点与祖先节点的连接矩阵的乘法运算均只计算拥有非零元的行列,并将对所有祖先节点的矩阵更新数据都暂存在当前孩子节点对象中,消除不同线程同时对同一节点的数据更新的竞争问题;对于叶子节点的刚度矩阵与质量矩阵计算,采取CSR稀疏矩阵格式存储与计算。
4.根据权利要求1所述的CPU与GPU异构并行的自动多重子结构数据处理方法,其特征在于,步骤二中,设备端利用同级子结构的相互独立性,对每个节点绑定一个CUDA的数据流,将内存复制的执行时间隐藏到核函数的计算时间之中;如果在消去树某层的计算过程中无法一次性将所有节点的计算数据拷贝到GPU内存中,确定一次性能拷贝到GPU内存中的最大结构数量并开始这些节点的矩阵计算,每个节点计算完毕后,释放占据的内存空间,从未计算的节点中选出尺寸合适的绑数据流开始计算。
5.根据权利要求1所述的CPU与GPU异构并行的自动多重子结构数据处理方法,其特征在于,步骤四中,
计算的节点集合称为SetA,剩下的全部子结构节点集合为SetB;SetB中节点的计算任务可以分为CPU与GPU两块,CPU端计算当前节点位于SetB中的祖先节点的计算,GPU则计算位于SetA中的祖先节点,之后经过一次数据相加即可得到最终结果,在每一个节点计算完毕之后,如果当前节点是非叶子节点,即可同步创建左右孩子节点的计算任务,通过OpenMP的任务机制实现高效的线程调度与切换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311585574.5A CN117311948B (zh) | 2023-11-27 | 2023-11-27 | Cpu与gpu异构并行的自动多重子结构数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311585574.5A CN117311948B (zh) | 2023-11-27 | 2023-11-27 | Cpu与gpu异构并行的自动多重子结构数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117311948A CN117311948A (zh) | 2023-12-29 |
CN117311948B true CN117311948B (zh) | 2024-03-19 |
Family
ID=89273875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311585574.5A Active CN117311948B (zh) | 2023-11-27 | 2023-11-27 | Cpu与gpu异构并行的自动多重子结构数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311948B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399841A (zh) * | 2013-07-31 | 2013-11-20 | 清华大学 | 基于gpu的稀疏矩阵lu分解方法 |
CN103617150A (zh) * | 2013-11-19 | 2014-03-05 | 国家电网公司 | 一种基于gpu的大规模电力***潮流并行计算***及其方法 |
CN103984527A (zh) * | 2014-04-01 | 2014-08-13 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群***采用MPI和OpenMP混合并行提高计算速度的方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN105808829A (zh) * | 2016-03-02 | 2016-07-27 | 西安交通大学 | 一种基于cpu+gpu异构并行计算的透平机械叶片固有频率特性分析方法 |
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN110162736A (zh) * | 2018-01-10 | 2019-08-23 | 成都信息工程大学 | 基于消去树的大型稀疏对称线性方程组并行处理方法 |
CN110598174A (zh) * | 2019-09-11 | 2019-12-20 | 北京华大九天软件有限公司 | 一种基于gpu架构的稀疏矩阵的回代求解方法 |
CN111651208A (zh) * | 2020-05-08 | 2020-09-11 | 上海交通大学 | 面向异构众核并行计算机的模态并行计算方法及*** |
CN114201287A (zh) * | 2022-02-17 | 2022-03-18 | 湖南迈曦软件有限责任公司 | 一种基于cpu+gpu异构平台协同处理数据的方法 |
CN114329327A (zh) * | 2021-12-14 | 2022-04-12 | 清华大学 | 基于上下三角分解的稀疏矩阵并行求解方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364739B2 (en) * | 2009-09-30 | 2013-01-29 | International Business Machines Corporation | Sparse matrix-vector multiplication on graphics processor units |
CN104036451B (zh) * | 2014-06-20 | 2018-12-11 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的模型并行处理方法及装置 |
US10346507B2 (en) * | 2016-11-01 | 2019-07-09 | Nvidia Corporation | Symmetric block sparse matrix-vector multiplication |
-
2023
- 2023-11-27 CN CN202311585574.5A patent/CN117311948B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399841A (zh) * | 2013-07-31 | 2013-11-20 | 清华大学 | 基于gpu的稀疏矩阵lu分解方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN104461467A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 针对SMP集群***采用MPI和OpenMP混合并行提高计算速度的方法 |
CN103617150A (zh) * | 2013-11-19 | 2014-03-05 | 国家电网公司 | 一种基于gpu的大规模电力***潮流并行计算***及其方法 |
CN103984527A (zh) * | 2014-04-01 | 2014-08-13 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
CN105068787A (zh) * | 2015-08-28 | 2015-11-18 | 华南理工大学 | 一种稀疏矩阵向量乘法的异构并行计算方法 |
CN105808829A (zh) * | 2016-03-02 | 2016-07-27 | 西安交通大学 | 一种基于cpu+gpu异构并行计算的透平机械叶片固有频率特性分析方法 |
CN106407158A (zh) * | 2016-09-12 | 2017-02-15 | 东南大学 | 一种gpu加速的批处理同构稀疏矩阵乘满向量的处理方法 |
CN110162736A (zh) * | 2018-01-10 | 2019-08-23 | 成都信息工程大学 | 基于消去树的大型稀疏对称线性方程组并行处理方法 |
CN110598174A (zh) * | 2019-09-11 | 2019-12-20 | 北京华大九天软件有限公司 | 一种基于gpu架构的稀疏矩阵的回代求解方法 |
CN111651208A (zh) * | 2020-05-08 | 2020-09-11 | 上海交通大学 | 面向异构众核并行计算机的模态并行计算方法及*** |
CN114329327A (zh) * | 2021-12-14 | 2022-04-12 | 清华大学 | 基于上下三角分解的稀疏矩阵并行求解方法及装置 |
CN114201287A (zh) * | 2022-02-17 | 2022-03-18 | 湖南迈曦软件有限责任公司 | 一种基于cpu+gpu异构平台协同处理数据的方法 |
Non-Patent Citations (3)
Title |
---|
基于CUDA的有限元矩阵并行装配算法研究;胡斌星;李新国;孙鹏;;计算力学学报(第03期);全文 * |
基于HYB格式稀疏矩阵与向量乘在CPU+GPU异构***中的实现与优化;阳王东;李肯立;;计算机工程与科学(第02期);全文 * |
基于通用计算图形处理器的电磁场有限元计算加速方法探讨;徐小宇;刘国强;;科研信息化技术与应用(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117311948A (zh) | 2023-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021057746A1 (zh) | 神经网络处理方法、装置、计算机设备及存储介质 | |
CN104714850B (zh) | 一种基于opencl的异构共同计算均衡方法 | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
CN110516316B (zh) | 一种间断伽辽金法求解欧拉方程的gpu加速方法 | |
Du et al. | Model parallelism optimization for distributed inference via decoupled CNN structure | |
CN111368484B (zh) | 基于神威架构的宇宙n体数值模拟优化方法及*** | |
CN112947870B (zh) | 一种3D打印模型的G-code并行生成方法 | |
CN111539526A (zh) | 一种神经网络卷积的方法和设备 | |
CN110750265A (zh) | 一种面向图计算的高层次综合方法及*** | |
CN105528243A (zh) | 一种利用数据拓扑信息的优先级分组调度方法及*** | |
CN101639788A (zh) | 一种基于tbb线程构建块的连续***仿真多核并行方法 | |
Augonnet et al. | A hierarchical fast direct solver for distributed memory machines with manycore nodes | |
CN109753682B (zh) | 一种基于gpu端的有限元刚度矩阵模拟方法 | |
Huang et al. | EvoX: A Distributed GPU-accelerated Framework for Scalable Evolutionary Computation | |
Shu et al. | Design of deep learning accelerated algorithm for online recognition of industrial products defects | |
CN117311948B (zh) | Cpu与gpu异构并行的自动多重子结构数据处理方法 | |
Davis et al. | Paradigmatic shifts for exascale supercomputing | |
Abdollahi-Kalkhoran et al. | TEA-SEA: Tiling and scheduling of non-uniform two-level perfectly nested loops using an evolutionary approach | |
Zheng et al. | GPU-based multifrontal optimizing method in sparse Cholesky factorization | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
Wang et al. | A novel parallel algorithm for sparse tensor matrix chain multiplication via tcu-acceleration | |
Bożejko | A new class of parallel scheduling algorithms | |
US20230259780A1 (en) | Neural network sparsification apparatus and method and related product | |
Deng et al. | CPU/GPU computing for an implicit multi-block compressible Navier-Stokes solver on heterogeneous platform | |
Garba et al. | Asymptotic peak utilisation in heterogeneous parallel CPU/GPU pipelines: a decentralised queue monitoring strategy |
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 |