掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法及装置、电子设备与存储介质

文献发布时间:2023-06-19 19:28:50


数据处理方法及装置、电子设备与存储介质

技术领域

本公开的实施例涉及一种数据处理方法及装置、电子设备与存储介质。

背景技术

科学计算和工程模拟等许多领域中都存在对称三对角矩阵的特征值问题,对称三对角矩阵的特征求解在计算材料、计算化学、计算物理等科学研究中具有广泛的应用价值。在诸如中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)等当前的计算设备中,可以通过资源的调用的方式实现对称三对角矩阵的特征求解。

发明内容

本公开至少一实施例提供一种数据处理方法,该数据处理方法包括:获取输入矩阵数据,其中,所述输入矩阵数据为对称三对角矩阵;将所述输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据;对所述多个叶结点数据进行并行计算,得到所述多个叶结点数据中的每个叶结点数据的特征参数;基于所述每个叶结点数据的特征参数,对所述多个叶结点数据进行至少一次合并,得到合并数据;基于所述合并数据,对所述输入矩阵数据进行特征求解,得到所述输入矩阵数据的特征参数。

例如,在本公开至少一实施例提供的数据处理方法中,所述特征参数包括特征值和特征向量。

例如,在本公开至少一实施例提供的数据处理方法中,所述对所述多个叶结点数据进行并行计算,包括:调用第一库函数对所述多个叶结点数据进行并行计算。

例如,在本公开至少一实施例提供的数据处理方法中,所述基于所述每个叶结点数据的特征参数,对所述多个叶结点数据进行至少一次合并,包括:基于所述每个叶结点数据的特征参数,调用第二库函数对所述多个叶结点数据进行所述至少一次合并。

例如,在本公开至少一实施例提供的数据处理方法中,所述对称三对角矩阵包括多个对角元素和多个次对角元素,所述将所述输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据,包括:判断所述输入矩阵数据中是否存在第一切割点,其中,响应于所述多个对角元素中的两个对角元素的相邻对角阵乘积大于与所述两个对角元素相邻的次对角元素,将所述两个对角元素之间的点作为所述第一切割点;响应于所述输入矩阵数据中存在所述第一切割点,基于所述第一切割点将所述输入矩阵数据首次切割为多个第一子矩阵。

例如,在本公开至少一实施例提供的数据处理方法中,所述将所述输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据,还包括:响应于所述多个第一子矩阵中存在尺寸小于或等于第一阈值的第一子矩阵,将所述尺寸小于或等于所述第一阈值的第一子矩阵作为第一叶结点数据,其中,所述多个叶结点数据包括通过所述首次切割得到的所述第一叶结点数据;响应于所述多个第一子矩阵中存在尺寸大于所述第一阈值的第一子矩阵,将所述尺寸大于所述第一阈值的第一子矩阵作为待切割矩阵数据。

例如,在本公开至少一实施例提供的数据处理方法中,所述将所述输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据,还包括:响应于输入矩阵数据中不存在所述第一切割点,将所述输入矩阵数据作为所述待切割矩阵数据。

例如,在本公开至少一实施例提供的数据处理方法中,所述将所述输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据,还包括:对所述待切割矩阵数据进行归一化更新;对所述归一化更新后的待切割矩阵数据进行循环递归切分,得到多个第二叶结点数据,其中,所述多个叶结点数据包括通过所述循环递归切分得到的所述多个第二叶结点数据。

例如,在本公开至少一实施例提供的数据处理方法中,所述对所述归一化更新后的待切割矩阵数据进行循环递归切分,包括:调用第三库函数对所述归一化更新后的待切割矩阵数据进行所述循环递归切分。

例如,在本公开至少一实施例提供的数据处理方法中,所述对所述多个叶结点数据进行并行计算,得到所述多个叶结点数据中的每个叶结点数据的特征参数,包括:调用第一库函数对所述多个第二叶结点数据和所述第一叶结点数据进行并行计算,得到所述多个第二叶结点数据中的每个第二叶结点数据的特征参数以及所述第一叶结点数据的特征参数。

例如,在本公开至少一实施例提供的数据处理方法中,所述基于所述每个叶结点数据的特征参数,对所述多个叶结点数据进行至少一次合并,得到合并数据,包括:对所述多个叶结点数据中的每相邻两个叶结点数据进行两两合并,得到至少一个第一合并数据;基于所述每个叶结点数据的特征参数,对所述至少一个第一合并数据进行并行计算,得到所述至少一个第一合并数据中的每个第一合并数据的特征参数。

例如,在本公开至少一实施例提供的数据处理方法中,所述对所述多个叶结点数据中的每相邻两个叶结点数据进行两两合并,包括:调用合并函数库对所述多个叶结点数据中的每相邻两个叶结点数据进行两两合并。

例如,在本公开至少一实施例提供的数据处理方法中,所述每个第一合并数据的特征参数包括所述每个第一合并数据的特征值和特征向量,所述每相邻两个叶结点数据的特征参数包括多个特征值,所述多个特征值组合成第一特征值序列,所述基于所述每个叶结点数据的特征参数,对所述至少一个第一合并数据进行并行计算,得到所述至少一个第一合并数据中的每个第一合并数据的特征参数,包括:调用第二库函数对所述至少一个第一合并数据进行并行计算,得到所述每个第一合并数据的第一中间式,其中,所述第一中间式包括所述第一特征值序列;基于所述第一中间式,在所述第二库函数中对所述每个第一合并数据进行预处理,得到预处理后的特征值序列和第二中间式;在所述第二库函数中对对应于所述至少一个第一合并数据的至少一个所述第二中间式进行并行计算,得到对应于所述每个第一合并数据的所述第二中间式的特征参数,其中,所述第二中间式的特征参数包括第二特征值和第二特征向量,所述第二特征值为所述每个第一合并数据的特征值;在所述第二库函数中将所述预处理后的特征值序列与所述第二特征向量相乘,得到所述每个第一合并数据的特征向量。

