图形处理单元上的高性能稀疏三角求解制造技术

技术编号:26695317 阅读:40 留言:0更新日期:2020-12-12 02:54
一种方法包括将稀疏三角矩阵存储为压缩稀疏行(CSR)数据集。针对第一向量中的多个因子中的每个因子,通过针对所述因子标识所述第一向量中的一组一个或多个在先因子来计算所述因子的值,其中所述因子的所述值取决于所述一个或多个在先因子中的每一个。响应于完成数组指示所述一个或多个在先因子值中的全部被求解,基于所述矩阵的行中的一个或多个元素以及对应于所述行的乘积值来计算所述因子的所述值。在所述完成数组中,针对所述因子断言指示所述因子被求解的第一完成标志。

【技术实现步骤摘要】
【国外来华专利技术】图形处理单元上的高性能稀疏三角求解
技术介绍
三角矩阵是一种类型的方阵,所述方阵在矩阵的主对角线上方或下方具有仅零元素。下三角矩阵在主对角线上方具有仅零元素,使得矩阵中的任何非零元素都在下三角中、在主对角线上或在主对角线下方。上三角矩阵在主对角线下方具有仅零元素,使得矩阵中的任何非零元素都在上三角中、在主对角线上或在主对角线上方。三角矩阵可用于在线性代数的领域中表示方程组。稀疏三角矩阵是在填充的三角中具有大量零元素的三角矩阵;例如,稀疏的下三角矩阵在其下三角中具有一个或多个零值。稀疏三角求解(SpTS)是用于求解方程式Ax=y中的向量x的过程,其中A是具有N个行和N个列的稀疏三角矩阵,x是N个未知值的向量,且y是N个已知值的向量。如果矩阵A中唯一的非零值位于主对角线上和所述对角线的一侧,则可使用替换来求解向量x。求解向量条目x[n]依赖于已在下三角矩阵中进行前向替换的情况下求解所有先前向量条目(例如,x[0]-x[n-1])。然而,如果矩阵稀疏,则三角矩阵值中的一些也为零,并且可在并行处理器上并行地求解多行。附图说明在附图的图示中通过举例的方式而非限制的方式示出本公开。图1示出根据实施方案的用于执行稀疏三角求解(SpTS)的并行计算系统的实施方案。图2示出根据实施方案的计算装置。图3示出根据实施方案的计算装置中的多个处理单元和存储器。图4A示出根据实施方案的稀疏三角矩阵和向量的矩阵乘法。图4B示出根据实施方案的SpTS的依赖图。图4C示出根据实施方案的压缩稀疏行(CSR)数据集和完成数组。图5示出根据实施方案的用于标识向量中每个因子的完成标志的CSR数据集中的元素。图6示出根据实施方案的SpTS中的事件的时间线。图7示出根据实施方案的SpTS中的事件的时间线。图8是示出根据实施方案的用于在处理核心中执行SpTS的模块的框图。图9A和图9B是示出根据实施方案的用于执行SpTS的过程的流程图。具体实施方式以下描述阐述了许多具体细节,诸如具体系统、部件、方法等的示例,以便提供对实施方案的良好理解。然而,本领域的技术人员将明白,可在没有这些具体细节的情况下实践至少一些实施方案。在其他情况下,未详细描述公知的部件或方法,或以简单的框图格式呈现公知的部件或方法,以避免对实施方案不必要的混淆。因此,阐述的具体细节仅仅是示例性的。特定实现方式可与这些示例性细节不同,并且仍被认为在实施方案的范围内。稀疏三角求解(SpTS)试图求解方程式Ax=y中的向量x的未知值,其中A是稀疏三角矩阵,且y是已知值的向量。并行地求解稀疏三角矩阵中的行会导致一系列数据依赖性;向量x中的每个因子x[n]的求解取决于正在求解的在先因子x[0]-x[n-1]。求解可分成一系列层次,其中相同层次中的因子不直接或传递地彼此依赖,并因此可彼此并行地求解。快速执行并行SpTS的主要困难中的一个是找到任何特定输入矩阵的此数据依赖图,尤其是当输入矩阵包含成千上万个行和列时。因此,稀疏三角求解在高度并行的架构(诸如基于图形处理单元(GPU)的并行计算系统)上仍然表现不佳。基于在开始计算之前确定的依赖图,或通过在先前计算的结果可用时在并行工作器之间进行通信,并行计算系统可确定何时开始求解特定因子。在并行计算系统上执行SpTS的一种方法包括:首先分析输入矩阵以确定可并行求解的行和因子,然后针对每个层次启动新内核,包括用于并行求解层次中的行中的每一个的线程。然而,将SpTS分成分析阶段和求解阶段会导致应用程序编程接口(API)更加繁琐,在所述API中用户在获得期望的求解之前另外调用分析(实现层次的细节)。此外,执行分析所需的时间可能会超过计算求解所需的时间。取决于所执行的分析,分析可能比求解阶段阶段花费多达数千倍的时间。如果矩阵不被重复使用,则执行分析所花费的时间可能不会被摊销。在一些情况下,给定层次中的因子可能取决于先前层次中的已被求解的因子的子集;因此,应该能够进行因子求解。然而,当先前层次中尚未求解的其他因子阻止了先前层次的完成时,无法进行因子求解。因此,当将SpTS计算分成多个层次时,可能会丢失一些并行性。在不需要单独分析阶段的一种方法中,可执行通过在稀疏三角矩阵上进行操作来动态地管理求解阶段期间的并行工作器的SpTS,所述稀疏三角矩阵根据压缩稀疏列(CSC)格式进行存储。然而,许多应用程序以压缩稀疏行(CSR)格式存储稀疏三角矩阵,并且将CSR数据集转换为CSC格式会消耗大量时间和存储器资源。在一个实施方案中,并行计算系统可通过更新完成数组来对以CSR格式存储的矩阵执行SpTS,所述完成数组指示向量x的因子何时被求解并且可用于后续计算。由计算系统启动的内核执行线程,所述线程用于使用矩阵的对应第n行中的元素来计算向量x中的每个因子x[n]。在每个线程中,执行自旋循环以重复监视完成数组中的完成标志,以确定因子x[n]所依赖于的在先因子(表示第n行的输入变量)是否已被求解。在在先因子已被求解之后,其用于计算因子x[n]的值的一部分。为了减少由于对完成数组中的值进行自旋循环而导致的存储器争用,如果自旋循环的迭代次数或自旋循环所花费的时间量超过限度,则线程将启动依赖子内核,所述依赖子内核入队以在当前内核完成后开始。在其余线程已完成(即,已求解更多因子)后,依赖子内核将启动新线程,以对完成数组中的相同值恢复自旋循环。因此,这种高性能SpTS机制允许并行计算系统对以CSR格式存储的稀疏三角矩阵执行SpTS,而无需执行昂贵的转置操作以将其转换为诸如CSC等另一种格式。因为不会将行及其对应因子分组到层次中,所以所述机制不会产生错误的依赖性,并因此能够在执行SpTS时找到更多动态并行性。高性能SpTS机制不需要单独的分析阶段;当在先因子已知或可通过求解前几行获得时,每个并行工作器开始求解一行以计算其对应因子的值。由于对完成数组中的多个完成标志进行自旋循环,允许自旋循环超时并通过启动子内核来稍后恢复的机制减少了存储器争用。在一个实施方案中,这种高性能SpTS机制在一些情况下比在单独阶段中执行分析和求解的SpTS机制执行起来快数千倍。图1示出并行计算系统100的实施方案。计算系统100包括通过通信网络110彼此连接的多个计算装置101-103。计算装置101-103中的每一个具有处理和存储器存储能力。在一个实施方案中,计算系统100包含在单个物理外壳内,并且通信网络110是在外壳内连接计算装置101-103的总线或系统互连件。例如,计算装置101-103可包括在相同板上或在通过背板彼此连接的单独载体板上的诸如GPU、中央处理单元(CPU)、现场可编程门阵列(FPGA)等处理单元。在一个实施方案中,计算系统100中的部件包含在单独的物理外壳中并且在地理上分布。例如,计算装置101-103可表示通过诸如互联网的广域网(WAN)、局域网(LAN)、无线网络或其他通信网络110彼此连接的个别服务器、个人计算机、移动装置等。在一个实施方案中,计算装置101本文档来自技高网...

