首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际检索单位 / 国际检索 / 现有技术 / 通过KRYLOV子空间扩展求解具有多个右端的线性方程组的技术

通过KRYLOV子空间扩展求解具有多个右端的线性方程组的技术

阅读:719发布:2021-01-17

专利汇可以提供通过KRYLOV子空间扩展求解具有多个右端的线性方程组的技术专利检索,专利查询,专利分析的服务。并且一个 实施例 阐述用于求解包括与多个右端向量相耦合的相同矩阵A的线性方程组的方法。针对每个新右端向量,解算器基于与先前右端向量相关联的Krylov子空间和数据来扩展现有的Krylov子空间。解算器然后针对新右端向量使用经扩展的Krylov子空间以近似求解线性方程组。通过针对每个新右端向量扩展Krylov子空间,解算器持续地杠杆调整来自在先右端向量的信息。有利地,扩展Krylov子空间在计算上典型地快于 现有技术 ,诸如创建新Krylov子空间或变换现有的Krylov子空间。因此,通过实现所公开的技术,超过与包括求解某些类的线性方程组的 算法 相关联的时间约束的可能性可以减少。,下面是通过KRYLOV子空间扩展求解具有多个右端的线性方程组的技术专利的具体信息内容。

1.一种用于求解具有多个右端向量的线性方程组的方法,所述方法包括:
标识包括常数矩阵、要求解的变量、以及第一右端向量的第一线性方程组;
基于Krylov子空间生成所述第一线性方程组的第一近似解;
计算与所述第一右端向量有关的第一数据集;
标识包括所述常数矩阵、所述要求解的变量、以及第二右端向量的第二线性方程组;
基于所述第一数据集扩展所述Krylov子空间;以及
基于所述Krylov子空间生成所述第二线性方程组的第二近似解。
2.根据权利要求1所述的方法,其中生成所述第一近似解包括:
基于所述Krylov子空间生成中间解;
计算所述中间解的残差;以及
降低所述中间解的所述残差以生成所述第一近似解。
3.根据权利要求1所述的方法,其中所述第一数据集包括源自所述第一右端向量和所述Krylov子空间的第一向量集。
4.根据权利要求1所述的方法,其中扩展所述Krylov子空间而不对所述Krylov子空间施加任何变换操作。
5.根据权利要求1所述的方法,进一步包括:
确定所述Krylov子空间的标准正交基不超过最大大小;
计算与所述第二右端向量有关的第二数据集;以及
基于所述第二数据集扩展所述Krylov子空间。
6.根据权利要求1所述的方法,进一步包括:
确定所述Krylov子空间的标准正交基超过最大大小;
计算与所述第二右端向量有关的第二数据集;以及
基于所述第二数据集替换包括在所述Krylov子空间的所述标准正交基中的至少部分数据。
7.根据权利要求1所述的方法,其中所述第一数据集包括未包括在所述Krylov子空间的标准正交基中的一个或多个向量。
8.根据权利要求1所述的方法,其中与计算所述第一数据集有关的一个或多个操作和与生成所述第一近似解有关的一个或多个操作大致并行发生。
9.一种配置为求解具有多个右端向量的线性方程组的系统,所述系统包括:
解算器程序,配置为:
标识包括常数矩阵、要求解的变量、以及第一右端向量的第一线性方程组;
基于Krylov子空间生成所述第一线性方程组的第一近似解;
计算与所述第一右端向量有关的第一数据集;
标识包括所述常数矩阵、所述要求解的变量、以及第二右端向量的第二线性方程组;
基于所述第一数据集扩展所述Krylov子空间;以及
基于所述Krylov子空间生成所述第二线性方程组的第二近似解。
10.根据权利要求9所述的系统,其中与计算所述第一数据集有关的一个或多个操作和与生成所述第一近似解有关的一个或多个操作大致并行发生。

说明书全文

通过KRYLOV子空间扩展求解具有多个右端的线性方程组

的技术

[0001] 相关申请的交叉引用
[0002] 本申请要求于2012年7月17日提交的、序列号为61/672,487的美国临时专利申请的优先权,在此通过援引的方式对其加以合并。

技术领域