例如,在本公开至少一实施例提供的数据处理方法中,所述基于所述第一中间式,在所述第二库函数中对所述每个第一合并数据进行预处理,得到所述预处理后的特征值序列和第二中间式,包括:调用第四库函数对所述第一特征值序列进行重新排序,得到所述预处理后的特征值序列;基于所述预处理后的特征值序列,调用所述第四库函数对所述至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和所述至少一个更新后的第一合并数据中的每个更新后的第一合并数据的所述第二中间式。

例如,在本公开至少一实施例提供的数据处理方法中,所述基于所述预处理后的特征值序列,调用所述第四库函数对所述至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和所述至少一个更新后的第一合并数据中的每个更新后的第一合并数据的所述第二中间式,包括:基于所述预处理后的特征值序列,调用所述第四库函数对所述预处理后的特征值序列执行收缩处理,基于收缩处理后的特征值序列,调用所述第四库函数对所述至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和所述每个更新后的第一合并数据的所述第二中间式。

例如,在本公开至少一实施例提供的数据处理方法中,响应于所述多个叶结点数据包括两个叶结点数据,所述第一合并数据为所述合并数据。

例如,在本公开至少一实施例提供的数据处理方法中,响应于所述多个叶结点数据包括大于两个第二叶结点数据,所述基于所述每个叶结点数据的特征参数,对所述多个叶结点数据进行至少一次合并,得到合并数据,还包括:基于所述每个第一合并数据的特征参数,对所述至少一个第一合并数据进行至少一次合并和至少一次并行计算,得到所述合并数据。

例如,在本公开至少一实施例提供的数据处理方法中,所述基于所述合并数据,对所述输入矩阵数据进行特征求解,得到所述输入矩阵数据的特征参数,包括:对所述合并数据进行特征求解,得到所述合并数据的特征参数;对所述合并数据的特征参数进行反归一化更新,得到所述输入矩阵数据的特征参数。

例如,在本公开至少一实施例提供的数据处理方法中,所述对称三对角矩阵为双精度矩阵。

本公开至少一实施例还提供一种数据处理装置,该数据处理装置包括:获取模块,配置为获取输入矩阵数据,其中,所述输入矩阵数据为对称三对角矩阵;切割模块,配置为将所述输入矩阵数据进行矩阵切割得到多个叶结点数据;计算模块,配置为对所述多个叶结点数据进行并行计算,得到所述多个叶结点数据中的每个叶结点数据的特征参数;合并模块,配置为基于所述每个叶结点数据的特征参数,对所述多个叶结点数据进行至少一次合并,得到合并数据;特征求解模块,配置为,基于所述合并数据,对所述输入矩阵数据进行特征求解,得到所述输入矩阵数据的特征参数。

例如,在本公开至少一实施例提供的数据处理装置中,所述特征参数包括特征值和特征向量。

例如,在本公开至少一实施例提供的数据处理装置中,所述计算模块还配置为,调用第一库函数对所述多个叶结点数据进行并行计算。

例如,在本公开至少一实施例提供的数据处理装置中,所述合并模块还配置为,基于所述每个叶结点数据的特征参数,调用第二库函数对所述多个叶结点数据进行所述至少一次合并。

例如,在本公开至少一实施例提供的数据处理装置中,所述特征求解模块还配置为,对所述合并数据进行特征求解,得到所述合并数据的特征参数,以及对所述合并数据的特征参数进行反归一化更新,得到所述输入矩阵数据的特征参数。

本公开至少一实施例还提供一种电子设备。该电子设备包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块用于实现本公开任一实施例提供的数据处理方法。

本公开至少一实施例还提供一种存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现本公开任一实施例提供的数据处理方法。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为一种对称三对角矩阵的示意图;

图2为图1中的对称三对角矩阵等价变换的示意图;

图3为本公开至少一实施例提供的一种数据处理方法的示例性流程图;

图4为本公开至少一实施例提供的一种数据处理方法的多层数据框架一个示例的示意图;

图5为本公开至少一实施例提供的一种库函数调用流程的一个示例的示意图;

图6为图2中的步骤S20中对输入矩阵数据进行首次分割的示例性流程图;

图7为本公开至少一实施例提供的一种对对称三对角矩阵进行首次切割的一个示例的示意图;

图8为本公开至少一实施例提供的一种对待切割矩阵数据进行归一化更新的一个示例的示意图;

图9为本公开至少一实施例提供的一种对多个叶结点数据进行并行计算的一个示例的示意图;

图10为本公开至少一实施例提供的一种对第一合并数据进行预处理的一个示例的示意图;

图11为本公开至少一实施例提供的一种对第二中间式进行并行计算的一个示例的示意图;

图12为本公开至少一实施例提供的一种合并得到合并数据的一个示例的示意图;

图13为本公开的至少一实施例提供的一种数据处理装置的示意框图;

图14为本公开的至少一实施例提供的一种电子设备的示意框图;