【技术保护点】
1.一种方法,其包括:/n将稀疏三角矩阵存储为压缩稀疏行(CSR)数据集;/n针对第一向量中的多个因子中的每个因子,通过执行以下各项来计算所述因子的值:/n针对所述因子标识所述第一向量中的一组一个或多个在先因子,其中所述因子的所述值取决于所述一个或多个在先因子中的每一个;/n响应于完成数组指示所述一个或多个在先因子值中的全部被求解,基于以下各项来计算所述因子的所述值:/n所述矩阵的行中的一个或多个元素,以及/n对应于所述行的乘积值;以及/n在所述完成数组中,针对所述因子断言指示所述因子被求解的第一完成标志。/n

【技术特征摘要】
【国外来华专利技术】20180420 US 15/958,2651.一种方法,其包括:
将稀疏三角矩阵存储为压缩稀疏行(CSR)数据集;
针对第一向量中的多个因子中的每个因子,通过执行以下各项来计算所述因子的值:
针对所述因子标识所述第一向量中的一组一个或多个在先因子,其中所述因子的所述值取决于所述一个或多个在先因子中的每一个;
响应于完成数组指示所述一个或多个在先因子值中的全部被求解,基于以下各项来计算所述因子的所述值:
所述矩阵的行中的一个或多个元素,以及
对应于所述行的乘积值;以及
在所述完成数组中,针对所述因子断言指示所述因子被求解的第一完成标志。