[0003] 本发明总地涉及通用计算,并且,更具体地,涉及用于通过克雷洛夫(Krylov)子空间扩展求解具有多个右端(right hand side)的线性方程组的技术。

背景技术

[0004] 线性方程组出现在诸如化学、结构分析、物理、数学等范围广泛的领域内的科学计算的许多应用中。并且求解这种线性方程组是使用在这些领域中的许多算法的重要部分,诸如化学处理仿真算法。众所周知的是,线性方程组可以以矩阵形式表示为Ax=RHS。通常,包括在线性方程组中的元素基于问题的类型而展现出相似性。具体来讲,许多实际问题导致包括大型稀疏A矩阵的线性方程组。注意,在包括N行的稀疏矩阵中,非零系数的数目是2
(以大写O标记)O(N)而不是O(N)。进一步地,一些包括相同大型稀疏A矩阵的线性方程组用来求解具有许多不同但相关的右端向量(RHS)的方程组。然而,对于大型矩阵A,确定针对甚至一个右端向量的精确解x可能也要求太多存储器和太多时间才能发挥作用。因此,使用迭代技术来生成近似解。
[0005] 在求解包括与多个相关右端向量相耦合的相同大型矩阵A的线性方程组的一个方法中,每个右端向量被作为独立问题对待。例如,Krylov迭代解算器可用来针对每个RHS分别查找近似解x。Krylov迭代解算器典型地生成近似解的初始猜测并构建由迭代解算器根据初始残差(即RHS-Ax)所创建的Krylov子空间的标准正交基。随后,Krylov迭代解算器通过最小化残差而生成逐次近似解。针对每次迭代,Krylov解算器使用包括先前近似解的可用信息来获得更好的新解。Krylov解算器继续迭代,增量地最小化残差,直到超过预设时间限制为止或直到残差低于预定义值(即可接收残差)为止。为针对新右端向量求解,Krylov迭代解算器完全重新开始该过程。注意,Krylov迭代解算器在针对新右端向量求解之前构建新Krylov子空间的新标准正交基。以该方式针对每个右端向量求解的一个限制是构建相关联Krylov子空间的基典型地非常耗时。因此,当应用要求针对许多不同右端向量求解线性方程组时,将每个右端向量作为单独问题对待可能超过应用的时间约束。
[0006] 在求解包括与多个相关右端向量相耦合的相同大型矩阵A的线性方程组的另一个方法中,迭代解算器针对每个后续右端向量来变换初始Krylov子空间。在该方法中,迭代解算器构造初始标准正交基和相应Krylov子空间以针对第一右端向量求解。随后,为了针对新右端向量求解,迭代解算器变换标准正交基和Krylov子空间。解算器然后使用经变换的标准正交基和Krylov子空间以针对新右端向量求解出近似x。类似地,针对每个新右端向量,迭代解算器实施变换并且然后进行迭代以针对新右端向量近似地求解。当右端向量紧密相关时,使用变换来代替创建全新Krylov子空间会减少达到可接受的精度平所要求的时间。然而,实施变换仍然非常耗时。并且,尽管在执行时间上有所减少,在许多应用中该方法仍然超过可用时间。
[0007] 如前所述,本领域中所需要的是用于求解某些类的、具有多个右端的线性方程组的更高效的技术。

发明内容