图15为本公开的至少一实施例提供的另一种电子设备的示意框图;以及

图16为本公开的至少一实施例提供的一种存储介质的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。

图1为一种对称三对角矩阵的示意图。

例如,三对角矩阵的非零系数在主对角线和两条次对角线上;对于对称三对角矩阵,其两条次对角线上的元素相同。例如,如图1所示,T表示对称三对角矩阵,其对角线上的元素为a

例如,对如图1所示的对称三对角矩阵进行特征分解方法包括QR分解、二分法、分而治之法等。通过QR分解和二分法的时间复杂度较高(例如为O(n

图2为图1中的对称三对角矩阵等价变换的示意图。

例如,在分而治之法中,先将图1中的对阵三对角矩阵进行分割。例如,如图2所示,可以将图1中的对称三对角矩阵T中的对角线上的两个元素a

例如,图2中可以化简为如下公式(1)的形式:

其中,

例如,在公式(1)中,T

例如,Λ

其中,

例如,可以将公式(2)中的中间式用Z表示为如下公式(3)的形式:

例如,将公式(3)中的D进行重新排序、收缩等处理,得到更新后的D’=diag(d

对于小规模的对称三对角矩阵,在CPU中通过正交三角(QR)分解等方法进行串行的特征求解,串行计算的计算时间较长;对于大规模的对称三对角矩阵,在GPU等处理器装置的中可以采用分而治之法进行并行的特征求解,并行计算减少了计算时间,从而可以提高计算效率。然而,在GPU等处理器装置中对对称三对角矩阵进行特征求解时,需要先将对称三对角矩阵划分成尺寸小于特定阈值的多个叶结点数据;在计算多个叶结点数据时,仍然需要逐个调用特定的资源以在CPU中串行求解,造成GPU等处理器装置中的资源闲置问题,并且带来了较大的延时。

本公开至少一实施例提供一种数据处理方法,该数据处理方法包括:获取输入矩阵数据,其中,输入矩阵数据为对称三对角矩阵;将输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据;对多个叶结点数据进行并行计算,得到多个叶结点数据中的每个叶结点数据的特征参数;基于每个叶结点数据的特征参数,对多个叶结点数据进行至少一次合并,得到合并数据;基于合并数据,对输入矩阵数据进行特征求解,得到输入矩阵数据的特征参数。

本公开的至少一实施例还提供一种数据处理装置、电子设备与存储介质,用于实现上述实施例的数据处理方法。

本公开至少一实施例提供的方法、装置、设备以及存储介质,改进了处理器装置(例如GPU)的资源调用利用方式,可以充分调用处理器装置的资源来并行计算多个叶结点数据,而不需要逐个调用特定的资源以在CPU中串行求解多个叶结点数据,从而改善了处理器装置中的资源闲置问题,提高了处理器装置中对称三对角矩阵特征求解的计算效率。

下面,将参考附图详细地说明本公开至少一实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。

图3为本公开至少一实施例提供的一种数据处理方法的示例性流程图;图4为本公开至少一实施例提供的一种数据处理方法的多层数据框架一个示例的示意图。例如,图4为图3中数据处理方法的多层数据框架的一个示例。

例如,如图3所示,本公开至少一实施例提供了一种数据处理方法,可以用于在处理器装置(例如GPU)中采用分而治之法对对称三对角矩阵进行特征求解。例如,该方法包括以下步骤S10~S50。

步骤S10:获取输入矩阵数据;

步骤S20:将输入矩阵数据进行一次或多次矩阵切割得到多个叶结点数据;

步骤S30:对多个叶结点数据进行并行计算,得到多个叶结点数据中的每个叶结点数据的特征参数;

步骤S40:基于每个叶结点数据的特征参数,对多个叶结点数据进行至少一次合并,得到合并数据;

步骤S50:基于合并数据,对输入矩阵数据进行特征求解,得到输入矩阵数据的特征参数。

例如,在步骤S10中,输入矩阵数据例如为图1所示的对称三对角矩阵。例如,在一些示例中,输入矩阵数据为双精度对称三对角矩阵。

例如,在步骤S20中,将S10中获取的输入矩阵数据进行一次或多次矩阵切割。例如输入矩阵数据被循环递归切分为不同尺寸的分块,直到切割得到的分块的尺寸小于等于第一阈值,将其作为叶结点数据且不再被切割。例如,多个叶结点数据如图4中的最下一层的分块数据所示。

例如,在步骤S30中,可以调用第一库函数对多个叶结点数据进行并行计算,得到多个叶结点数据中的每个叶结点数据的特征参数。例如,第一库函数为处理器装置(例如GPU)中用于求解对称三对角矩阵的特征参数的库函数。例如,调用一次第一库函数即可得到多个叶结点数据的特征参数,从而实现了对多个叶结点数据的并行计算。例如,特征参数包括特征值和特征向量。

例如,在步骤S40中,合并过程的多层数据框架如图4所示。例如,如图4所示,可以基于每个叶结点数据的特征参数,对多个叶结点数据自下而上进行多次合并;基于在步骤S30中得到的最下一层的叶结点数据的特征参数,首先将多个叶结点数据分别两两合并,合并后再向上一层合并求解,然后继续迭代合并求解,从而得到合并数据。例如,合并数据为图4中的最上一层的最大合并块。

例如,在步骤S40中,可以调用第二库函数对多个叶结点数进行至少一次合并。例如,第二库函数为处理器装置(例如GPU)中用于求解对角矩阵进行一次合并更新后数据的特征参数的库函数。例如,在至少一次合并中的每一次合并中,都可以调用一次第二库函数。例如,调用一次第二库函数即可得到多个合并更新后数据的特征参数,从而实现了对多个合并更新后数据的并行计算。

例如,在步骤S50中,可以基于图4中的合并数据进行特征求解,最终得到输入矩阵数据的特征值和特征向量,从而完成整个矩阵的特征分解。

需要说明的是,图4中的多层数据框架仅为一个示例,输入矩阵数据也可以根据实际情况被划分为其他形式,本公开的实施例对此不作限制。

在一些示例中,可以通过调用处理器装置(例如GPU)中的多个库函数来实现本公开实施例的数据处理方法。例如,多个库函数可以自身构建得到,或者通过硬件平台等直接获得,从而可以通过调用不同功能的库函数来构建算法以在处理器装置中对输入矩阵数据进行特征求解;本公开的实施例对库函数的具体形式不作限制。

图5为本公开至少一实施例提供的一种库函数调用流程的一个示例的示意图。例如,通过如图5所示的库函数调用流程,可以在处理器装置(例如GPU)中实现图3所示的数据处理方法。

例如,如图5所示,对于步骤S20,首先,将步骤S10获取的输入矩阵数据首次切割为多个第一子矩阵,其中,小于或等于第一阈值的第一子矩阵可以直接作为叶结点数据(例如称为第一叶结点数据),将大于第一阈值的第一子矩阵作为待切割数据以进行进一步切割;其次,对待切割矩阵数据进行归一化更新,然后调用第三库函数对归一化更新后的待切割矩阵数据进行循环递归切分,得到多个叶结点数据(例如称为第二叶结点数据)。例如,叶结点数据可以为图4中的最下一层的分块数据。

例如,如图5所示,对于步骤S30,调用第一库函数对多个叶结点数据(包括所有第一叶结点数据和所有第二叶结点数据)进行并行计算,得到每个叶结点数据的特征参数。

例如,在上述执行步骤S30的过程中,调用一次第一库函数即可得到多个叶结点数据的特征参数,从而实现了对多个叶结点数据的并行计算。

例如,如图5所示,对于步骤S40,调用合并库函数对多个叶结点数据中的每相邻两个叶结点数据进行两两合并,得到至少一个第一合并数据。例如,第一合并数据可以为图4中的倒数第二层的分块数据。例如,相邻两个叶结点数据可以为公式(1)中的T

例如,如图5所示,基于步骤S30得到的每个叶结点数据的特征参数,调用第二库函数对至少一个第一合并数据进行并行计算,可以得到每个第一合并数据的特征参数。例如,在调用第二库函数的过程中,可以调用第四库函数对每个第一合并数据进行预处理(例如重新排序等处理);然后对至少一个第一合并数据进行并行更新计算,可以得到久期方程。例如,在第二库函数中调用第五库函数对久期方程进行计算,再将调用第四库函数和调用第五库函数得到的数据进行矩阵乘,即可得到第一合并数据的特征参数(例如特征值和特征向量)。

例如,在上述执行步骤S40的过程中,调用一次第二库函数即可得到至少一个第一合并数据的特征参数,从而实现了对至少一个第一合并数据的并行计算。

例如,如果多个叶结点数据包括大于两个第二叶结点数据(也即合并得到了多个第一合并数据,如图4所示),则需要对多个第一合并数据进行进一步的合并。例如,如图5所示,在步骤S40中,基于如上得到的每个第一合并数据的特征参数,再对多个第一合并数据迭代进行至少一次合并和至少一次并行计算,其中,每一次的迭代合并和并行计算都采用步骤S40中的库函数调用方式,从而得到合并数据。例如,合并数据可以为图4中的最上一层的最大合并块。

例如,如图5所示,对于步骤S50,继续采用步骤S40的库函数调用方式对合并数据进行特征求解,得到合并数据的特征参数;对合并数据的特征参数进行反归一化更新,最终得到输入矩阵数据的特征参数。

需要说明的是,如果步骤S20得到的多个第二叶结点数据仅包括两个叶结点数据,那么第一合并数据即为合并数据;也即是,仅实施一次步骤S40中的计算即可得到合并数据。

需要说明的是,图5中的库函数调用流程仅为一个示例,库函数的选择和调用可以根据实际情况进行选择,本公开的实施例对此不作限制。

本公开至少一实施例提供的数据处理方法,改进了处理器装置(例如GPU)的资源(例如图5所示的多个库函数)调用利用方式,可以充分调用处理器装置的资源来并行计算多个叶结点数据,而不需要逐个调用特定的资源以在CPU中串行求解多个叶结点数据,从而改善了处理器装置中的资源闲置问题,提高了处理器装置中对称三对角矩阵特征求解的计算效率。

图6为图2中的步骤S20中对输入矩阵数据进行首次分割的示例性流程图;图7为本公开至少一实施例提供的一种对对称三对角矩阵进行首次切割的一个示例的示意图。例如,图7为图5中首次切割的一个具体示例。

例如,图6所示对输入矩阵数据进行首次分割包括以下步骤S210~S240。

步骤S210:判断输入矩阵数据中是否存在第一切割点;

步骤S220:响应于输入矩阵数据中存在第一切割点,基于第一切割点将输入矩阵数据首次切割为多个第一子矩阵;

步骤S230:响应于多个第一子矩阵中存在尺寸小于或等于第一阈值的第一子矩阵,将尺寸小于或等于第一阈值的第一子矩阵作为第一叶结点数据;

步骤S240:响应于多个第一子矩阵中存在尺寸大于第一阈值的第一子矩阵,将尺寸大于第一阈值的第一子矩阵作为待切割矩阵数据。

例如,在步骤S210中,对称三对角矩阵包括主对角线上的多个对角元素和次对角线上的多个次对角元素(两条次对角线对称);如果多个对角元素中的两个对角元素的相邻对角阵乘积大于与两个对角元素相邻的次对角元素,则将两个对角元素之间的点作为第一切割点。

例如,在步骤S220中,如果识别到输入矩阵数据中存在上述第一切割点(第一切割点可以为一个或多个),则可以在第一切割点处将输入矩阵数据首次切割为多个第一子矩阵。

例如,进一步地,对于步骤S220得到的多个第一子矩阵,在步骤S230中,如果多个第一子矩阵中存在尺寸小于或等于第一阈值的第一子矩阵,则可以将尺寸小于或等于第一阈值的第一子矩阵作为第一叶结点数据(即直接作为叶结点数据);在步骤S240中,如果多个第一子矩阵中存在尺寸大于第一阈值的第一子矩阵,则可以将尺寸大于第一阈值的第一子矩阵作为待切割矩阵数据。例如,多个叶结点数据包括通过上述首次切割得到的第一叶结点数据,还包括将待切割矩阵数据进一步切割得到的小于第一阈值的第二叶结点数据。

例如,在一些示例中,图6所示对输入矩阵数据进行首次分割还包括步骤S250:响应于输入矩阵数据中不存在第一切割点,将输入矩阵数据作为待切割矩阵数据。也即是,如果输入矩阵数据中不存在第一切割点,则可以不进行首次切割,而直接将输入矩阵数据作为待切割矩阵数据。

例如,如图7所示,假设主对角线上的多个对角元素为d

例如,如图7所示,经过上述首次切割例如得到3个第一子矩阵,也即图7中主对角线上由虚线分割成的3个三对角矩阵。例如,当第一阈值为25时,如果左上角的第一子矩阵的尺寸小于或等于25(即x-1<=25),则可以将左上角的第一子矩阵作为第一叶结点数据;如果右下角的第一子矩阵的尺寸也小于或等于25(即n-m<=25),则可以将右下角的第一子矩阵也作为第一叶结点数据;如果中间的第一子矩阵的尺寸大于25(即m-x+1>25),则可以将中间的第一子矩阵作为待切割矩阵数据。

需要说明的是,第一阈值可以为25,也可以根据实际需要选择其他数值,本公开的实施例对此不作限制。

例如,对于首次切割得到的第一叶结点数据,可以先将所有第一叶结点数据放入一个列表以用于后续计算;对于首次切割得到待切割数据,可以将所有待切割数据放入另一个列表以进行进一步切割。

例如,图3中的步骤S20还包括:对待切割矩阵数据进行归一化更新;也即是,将待切割数据进行进一步切割之前,可以先对待切割数据进行归一化更新。例如,可以将待切割数据的所有对角元素和次对角元素求解最大值后做归一化,以更新待切割数据的所有对角元素和次对角元素,从而防止待切割数据中的元素值超过硬件允许的阈值而导致计算溢出。

图8为本公开至少一实施例提供的一种对待切割矩阵数据进行归一化更新的一个示例的示意图。例如,图8为将图7中首次切割得到的待切割矩阵数据进行归一化更新的一个具体示例。

例如,如图8所示,对于图7中首次切割得到的待切割矩阵数据(图8中左侧矩阵),从对角元素d

例如,对待切割矩阵数据进行归一化更新之后,图3中的步骤S20还包括:对归一化更新后的待切割矩阵数据进行循环递归切分,得到多个第二叶结点数据。例如,如图5所示,可以调用第三库函数对归一化更新后的待切割矩阵数据进行循环递归切分。例如,根据上文所述,多个叶结点数据包括通过循环递归切分得到的多个第二叶结点数据。例如,每个第二叶结点数据的尺寸也小于或等于第一阈值。

例如,在一些示例中,可以对待切割矩阵数据进行循环递归除2切分,直到切割后的矩阵数据尺寸满足条件小于或等于第一阈值(例如25),将其作为第二叶结点数据且不再被切割。例如,待切割矩阵数据被切割次数接近log(N,2),这里N为待切割矩阵数据的原始尺寸。例如,当N=1600且第一阈值为25时,每一次除2切分后的尺寸依次为:1600、800、400、200、100、50、25,即总共切割6次。

图9为本公开至少一实施例提供的一种对多个叶结点数据进行并行计算的一个示例的示意图。例如,图9为图5中调用第一库函数对多个叶结点数据进行并行计算的一个示例。

例如,如图9所示,最下一层为多个叶结点数据,多个叶结点数据可以为图4中的最下一层的分块数据。例如,在图3中步骤S30中,基于首次切割得到的第一叶结点数据和将待切割数据进行循环递归切分得到的多个第二叶结点数据,调用第一库函数对多个第二叶结点数据和第一叶结点数据进行并行计算,可以得到每个第二叶结点数据的特征参数以及第一叶结点数据的特征参数。例如,特征参数包括特征值和特征向量。

例如,如图9所示,调用一次第一库函数即可以得到所有第一叶结点数据和第二叶结点数据的特征参数,从而实现了对多个叶结点数据的并行计算。

例如,在得到每个叶结点数据的特征参数之后,图3中的步骤S40包括:对多个叶结点数据中的每相邻两个叶结点数据进行两两合并,得到至少一个第一合并数据。例如,如图5所示,可以调用合并库函数对多个叶结点数据中的每相邻两个叶结点数据进行两两合并,得到至少一个第一合并数据。

例如,在得到至少一个第一合并数据之后,图3中的步骤S40还包括:基于每个叶结点数据的特征参数,对至少一个第一合并数据进行并行计算,得到至少一个第一合并数据中的每个第一合并数据的特征参数。例如,每个第一合并数据的特征参数包括每个第一合并数据的特征值和特征向量。

例如,进一步地,在图3中的步骤S40中,对至少一个第一合并数据进行并行计算包括:调用第二库函数对叶结点至少一个第一合并数据进行并行计算,得到叶结点每个第一合并数据的第一中间式;基于叶结点第一中间式,在叶结点第二库函数中对叶结点每个第一合并数据进行预处理,得到预处理后的特征值序列和第二中间式;在叶结点第二库函数中对对应于叶结点至少一个第一合并数据的至少一个叶结点第二中间式进行并行计算,得到对应于叶结点每个第一合并数据的叶结点第二中间式的特征参数;在叶结点第二库函数中将叶结点预处理后的特征值序列与叶结点第二特征向量相乘,得到每个第一合并数据的特征向量。

例如,将第i个叶结点数据表示为T

例如,如图5所示,调用合并库函数将T

例如,如图5所示,基于第一中间式Z,可以在第二库函数中调用第四库函数对第一合并数据T进行预处理(例如重新排序等处理),得到预处理后的特征值序列D’;基于预处理后的特征值序列D’和第一中间式Z进行计算,可以得到第二中间式Z’。例如,第二中间式Z’为久期方程。例如,第二中间式Z’的特征值即为第一合并数据T的特征值。

图10为本公开至少一实施例提供的一种对第一合并数据进行预处理的一个示例的示意图。例如,图10为图5中在第二库函数中调用第四库函数对第一合并数据进行预处理的一个示例。

例如,如图10所示,最下一层为多个叶结点数据,倒数第二层为每相邻两个叶结点数据合并而成的第一合并数据。例如,叶结点数据可以为图4中的最下一层的分块数据;第一合并数据可以为图4中的倒数第二层的分块数据。例如,如图10所示,第一合并数据T包含左上角和右下角两个对称三对角分块T

例如,如图10所示,可以在第二库函数中调用第四库函数对第一特征值序列D进行重新排序,得到预处理后的特征值序列D’。例如,对第一特征值序列D中的特征值序列Λ

例如,如图10所示,基于预处理后的特征值序列,进一步调用第四库函数对至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和每个更新后的第一合并数据的第二中间式。例如,具体地,对于第一合并数据T中的第一中间式Z=D+ρzz

例如,在一些示例中,对于预处理后的特征值序列D’=diag(d

例如,如图10所示,可以基于重新排序、收缩处理后的特征值序列,调用第四库函数对至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和每个更新后的第一合并数据的第二中间式;具体并行更新计算过程如上文所述,这里不再赘述。

图11为本公开至少一实施例提供的一种对第二中间式进行并行计算的一个示例的示意图。例如,图11为图5中在第二库函数中调用第五库函数对第二中间式进行并行计算的一个示例。

例如,如图11所示,在图10中获得更新后的第一合并数据和第二中间式之后,在第二库函数中调用第五库函数对对应于至少一个第一合并数据的至少一个第二中间式进行并行计算,得到对应于每个第一合并数据的第二中间式的特征参数。例如,第二中间式的特征参数包括第二特征值和第二特征向量,第二特征值即为第一合并数据的特征值。

例如,如图11所示,进一步地,在第二库函数中调用矩阵乘,将预处理后的特征值序列D’与第二特征向量相乘,即可得到第一合并数据的特征向量。

例如,如图10和图11所示,在第二库函数中,分别调用一次第四库函数和第五库函数,即可得到至少一个第一合并数据的特征参数(特征值和特征向量),从而实现了对至少一个第一合并数据的并行计算。

例如,当合并得到了多个第一合并数据时,需要对多个第一合并数据进行进一步的合并,直到得到合并数据。例如,在图3的步骤S40中,可以基于每个第一合并数据的特征参数,对至少一个第一合并数据进行至少一次合并和至少一次并行计算,得到合并数据。

例如,在图3的步骤S50中,可以对合并数据进行特征求解,得到合并数据的特征参数;然后,对合并数据的特征参数进行反归一化更新,得到输入矩阵数据的特征参数。

图12为本公开至少一实施例提供的一种合并得到合并数据的一个示例的示意图。例如,图12为图5中迭代合并得到合并数据的一个示例。

例如,如图12所示,可以基于每个第一合并数据的特征参数,再对多个第一合并数据迭代进行至少一次合并和至少一次并行计算,其中,每一次的迭代合并和并行计算都采用例如图10和图11中的库函数调用方式,从而得到合并数据。例如,合并数据可以为图4中的最上一层的最大合并块。

例如,如图12所示,在图3的步骤S50中,继续采用上述库函数调用方式对合并数据进行特征求解,得到合并数据的特征参数(包括特征值和特征向量)。例如,合并数据的特征向量即输入矩阵数据的特征向量;然而,由于在对待切割矩阵数据进行循环递归切分之前,首先对待切割矩阵数据进行了归一化更新,需要对合并数据的特征值进行反归一化更新,才能得到最终的输入矩阵数据的特征值。

例如,如图12所示,在每一步的迭代合并中都会更新一次反归一化值;在最后一次迭代合并得到合并数据时,可以得到最终的反归一化值scale’。例如,在图8的示例中,由于在归一化更新时将待切割数据的所有元素分别除以了scale,在图12中的反归一化更新时需要将合并数据的特征值乘以反归一化值scale’,从而最终得到输入矩阵数据的特征值。

本公开至少一实施例提供的数据处理方法,改进了处理器装置(例如GPU)的资源(例如图5~图12所示的多个库函数)调用利用方式,可以充分调用处理器装置的资源来并行计算多个叶结点数据,而不需要逐个调用特定的资源以在CPU中串行求解多个叶结点数据,从而改善了处理器装置中的资源闲置问题,提高了处理器装置中对称三对角矩阵特征求解的计算效率。

图13为本公开的至少一实施例提供的一种数据处理装置的示意框图。

例如,如图13所示,该数据处理装置200包括获取模块210、切割模块220、计算模块230、合并模块240和特征求解模块250。

例如,获取模块210配置为获取输入矩阵数据。例如,输入矩阵数据为对称三对角矩阵。也即是,该获取模块210可以被配置为执行例如图3所示的步骤S10。例如,在一些示例中,输入矩阵数据为双精度对称三对角矩阵。

例如,切割模块220配置为将输入矩阵数据进行矩阵切割得到多个叶结点数据。也即是,该切割模块220可以被配置为执行例如图3所示的步骤S20。

例如,计算模块230配置为对多个叶结点数据进行并行计算,得到多个叶结点数据中的每个叶结点数据的特征参数。也即是,该计算模块230可以被配置为执行例如图3所示的步骤S30。例如,特征参数包括特征值和特征向量。

例如,合并模块240配置为基于每个叶结点数据的特征参数,对多个叶结点数据进行至少一次合并,得到合并数据。也即是,该合并模块240可以被配置为执行例如图3所示的步骤S40。

例如,特征求解模块250配置为,基于合并数据,对输入矩阵数据进行特征求解,得到输入矩阵数据的特征参数。也即是,该特征求解模块250可以被配置为执行例如图3所示的步骤S50。

例如,对称三对角矩阵包括多个对角元素和多个次对角元素,切割模块220还配置为:判断输入矩阵数据中是否存在第一切割点,其中,响应于多个对角元素中的两个对角元素的相邻对角阵乘积大于与两个对角元素相邻的次对角元素,将两个对角元素之间的点作为第一切割点;响应于输入矩阵数据中存在第一切割点,基于第一切割点将输入矩阵数据首次切割为多个第一子矩阵。

例如,对于首次切割为多个第一子矩阵,切割模块220还配置为:响应于多个第一子矩阵中存在尺寸小于或等于第一阈值的第一子矩阵,将尺寸小于或等于第一阈值的第一子矩阵作为第一叶结点数据,其中,多个叶结点数据包括通过首次切割得到的第一叶结点数据;响应于多个第一子矩阵中存在尺寸大于第一阈值的第一子矩阵,将尺寸大于第一阈值的第一子矩阵作为待切割矩阵数据。例如,响应于输入矩阵数据中不存在第一切割点,切割模块220还配置为将输入矩阵数据作为待切割矩阵数据。

例如,对于待切割矩阵数据,切割模块220还配置为:对待切割矩阵数据进行归一化更新;对归一化更新后的待切割矩阵数据进行循环递归切分,得到多个第二叶结点数据。例如,多个叶结点数据包括通过循环递归切分得到的多个第二叶结点数据。例如,切割模块220还配置为,调用第三库函数对归一化更新后的待切割矩阵数据进行循环递归切分。

例如,计算模块230还配置为,调用第一库函数对多个叶结点数据进行并行计算。进一步地,计算模块230还配置为,调用第一库函数对多个第二叶结点数据和第一叶结点数据进行并行计算,得到多个第二叶结点数据中的每个第二叶结点数据的特征参数以及第一叶结点数据的特征参数。

例如,合并模块240还配置为,基于每个叶结点数据的特征参数,调用第二库函数对多个叶结点数据进行至少一次合并。进一步地,合并模块240还配置为:对多个叶结点数据中的每相邻两个叶结点数据进行两两合并,得到至少一个第一合并数据;基于每个叶结点数据的特征参数,对至少一个第一合并数据进行并行计算,得到至少一个第一合并数据中的每个第一合并数据的特征参数。例如,合并模块240还配置为,调用合并函数库对多个叶结点数据中的每相邻两个叶结点数据进行两两合并。

例如,每个第一合并数据的特征参数包括每个第一合并数据的特征值和特征向量,每相邻两个叶结点数据的特征参数包括多个特征值,多个特征值组合成第一特征值序列。例如,合并模块240还配置为:调用第二库函数对至少一个第一合并数据进行并行计算,得到每个第一合并数据的第一中间式,其中,第一中间式包括第一特征值序列;基于第一中间式,在第二库函数中对每个第一合并数据进行预处理,得到预处理后的特征值序列和第二中间式;在第二库函数中对对应于至少一个第一合并数据的至少一个第二中间式进行并行计算,得到对应于每个第一合并数据的第二中间式的特征参数,其中,第二中间式的特征参数包括第二特征值和第二特征向量,第二特征值为每个第一合并数据的特征值;在第二库函数中将预处理后的特征值序列与第二特征向量相乘,得到每个第一合并数据的特征向量。

例如,对于对每个第一合并数据进行预处理的过程,合并模块240还配置为:调用第四库函数对第一特征值序列进行重新排序,得到预处理后的特征值序列;基于预处理后的特征值序列,调用第四库函数对至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和至少一个更新后的第一合并数据中的每个更新后的第一合并数据的第二中间式。例如,进一步地,对于调用第四库函数对至少一个第一合并数据进行并行更新计算的过程,合并模块240还配置为:基于预处理后的特征值序列,调用第四库函数对预处理后的特征值序列执行收缩处理,基于收缩处理后的特征值序列,调用第四库函数对至少一个第一合并数据进行并行更新计算,得到至少一个更新后的第一合并数据和每个更新后的第一合并数据的第二中间式。

例如,响应于多个叶结点数据包括两个叶结点数据,第一合并数据为合并数据。例如,响应于多个叶结点数据包括大于两个第二叶结点数据,合并模块240还配置为:基于每个第一合并数据的特征参数,对至少一个第一合并数据进行至少一次合并和至少一次并行计算,得到合并数据。

例如,特征求解模块250还配置为,对合并数据进行特征求解,得到合并数据的特征参数,以及对合并数据的特征参数进行反归一化更新,得到输入矩阵数据的特征参数。

由于在上述描述例如图3所示的数据处理方法的过程中,已经对上述数据处理装置200的操作所涉及的内容的细节进行了介绍,因此这里为简洁起见不再赘述,相关细节可参照以上关于图3~图12的描述。

需要说明的是,图13所示的数据处理装置200中上述的各个模块可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些模块可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。作为示例,参照图13描述的装置可以是PC计算机、平板装置、个人数字助理、智能手机、web应用或其它能够执行程序指令的装置,但不限于此。

另外,尽管以上在描述数据处理装置200时将其划分为用于分别执行相应处理的模块,然而,本领域技术人员清楚的是,各模块执行的处理也可以在装置中不进行任何具体模块划分或者各模块之间并无明确划界的情况下执行。此外,以上参照图13描述的数据处理装置200并不限于包括以上描述的模块,而是还可以根据需要增加一些其它模块(例如,写入模块、控制模块等),或者以上模块也可被组合。

本公开的至少一实施例还提供一种电子设备,该电子设备包括处理器和存储器;该存储器包括一个或多个计算机程序模块;该一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上文所述的本公开的实施例提供的数据处理方法。例如,该处理器可以为单核处理器或多核处理器。

图14为本公开的至少一实施例提供的一种电子设备的示意框图

例如,如图14所示,该电子设备300包括处理器310和存储器320。例如,存储器320用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器310用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器310运行时可以执行根据上文所述的数据处理方法的一个或多个步骤。存储器320和处理器310可以通过总线系统和/或其它形式的连接机构(未示出)互连。

例如,处理器310可以是中央处理单元(CPU)、图形处理器(GPU)数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86、RISC-V或ARM架构等。处理器310可以为通用处理器或专用处理器,可以控制电子设备300中的其它组件以执行期望的功能。

例如,存储器320可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器310可以运行一个或多个计算机程序模块,以实现电子设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。

需要说明的是,本公开的实施例中,电子设备300的具体功能和技术效果可以参考上文中关于本公开至少一实施例提供的数据处理方法的描述,此处不再赘述。

图15为本公开的至少一实施例提供的另一种电子设备的示意框图。

例如,如图15所示,该电子设备400例如适于用来实施本公开实施例提供的数据处理方法。需要注意的是,图15示出的电子设备400仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。

例如,如图15所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)41,其可以根据存储在只读存储器(ROM)42中的程序或者从存储装置48加载到随机访问存储器(RAM)43中的程序而执行各种适当的动作和处理。在RAM 43中,还存储有用于缓存系统模拟的设备400操作所需的各种程序和数据。处理装置41、ROM 42以及RAM 43通过总线44彼此相连。输入/输出(I/O)接口45也连接至总线44。通常,以下装置可以连接至I/O接口45:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置46;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置47;包括例如磁带、硬盘等的存储装置48;以及通信装置49。通信装置49可以允许电子设备400与其他电子设备进行无线或有线通信以交换数据。

虽然图15示出了具有各种装置的电子设备400,但应理解的是,并不要求实施或具备所有示出的装置,电子设备400可以替代地实施或具备更多或更少的装置。

关于电子设备400的详细说明和技术效果,可以参考上文关于数据处理方法的相关描述,此处不再赘述。

图16为本公开的至少一实施例提供的一种存储介质的示意图。

例如,如图16所示,存储介质500存储有非暂时性计算机可读指令510。例如,当非暂时性计算机可读指令510由计算机执行时执行根据上文所述的数据处理方法中的一个或多个步骤。

例如,该存储介质500可以应用于图14所示的电子设备300中。例如,存储介质500可以为电子设备300中的存储器320。例如,关于存储介质500的相关说明可以参考图14所示的电子设备300中的存储器320的相应描述,此处不再赘述。

对于本公开,有以下几点需要说明:

(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。

以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

技术分类

06120115921489