2.如权利要求1所述的方法,其还包括:
将所述矩阵的元素存储在所述CSR数据集的值数组中;
在所述CSR数据集的列数组中,针对存储在所述值数组中的所述元素中的每一个标识所述矩阵的列;以及
在所述CSR数据集的行指针数组中,标识所述矩阵的每一行中的元素。


3.如权利要求1所述的方法,其还包括:针对所述多个因子中的每个因子:
发起用于计算所述因子的所述值的线程,其中所述线程是并行执行的多个线程中的一个。


4.如权利要求3所述的方法,其还包括:针对所述多个线程中的每个线程:
对在所述线程中执行的自旋循环的迭代次数进行计数,以用于监视所述完成数组中的第二完成标志,其中所述第二完成标志与所述在先因子中的一个相关联;以及
响应于所述迭代次数超过限度,
终止所述自旋循环,
在所述多个并行处理线程中的所有线程已完成时将子内核入队以便执行,以及
在所述子内核中的新线程中监视所述完成标志。


5.如权利要求4所述的方法,其还包括:
检查子启动标志,其中在所述子启动标志被取消断言时执行所述子内核的所述入队;以及
结合所述子内核的所述入队,断言所述子启动标志。


6.如权利要求1所述的方法,其还包括:针对所述多个因子中的每个因子:
执行第一自旋循环以监视所述完成数组中的第一完成标志,其中所述第一完成标志在所述CSR数据集的列数组中的第一位置处指定,并且其中所述列数组中的所述第一位置由对应于所述因子的行指针指示;以及
响应于确定所述第一完成标志被断言并且所述列数组中的第二位置对应于所述稀疏三角矩阵的非对角线元素,执行第二自旋循环以监视所述完成数组中的第二完成标志,其中所述第二完成标志在所述列数组中的所述第二位置处指定。


7.如权利要求6所述的方法,其中:
所述行指针在行指针数组中的位置对应于所述因子在所述向量中的位置;
所述行指针是所述列数组中的所述第一位置的索引;并且
所述列数组的所述第一位置存储所述完成数组中的所述完成标志的索引。


8.如权利要求1所述的方法,其还包括:针对所述多个因子中的每个因子:
存储所述在先因子中的每一个的完成标志;
通过递增所述在先因子的所述完成标志中最高值的完成标志来确定所述因子的所述完成标志的值;以及
通过将所述完成数组中的所述因子的所述完成标志的所确定值存储在对应于所述因子的位置处来断言所述因子的所述完成标志。


9.如权利要求8所述的方法,其还包括:
针对第二向量中多个因子中的每个因子,基于对应于所述完成数组中的所述因子的所述完成标志的值来确定所述因子的层次;以及
根据所确定层次来依次计算所述第二向量中所述因子中的每一个的值,其中并行计算相同层次上的所述多个因子中至少两个的值。


10.如权利要求1所述的方法,其中:
所述CSR数据集存储在存储器系统中,并且
针对所述多个因子中的每个因子,在与所述存储器系统耦接的求解器电路中计算所述因子的所述值。


11.如权利要求1所述的方法,其还包括:
使用自旋循环电路来从所述完成数组读取所述第一完成标志,其中:
所述完成数组存储在存储器系统中,以及
断言所述完成数组中的所述第一完成标志是由与所述自旋循环电路和所述存储器系统耦接的求解器电路执行的。


12.一种计算装置,其包括:
存储器,所述存储器被配置为将稀疏三角矩阵存储为压缩稀疏行(CSR)数据集;以及
处理单元,所述处理单元与所述存储器耦接并且被配置为:
针对第一向量中的多个因子中的每个因子,通过执行以下各项来...

【专利技术属性】
技术研发人员:约瑟夫·L·格雷特豪斯
申请(专利权)人:超威半导体公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1