[0008] 本发明的一个实施例阐述用于求解具有多个右端向量的线性方程组的方法。方法包括标识包括常数矩阵、要求解的变量、以及第一右端向量的第一线性方程组;基于Krylov子空间生成第一线性方程组的第一近似解;计算与第一右端向量有关的第一数据集;标识包括常数矩阵、要求解的变量、以及第二右端向量的第二线性方程组;基于第一数据集扩展Krylov子空间;以及基于Krylov子空间生成第二线性方程组的第二近似解。
[0009] 本发明的其他实施例包括但不限于计算机可读存储介质以及系统,该计算机可读存储介质包括当被处理单元所执行时致使处理单元实现本文所描述的技术的各方面的指令,该系统包括配置为实现本文所描述的技术的各方面的不同元件。
[0010] 通过实现所公开的技术,解算器程序可杠杆调整源自线性方程组的先前右端向量的信息以减少针对后续右端向量求解线性方程组所要求的时间。具体来讲,通过针对每个新右端向量持续扩展Krylov子空间的标准正交基,解算器可比现有技术更高效地针对相关右端向量求解线性方程组。因此,某些软件应用的整体性能可得到改进。附图说明
[0011] 因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,并且因此不应被认为是对其范围的限制,本发明可以许可其他等效的实施例。
[0012] 图1是示出了配置为实现本发明的一个或多个方面的计算机系统框图
[0013] 图2是根据本发明的一个实施例的、示出图1的解算器和构造器的示意图;
[0014] 图3是根据本发明的一个实施例的、示出解算器执行次序和构造器执行次序的示意图;
[0015] 图4是根据本发明的一个实施例的、用于针对不同右端向量来求解线性方程组的方法步骤的流程图;以及
[0016] 图5是根据本发明的一个实施例的、用于基于不同右端向量来扩展Krylov子空间的标准正交基的方法步骤的流程图。

具体实施方式

[0017] 在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实践。
[0018] 图1是示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如所示,计算机系统100包括但不限于,经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU)102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘鼠标)接收用户输入并且经由通信路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113(例如外围部件互连(PCI)Express、加速图形端口或超传输链路)耦连到存储器桥105;在一个实施例中,并行处理子系统112是将像素传递到显示设备110(例如常规的基于阴极射线管或液晶显示器的监视器)的图形子系统。系统盘114也连接到I/O桥107。交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)或其他端口连接、压缩光盘(CD)驱动器、数字视频光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的包括具体命名的通信路径106和113的各种通信路径可以使用任何适合的协议实现,诸如PCI Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
[0019] 如所示,并行处理子系统112耦连到本地并行处理(PP)存储器124。可使用一个或多个集成电路设备或以任何其他技术上可行的方式来实现并行处理子系统112和并行处理存储器124,该一个或多个集成电路设备诸如可编程处理器、专用集成电路(ASIC)、或存储器设备。如所示,并行处理子系统112经由连接到存储器桥105(或在可替代实施例中直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信。并行处理子系统112到计算机系统100的其余部分的连接也可以改变。在一些实施例中,并行处理子系统112实现为可插入计算机系统100的扩展槽中的插卡。在其他实施例中,并行处理子系统112可集成在具有诸如存储器桥105或I/O桥107的总线桥的单个芯片上。在又一个实施例中,并行处理子系统112的一些或所有元件可集成在具有CPU102的单个芯片上。在一个实施例中,通信路径113是PCI Express链路。还可使用其他通信路径。
[0020] 在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,与此同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件集成在单个子系统中,诸如结合存储器桥105、CPU102以及I/O桥107以形成片上系统(SoC)。
[0021] 并行处理子系统112可装备有任何数量的并行处理存储器124并可以以任何组合方式使用并行处理存储器124和系统存储器104。并行处理子系统112可从系统存储器104和/或本地并行处理存储器124转移数据到内部(片上)存储器、处理数据以及将结果数据回写到系统存储器104和/或本地并行处理存储器204,其中这种数据可由包括CPU102或另一个并行处理子系统112的其他系统部件访问
[0022] 在操作中,CPU102是计算机系统100的主处理器,控制和协调包括并行处理子系统112的其他系统部件的操作。有利地,并行处理子系统112可相对于CPU102的操作异步地执行命令。如所示,系统存储器104包括在CPU102上执行的构造器109并且并行处理存储器124包括在并行处理子系统112上执行的解算器129。构造器109和解算器129异步地合作以求解具有多个右端的线性方程组。通过共同工作以高效地利用CPU102和并行处理子系统112这二者,构造器109和解算器129对求解线性方程组所要求的时间进行优化。在可替代实施例中,构造器109和解算器129可以任何组合方式在CPU102和并行处理子系统112上执行。进一步地,构造器109和解算器129可组合成单个程序或分解成附加程序。
[0023] 应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。大型实施例可以包括两个或两个以上的CPU102以及两个或两个以上的并行处理子系统112。本文所示的特定部件是可选的;例如,任何数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
[0024] 图2是根据本发明的一个实施例的、示出图1的解算器129和构造器109的示意图。解算器129和构造器109共同配置为针对多个右端求解线性方程组。
[0025] 线性方程组可以以矩阵形式表示为Ax=RHS。本领域的技术人员应理解的是,从系统存储器104拷贝到并行处理存储器124以及从并行处理存储器124拷贝到系统存储器104的带宽是受限的。并且相比于系统存储器104所提供的,并行处理存储器124对包括在并行处理子系统112中的执行引擎提供高得多的带宽。如本文先前所述,解算器129在并行处理子系统112内执行,并且构造器109在CPU102内执行。因此,为增加效率,解算器
129和构造器109配置为对与线性方程组有关的本地化数据进行操作。例如,解算器129对本地于解算器129的数据进行操作,诸如驻留在并行处理存储器124中的数据。如所示,解算器129包括解算器A矩阵226、解算器右端向量(RHS)222、解算器Krylov子空间的标准正交基224以及解算器残差228。并且构造器109包括构造器A矩阵216、构造器右端向量(RHS)212、构造器Krylov子空间的标准正交基214以及新向量的数目(num新向量)218。
[0026] 解算器129配置为形成多个线性方程组,每个线性方程组包括与不同解算器右端向量222相耦合的相同解算器A矩阵226。在示出的实施例中,解算器A矩阵226典型地是大型稀疏的,并且不同解算器右端向量222是相关的。因此,解算器129和构造器109经优化以求解特定类的问题,该特定类的问题包括与相关解算器右端向量222相耦合的大型稀疏解算器A矩阵226。在可替代实施例中,解算器129和构造器109可经调整以求解不同类的问题,并且线性方程组的元素的特性可因此改变。
[0027] 针对每个解算器右端向量222,解算器129结合解算器A矩阵226使用解算器Krylov子空间的标准正交基224以迭代地生成与解算器右端向量222相对应的线性方程组的近似解。作为生成近似解的一部分,解算器129计算解算器残差228来确定以近似解告终的一系列中间解中的每个中间解的质量。如本领域中公知的,用于中间解xk的解算器残差228是残差向量(RHS-Axk)的量值。如果xk是精确解,那么解算器残差228是零。总而言之,解算器残差228越小,中间解xk越接近精确解。如果解算器残差228大于最大允许公差并且时间限制未被超过,那么解算器129配置为生成另一个中间解。每个逐次中间解基于可用的Krylov子空间信息,并且进一步降低解算器残差228。如果解算器残差228小于最大允许公差或时间限制被超过,那么解算器129将针对解算器右端向量222的近似解设为当前中间解。解算器219然后形成具有新解算器右端向量222的新线性方程组。
[0028] 在解算器129已针对第一解算器右端向量222求解线性方程组之后,解算器形成包括与后续解算器右端向量222相耦合的相同解算器A矩阵226的线性方程组。在用于针对附加右端求解线性方程组的现有技术中,解算器典型地创建新Krylov子空间或对现有的Krylov子空间施加一个或多个变换。相反,解算器129配置为更有效地杠杆调整当针对先前解算器右端向量222求解线性方程组时所生成的信息。更具体地,解算器129通过从构造器109接收新Krylov向量260来扩展解算器Krylov子空间的标准正交基224。有利地,通过扩展解算器Krylov子空间的标准正交基224来重新使用先前信息可减少针对附加右端向量222求解线性方程组所要求的时间。具体来讲,随着各种解算器右端向量222之间的相关性增加,扩展解算器Krylov子空间的标准正交基224的有效性也增加。
[0029] 为进一步增加扩展解算器Krylov子空间的标准正交基224的有效性,在构造器Krylov子空间的标准正交基214中生成新Krylov向量260和生成解的过程是解耦的并且是并行执行的。当解算器129形成新解算器右端向量222时,解算器129发送新右端(RHS)数据250到构造器109。此外,为增加效率,构造器109对本地于构造器109的数据进行操作。例如,构造器109包括构造器A矩阵216,其是解算器A矩阵226的拷贝。并且,一旦接收新右端(RHS)数据250,构造器109就将包括在新右端数据250中的信息存储为构造器右端向量212。新右端数据250可包括与解算器右端向量222相关联的多种不同类型的数据。与初始解算器右端向量222相关联的新右端数据250包括初始解算器右端向量222。并且与后续解算器右端222相关联的新右端数据250包括解算器右端向量222到解算器Krylov子空间的标准正交基224上的投影的正交余(orthogonal remainder)。
[0030] 构造器109基于构造器右端向量212持续地创建新向量。并且构造器109持续地将这些新向量添加到构造器Krylov子空间的标准正交基214,从而扩展构造器Krylov子空间的标准正交基214。进一步地,构造器109将这些新向量作为新Krylov矢量260发送到解算器129。构造器109可使用本领域中已知的任何算法以任何技术上可行的方式创建新Krylov向量260。构建算法需要满足一个必要条件以使解算器129能够随后计算具有新解算器右端向量222的线性方程组的近似值。新单位Krylov向量yk必须正交于构造器Krylov子空间的标准正交基214、Azk必须包含在经扩大的构造器Krylov子空间中,其中zk是用矩阵A的某一预条件器(preconditioner)所创建的近似解。进一步地,正交化的系数包括在海森伯格(Hessenberg)矩阵中。例如,在一些实施例中,构造器109近似地求解方程组Ax=RHSk以获得zk向量,并对Azk和构造器Krylov子空间的标准正交基214使用格拉姆-施密特(Gram-Schmidt)正交化以获得正交化系数hk。随后,构造器109对正交余进行规格化以获得新Krylov向量yk。构造器109将新Krylov向量yk添加到构造器Krylov子空间的标准正交基214,将其他辅助向量zk添加到线性方程组的近似解的集合,并且在包括正交系数hk的构造器Hessenberg矩阵(H)219中创建新列。构造器109将新列作为新Hessenberg矩阵列290发送到解算器129。随后,解算器129将新Hessenberg矩阵列290添加到解算器Hessenberg矩阵229。
[0031] 为促进由构造器109和解算器129进行的独立的并且相互有益的工作,构造器Krylov子空间的标准正交基214和解算器Krylov子空间的标准正交基224包含相同向量。然而,构造器Krylov子空间的标准正交基214可能较大,因为一些新Krylov向量还未被解算器129所接收。此外,构造器109持续地扩展构造器Krylov子空间的标准正交基214。
在操作中,在解算器129发送新右端数据250到构造器109之后,解算器129请求构造器
109发送构造器109已基于先前的新右端数据250添加到构造器Krylov子空间的标准正交基214的新向量的数目218。虽然解算器129随着构造器109生成新Krylov向量而接收新Krylov向量260,但是当解算器129创建新解算器右端向量222时解算器129仅将新Krylov向量260合并到解算器Krylov子空间的标准正交基224中。例如,假设解算器129要发送第五新右端数据250到构造器109。解算器129将然后从构造器109请求新向量的数目218。并且构造器109将发送构造器109自从接收第四新右端数据250以来已完成创建的新向量的数目218。解算器129然后将来自解算器129自从发送第四新右端数据250以来所接收的新Krylov向量260的新向量的数目218添加到解算器Krylov子空间的标准正交基224。
[0032] 在发送新向量的数目218到解算器129之后,构造器109将新向量的数目218重置为零。并且随着构造器109将完成的向量添加到构造器Krylov子空间的标准正交基214,构造器109相应地增加新向量的数目218。注意,直到与特定向量相关联的所有数据已作为新Krylov向量260被传送,构造器109才对新向量的数目218进行增量。通过该方式,构造器109确保解算器129不将任何被部分传送的向量添加到解算器Krylov子空间的标准正交基224。总而言之,新向量的数目218起同步机制的作用,使解算器129能够基于先前的解算器右端向量222将解算器Krylov子空间的标准正交基224维持为构造器Krylov子空间的标准正交基214的快照(snap-shot)。更具体地,解算器Krylov子空间的标准正交基224表示不包括源于使用当前线性方程组的最近所形成的解算器右端向量222的信息的子空间的版本。相反,构造器Krylov子空间的标准正交基214表示包括来自当前线性方程组的最近所形成的解算器右端向量222的信息的子空间的版本。有利地,以该方式协调数据会降低构造器109和解算器129之间的依赖性,从而使构造器109能够异步地增强解算器129的性能。
[0033] 在可选实施例中,解算器129和构造器109可配置为具有存储器的最大额度用于Krylov子空间的标准正交基。如果扩展解算器Krylov子空间的标准正交基224或构造器Krylov子空间的标准正交基214将超过最大容许存储器,那么解算器129和构造器109将分别停止扩展解算器Krylov子空间的标准正交基224和构造器Krylov子空间的标准正交基214。在一些实施例中,解算器129和构造器109将用由构造器109所生成的新Krylov向量260来取代包括在解算器Krylov子空间的标准正交基224和构造器Krylov子空间的标准正交基214中的现有向量。在其他实施例中,解算器129将重新开始针对不同解算器右端向量222的新集求解线性方程组的过程。解算器Krylov子空间的标准正交基224和构造器Krylov子空间的标准正交基214将重置为初始状态。随后,构造器109将重新开始扩展构造器子空间214。并且解算器129将基于解算器Krylov子空间的标准正交基224而重新开始针对不同解算器右端向量222求解线性方程组。
[0034] 图3是根据本发明的一个实施例的、示出解算器执行次序320和构造器执行次序360的示意图。解算器执行顺序320对应于并行处理子系统112内的解算器129的执行次序。并且构造器执行次序360对应于CPU102内的构造器109的执行次序。如所示,图3按时间305顺序组织。
[0035] 如所示,解算器129执行命令集“形成Ax=RHS(N)”322。如本文先前所公开的,在针对线性方程组形成第N个解算器右端向量222之后,解算器129发送新右端数据250“RHS(N)”到构造器109。进一步地,解算器129请求构造器109发送新向量的数目218到解算器129。因此,构造器109发送新向量的数目218到解算器129,并且构造器109执行命令“将num新向量设置为0”362。
[0036] 解算器129然后执行命令集“使用子空间版本(N-1)求解Ax=RHS(N)”324。作为实施该命令集的一部分,解算器129扩展解算器Krylov子空间的标准正交基224以包括解算器129先前已从构造器109所接收的新向量的数目218。因为这些新向量表示与先前的右端向量RHS(N-1)相关联的新Krylov向量260,所以解算器Krylov子空间的标准正交基224现在表示子空间版本(N-1)。解算器129然后迭代地针对Ax=RHS(N)求解。并行地,构造器109执行命令集“使用RHS(N)扩展Krylov子空间(N-1)、创建Krylov子空间版本(N)(的标准正交基)”364。作为执行该命令集的一部分,构造器109创建与构造器RHS向量212“RHS(N)”相关联的新Krylov向量260。进一步地,构造器109适当地对新向量的数目218进行增量、发送新Krylov向量260到解算器129以及扩展构造器Krylov子空间的标准正交基214以包括新向量。
[0037] 在解算器129针对Ax=RHS生成近似解之后,解算器129执行命令集“形成Ax=RHS(N+1)”326。并且构造器109执行命令“将num新向量设置为0”366。解算器129然后执行命令集“使用Krylov子空间版本(N)求解Ax=RHS(N+1)”328。并行地,构造器109执行命令集“使用RHS(N+1)扩展Krylov子空间(N)、创建Krylov子空间版本(N+1)”368。
[0038] 解算器129和构造器109继续以该方式合作(未示出)。总而言之,解算器129使用构造器Krylov子空间的标准正交基214的快照(即解算器Krylov子空间的标准正交基224)针对解算器右端向量222生成解,该构造器Krylov子空间的标准正交基214的快照不包括与解算器右端向量222相关联的新Krylov向量260。并且在并行的工作中,构造器
109扩展构造器子空间的标准正交基214以包括与解算器右端向量222相关联的新子空间数据。
[0039] 图4是根据本发明的一个实施例的、用于针对不同右端求解线性方程组的方法步骤的流程图。虽然参考图1-3的系统描述方法步骤,但本领域技术人员应理解的是,配置为以任何次序实现方法步骤的任何系统均落入本发明的范围内。
[0040] 如所示,方法400在步骤402开始,其中解算器129形成线性方程组Ax=RHS(N),其中A是解算器A矩阵226并且RHS(N)是由解算器129所生成的第N个解算器右端向量222。例如,如果N是3,那么解算器129将已针对解算器右端向量222的2个先前值(N=1和N=2)求解线性方程组。作为步骤402的一部分,解算器129将解算器右端向量222设置为等于RHS(N)。在步骤404,解算器129发送新右端数据250(即与RHS(N)相关联的数据)到构造器109。如本文先前所概述的,新右端数据250可包括与RHS(N)有关的多种信息。进一步地,包括在新右端数据250中的信息类型可基于N改变。
[0041] 在步骤406,解算器129请求构造器109发送新向量的数目218到解算器129。如本文先前所详述的,构造器109配置为在构造器109扩展构造器Krylov子空间的标准正交基214的同时发送新Krylov向量260到解算器129。然而,为确保构造器109不对不完整的新Krylov向量260进行操作,构造器109使用新向量的数目218。具体来讲,新向量的数目218起到对构造器109自从解算器129最后请求新向量的数目218以来已完成创建的向量的计数器的作用。在步骤408,解算器129扩展解算器Krylov子空间的标准正交基224以包括由适当的新向量的数目218、被包括在先前所接收的新Krylov向量260中但还未被包括在解算器Krylov子空间的标准正交基224中的数据。通过该方式,解算器129将解算器Krylov子空间的标准正交基224维持为与先前的解算器右端向量222“RHS(N-1)”相对应的构造器Krylov子空间的标准正交基214的快照。
[0042] 在步骤410,解算器129使用解算器Krylov子空间的标准正交基224的标准正交基和解算器Hessenberg矩阵229来求解线性方程组Ax=RHS(N)。作为步骤410的一部分,解算器129将解算器RHS向量222投影到解算器Krylov子空间的标准正交基224上以获得到位于解算器Krylov子空间的标准正交基224内的一部分中的分解(decomposition)和正交余。解算器129通过求解具有作为解算器右端向量222和由构造器109所提供的解算器Hessenberg矩阵229的投影系数的最小二乘方问题,来最小化位于解算器Krylov子空间的标准正交基224内的分解部分。注意,构造器109结合新Krylov向量260发送新Hessenberg矩阵列290到解算器129。在求解最小二乘方问题中,解算器129确定经存储的zk向量的哪个线性组合最小化解算器RHS向量222的该部分。解算器129可以以任何技术上可行的方式例如用高斯(Gauss)消元法,来求解具有解算器Hessenberg矩阵229的最小二乘方问题。在步骤412,如果解算器确定解算器残差228不小于规定公差,那么方法400前进到步骤406。解算器129从步骤406到412进行循环,实施Krylov迭代以针对解算器右端向量222创建近似解,直到解算器129确定解算器残差228小于规定公差为止。
[0043] 在步骤412,如果解算器129确定解算器残差228小于规定公差,那么方法400前进到步骤414。在步骤414,解算器对N进行增量。解算器129从步骤402到414进行循环,针对附加右端向量222形成并且求解线性方程组。
[0044] 图5是根据本发明的一个实施例的、用于基于不同右端向量来扩展Krylov子空间的标准正交基的方法步骤的流程图。虽然参考图1-3的系统描述方法步骤,但本领域技术人员应理解的是,配置为以任何次序实现方法步骤的任何系统均落入本发明的范围内。
[0045] 如所示,方法500在步骤502开始,其中构造器109从解算器129接收与RHS(N)相对应的新右端数据250。新右端数据250是线性方程组Ax=RHS(N)的一部分,其中A是构造器A矩阵216并且RHS(N)是与由构造器109所接收的第N个新右端数据250有关的右端。作为步骤502的一部分,构造器109将构造器右端向量212设置为与新右端数据250相对应的RHS(N)。在步骤504,构造器109接收来自解算器129的、发送新向量的数目218到解算器129的请求。在步骤506,构造器109发送新向量的数目218到解算器129。构造器109然后将新向量的数目218重置为零。通过重置新向量的数目218,构造器109建立新的新向量的数目218基线。这允许构造器109使用新向量的数目218以表示构造器109自从解算器129最后请求构造器109发送新向量的数目218以来已完成创建的新Krylov向量的数目。
[0046] 在步骤508,构造器109使用构造器右端向量212(与RHS(N)相对应)以将新向量添加到构造器Krylov子空间的标准正交基214的标准正交基,从而扩展构造器Krylov子空间的标准正交基214。如本文先前所概述的,构造器109可使用本领域中已知的满足结合图2所描述的条件的任何算法、以任何技术上可行的方式创建新Krylov向量260。在步骤510,构造器109发送新Krylov向量260到解算器129并将发送到解算器129的新向量的数目添加到新向量的数目218。例如,假设新向量要包括新辅助向量对(yk,zk)。构造器109将发送辅助向量对(yk,zk)到解算器129,并且随后构造器109将添加2到新向量的数目218。在步骤512,如果构造器109确定构造器109尚未从解算器129接收与RHS(N+1)相对应的新右端数据250,那么方法500返回到步骤508。
[0047] 构造器109继续执行步骤508到512,基于构造器右端向量212“RHS(N)”将向量添加到构造器Krylov子空间的标准正交基214,并且发送新Krylov向量260到解算器129,直到构造器109从解算器129接收新右端数据250为止。如果在步骤512构造器109确定构造器已从解算器129接收与RHS(N+1)相对应的新右端数据250,那么方法500前进到步骤514。在步骤514,构造器109对N进行增量,并且方法500返回到步骤504。构造器109从步骤504到514进行循环,基于最近所接收的新右端数据250将向量添加到构造器Krylov子空间的标准正交基214,并且发送新Krylov向量260到解算器129。
[0048] 总之,通过使用增量地扩展Krylov子空间,可更高效地实现对包括与多个相关右端向量相耦合的相同大型矩阵A的线性方程组的求解。在一个实施例中,在并行处理子系统上执行的解算器程序和在CPU上执行的构造器程序异步地合作以降低针对每个右端向量(RHS)求解所要求的时间。针对每个RHS,解算器形成线性方程Ax=RHS。解算器发送与RHS相关联的数据到构造器并请求构造器自从接收先前RHS以来已生成的新Krylov向量的数目。解算器然后扩展解算器Krylov子空间的标准正交基以包括(基于先前RHS的)新向量的数目并且基于经扩展的解算器Krylov子空间近似地求解Ax=RHS。解算器以该方式继续,在基于由构造器从与先前RHS相关联的数据中所生成的新向量扩展解算器Krylov子空间的标准正交基之后,针对每个新RHS求解线性方程组。并行地,构造器使用与构造器已从解算器所接收的最近RHS相关联的数据来持续地将向量添加到构造器Krylov子空间的标准正交基。随着构造器添加Krylov向量,构造器还传送这些向量到解算器。因为解算器不立即合并新向量,所以解算器Krylov子空间的标准正交基表示基于先前RHS的构造器Krylov子空间的标准正交基的快照。因此,解算器和构造器可以高效地并行操作而不用不必要地相互等待。
[0049] 有利地,针对每个新右端向量持续扩展Krylov子空间典型地在计算上快于创建新Krylov子空间或变换现有的Krylov子空间。进一步地,如本领域的技术人员将认识到的,右端向量之间越相关,经扩展的Krylov子空间就越有效来生成近似解。并且通过使用所公开的异步合作策略来求解线性方程组,求解线性方程组所要求的时间进一步被优化。因此,使用现有技术超过可接受的执行时间的应用使用所公开的技术可以达到可接受的性能。
[0050] 虽然上述内容针对本发明的实施例,但可对本发明的其他和进一步的实施例进行设计而不脱离其基本范围。例如,可以以硬件或软件或硬件和软件的组合来实现本发明的各方面。本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文所描述的方法)并且可以被包含在多种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的CD-ROM盘、闪存、ROM芯片或任何类型的固态非易失性半导体存储器),在其上永久性存储信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0051] 以上已参照特定实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和变化而不脱离如随附权利要求中所阐释的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为示例性而非限制性的意义。
[0052] 因此,本发明的范围由接下来的权利要求所确定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