利用多个加速处理部件(APC)实现时域有限差分模型的系统和方法相关申请的交叉引用
不适用。
关于联邦政府赞助的研究或开发声明
不适用。
背景
技术领域
本发明一般涉及与对油气勘探相关的计算机科学领域。更具体地,
本发明涉及利用多个APC实现时域有限差分建模的方法。
背景技术
时域有限差分(FDTD)建模是用于石油和天然气勘探的重要工
具。FDTD核的图形处理单元(GPU)实现提供了最高的成本效率,
并且正成为实际上的工业标准。目前,相对于浮点操作,GPU比
CUP处理器快许多倍。具体地,现代GPU在操作计算机图形方面是
非常高效的,并且它们的高度并行结构使得对于其中需要并行处理大
数据块的算法而言,它们比通用CPU更有效。尽管GPU和其它计
算加速器具有非常高的计算吞吐量,但是它们缺乏处理大部分石油和
天然气问题中的大的数据体所需的存储器容量。常用的解决方法是域
分解,一种将计算域或数据体分离为更小的片,并且将每个片分配给
单独的计算加速器的方法。然后,对于可以被处理的问题的大小的限
制因素成为附接到系统的所有计算加速器的集合存储器,而不是可用
于任何单个计算加速器的存储器。相反,CPU系统存储器显著更大,
并且可以被容易地增加以适应甚至现今发展的最大的模型和最复杂的
核,但是在系统存储器与计算加速器存储器之间传递数据缓慢。
因此,需要优化FDTD方法中GPU的使用的方法和系统。
发明内容
本文公开了用于利用多个加速处理部件(“APC”)实现时域有限
差分建模的方法的实施例。通过使每个计算加速器以APC队列的方
式执行关于小片计算域或数据体的多个时间步长,所公开的方法和系
统克服了计算加速器的存储器容量限制。然后,在主机和计算加速器
之间传递数据的成本可以通过多个时间步长被分摊,大大地降低了维
持高传播速度所需的PCI带宽量。算法的APC队列性质获得随着增
加的计算加速器数目的PCI吞吐量的线性缩放,容许在一些实施例
中该算法按比例扩大至多于64个计算加速器。该方法的各种实施例
的进一步的细节和优点在下面被更详细地描述。
在实施例中,利用多个APC的地震建模方法包括:(a)将数据
体和地震模型的至少部分存储到计算机系统的系统存储器源上。该数
据体包括两个或更多个维度。该计算机系统包括耦接到系统存储器资
源的APC队列。该APC队列包括彼此耦接并且耦接到系统存储器
资源的多个APC。该方法还包括:(b)沿着维度中的至少一个划分
数据体以形成多个数据块。此外,该方法还包括:(c)将数据块中
的一个或多个从系统存储器资源传递到队列中的第一APC。该第一
APC为数据块中的至少一个计算至少一个时间迭代。此外,该方法
包括:(d)将数据块从队列内的一个APC传递到队列中的下一
APC。该方法附加地包括:(e)为队列中每个剩余的APC重复
(d)。队列中的每个APC为存储在每个APC内的至少一个数据块
计算至少一个时间迭代。该方法进一步包括:(f)将数据块中的一
个从队列中的最后的APC传递到系统存储器资源。
在另一实施例中,计算机系统包括用于接收数据体的接口。该数
据体包括两个或更多个维度。该计算机系统还包括系统存储器资源和
用于将通信信号呈现给人类用户以及从人类用户接收通信信号的输入
和输出功能。该计算机系统还包括经由通信总线耦接到系统存储器资
源的APC队列。该队列包括多个APC。该计算机系统进一步包括用
于执行程序指令的一个或多个中央处理单元。该系统存储器资源被耦
接到中央处理单元,用于存储包括程序指令的计算机程序,所述程序
指令当被所述一个或多个中央处理单元以及所述多个APC执行时促
使计算机系统执行用于地震建模的多个操作。所述多个操作包括(a)
将数据体和地震模型的至少部分存储到系统存储器资源上。该数据体
可以包括两个或更多个维度。所述多个操作还包括:(b)沿着维度
中的至少一个划分数据体以形成多个数据块。附加地,所述多个操作
包括:(c)将数据块中的一个或多个从系统存储器资源传递到队列
中的第一APC,所述第一APC为数据块中的一个计算至少一个时间
迭代。所述多个操作进一步包括:(d)将数据块从队列内的一个
APC传递到队列中的下一APC。所述多个操作还包括:(e)为队列
中每个剩余的APC重复(d)。队列中的每个APC为存储在每个
APC内的至少一个数据块计算至少一个时间迭代。此外,所述多个
操作包括:(f)将数据块中的一个从队列中的最后的APC传递到系
统存储器资源。
在实施例中,地震建模的方法包括:(a)输出在计算机系统的
系统存储器资源上的数据体和地震模型的至少部分。该数据体包括不
只一个维度,并且该计算机系统包括彼此耦接并且耦接到系统存储器
资源的多个APC。该方法进一步包括:(b)沿着维度中的至少一个
划分数据体以形成多个数据块。此外,该方法包括:(c)将数据块
的子集从系统存储器资源传递到APC中的一个。该方法还包括:
(d)将至少一个数据块从一个APC传递到另一APC。此外,该方
法包括:(e)使用每个APC为存储在每个APC内的至少一个数据
块计算至少一个时间迭代,以及(f)将数据块中的一个从多个APC
传递到系统存储器资源。
前述已经相当宽泛地概括了本发明的特征和技术优点,以便接着
的本发明的具体实施例可以被更好地理解。本发明的附加特征和优点
将被在下文中描述,其形成了本发明的权利要求的主题。本领域技术
人员应当理解所公开的概念和具体实施例可以被容易地用作实现本发
明的相同目的而修改或设计其它结构的基础。本领域技术人员还应当
意识到这种等价构造不脱离如随附权利要求中提出的本发明的精神和
范围。
附图说明
为了本发明的优选实施例的更详细的描述,现在将参考附图,其
中:
图1说明了用于在利用多个APC实现时域有限差分建模的方法
的实施例中使用的系统的实施例的图示;
图2说明了用于与利用多个APC实现时域有限差分建模的方法
的实施例使用的数据体的图示;
图3说明了利用多个APC实现时域有限差分建模的方法的实施
例的流程图;
图4A说明了用于与利用多个APC实现时域有限差分建模的方
法的实施例使用的沿着两个维度划分的数据体的图示;
图4B说明了用于与利用多个APC实现时域有限差分建模的方
法的实施例使用的沿着三个维度划分的数据体的图示;
图5说明了用于在利用多个APC实现时域有限差分建模的方法
的实施例中使用的系统的实施例的另一图示;
图6说明了用于与所公开的方法的实施例使用的计算机系统的示
例。
符号和命名
某些术语被在下面的整个具体实施方式和权利要求中使用,以指
特定的系统部件。该文件不是意在区分名称不同而非功能不同的部件。
在下面的讨论和权利要求中,术语“包括”和“包含”被以开放式的
方式使用,并且因此应当被解释为意为“包括,但不限于……”。此外,
术语“耦接”或“耦合”意在意为间接或直接连接。因此,如果第一设备
耦接到第二设备,该连接可以通过直接连接或通过经由其它设备和连
接的间接连接。
如本文使用的,“加速处理部件”或“APC”指包括被设计为提供附
加的处理能力和设计为加速中央处理单元(CPU)外部的一种或多种
类型的计算的一个或多个协同处理器或加速器芯片的设备、芯片、电
路或板。APC的示例可以包括但不限制于如本文定义的GPU、协同
处理器、加速器芯片或它们的结合。
如本文使用的,“图形处理单元”或“GPU”指包括被设计为加速
或快速操纵大的数据块以典型地用于处理图像或图形的一个或多个处
理器或加速器芯片的电路或板。然而,如本领域已知的,GPU可以
与任何已知的加速器芯片互换地使用以用于处理其它类型的数据,并
且不应当看作是限制于处理图形。
如本文使用的,“地震道”指来自单个地震记录仪或地震仪并且典
型地绘制为时间或深度的函数的记录数据。
具体实施方式
现在参考附图,所公开的方法的实施例将被描述。作为入门问题,
本方法的实施例可以通过多种方式实现,如将在下面更详细地描述的,
包括例如:作为系统(包括计算机处理系统)、方法(包括由计算机
实现的方法)、装置、计算机可读介质、计算机程序产品、图形用户
接口、网站入口或有形地固定在计算机可读存储器中的数据结构。所
公开方法的多个实施例被在下面讨论。附图只说明了所公开方法的典
型实施例,并且因此不被认为限制它的范围和宽度。
图1说明了可以与所公开方法使用的系统100的实施例。系统
100通常包括具有彼此耦接的CPU103和系统或系统存储器资源105
的母板101。CPU103和系统存储器105被安装或耦接到母板。此外,
系统100包括多个APC107A-107D。如上讨论的,APC107A-107D
可以是对本领域技术人员已知的APC,包括但不限于GPU、加速器
芯片、协同处理器、现场可编程门阵列(FGPA)、或它们的结合。
为了阐明,尽管四个APC107A-107D被在图1中描绘,但是可预期
的是任何数目的APC可以在所公开的方法和系统的实施例中使用。
此外,可以预期的是所公开的方法和系统不限于只与APC使用。也
就是说,在APC107A-107D的位置,可以替代地使用任何加速器芯
片。
APC107A-107D可以经由通信接口或总线109耦接到CUP和系
统存储器105。总线109可以是在计算机系统中的各种部件之间传递
数据的任何已知的通信系统。APC107A-107D也可以与彼此通信。
在实施例中,总线109可以是外围部件互连(PCI)总线。可以使用
的其它总线109包括但不限于工业标准结构(ISA)、视频电子标准
协会(VESA)、加速图形端口(AGP)、通用标准总线(USB)或
它们的结合。
APC107A-107DD可以各自包括存储器资源112和加速器芯片
115。存储器资源112可以是任何适当的存储器类型,诸如但不限于
图形双数据速率同步动态随机存取存储器(GDDRSDRAM)。再次,
要强调的是,APC队列100可以具有任何适当数目的APC。APC
107A-107D的集合可以被称为APC队列100。此外,每个APC107
可以具有任何适当的存储器112的量。在实施例中,每个APC可以
具有从大约1GB到大约16GB的存储器112。
在实施例中,现在参考图3中的流程图,在框301,包含被建模
的体积的所有数据以及地震模型可以被保持在系统存储器105中。系
统存储器105可以是对本领域技术人员已知的任何计算机存储器,诸
如但不限于双数据速率同步动态随机存取存储器(DDRSDRAM)、
静态RAM(SRAM)、动态RAM(DRAM)、相变存储器
(PRAM)或它们的结合。现在参考图2,包含将被建模的地下体积
的数据可以被称为数据体201。数据体201的全部或部分可以被存储
在系统存储器105中。使用无损方案、高保真有损方案、或它们的结
合、或对本领域技术人员已知的任何方法,可以压缩保持在系统存储
器105中的数据体201的部分。在其中本方法被应用在地震波传播的
FDTD建模中的实施例中,关于地震模型的数据可以包括边界条件、
传播波场以及地球模型参数。现在参考图2,通过根据数据体201的
维度分割或划分数据体,数据体201可以被分离为块或子体积。特别
地,数据体201可以具有X、Y和Z维度。在实施例中,再次参考
图3,在303中,数据体201可以被沿着至少一个轴或维度分割或划
分为更小的数据块。多划分方案是可能的。然而,在最简单的情况中,
维度中的两个保留完整并且最后的维度被分离为足够小到将其装入
(fit)计算加速器存储器中的块或数据体。在一个实施例中,Y和Z
轴被保留完整并且X轴被划分,从而形成数据“片”或“块”D1到Dn,
其中n是可以在图2中看到的数据块的总数目。然而,在其它实施例
中,Y维度可以被划分或分割,并且X和Z维度可以保持完整。同
样,Z维度可以被分割,并且X和Y维度可以保持完整。
地震模型算法被在划分的维度(在该示例性实施例中为X)以及
被建模的时间范围上迭代。例如并且非限制的,地震模型可以被在以
1ms为增量的10000ms的时间段上传播或迭代。然而,具有任何适
当的时间增量的任何时间范围可以被使用。迭代的时间范围和迭代的
数目只由当前技术状态的APC处理速度限制。在图3的框305中,
数据块的子集D1到Dn可以被以X的升序从主机发送到第一计算加
速器或APC107A。具体地,在图3的框305中,三个连续的数据块
一般可以被用于通过一个时间步长或迭代传播一个块——将被传播的
数据块外加保持循环维度的光环单元(halocells)或数据点的两个相
邻或邻近的块。然而,任何数目的数据块可以包括在该子集中。在一
些实施例中,数据块的子集可以仅包含一个数据块。
进入的数据块D1到Dn可以被存储在加速器或APC存储器资源
112中。更特别地,数据块D1到Dn可以被存储在存储器112中的滑
动窗口缓冲器中。已经在一个时间步长传播的块可以被存储在第二滑
动窗口缓冲器中直到足够的块可用于在第二时间步长传播一个块。这
可以针对更多的时间步长被重复,直到在一个APC上的可用存储器
已经耗尽。在框307和311中,输出被发送到排列中的下一APC,
其可以通过一个或多个时间步长传播相同的块。如已经讨论的,多个
计算加速器或APC在APC队列110中连接,完整的APC队列110
潜在地在一个或多个时间步长或时间迭代中传播每个块。在其中数据
体201已经被压缩的实施例中,如上所述,每个数据块在第一时间步
长之前可以被队列中的第一APC解压缩,并且接着流动通过未压缩
的APC队列。在块被传递回系统存储器105之前,在最后的时间步
长后块被压缩。在另一实施例中,在将已处理的数据块发送到队列
110中的下一APC之前,数据块可以被APC压缩。该压缩可以被实
时执行。如以上公开的,使用无损方案、高保真有损方案、或它们的
结合、或对本领域技术人员已知的任何方法,数据块可以被APC压
缩。
在313中,来自APC队列110中的最后的APC(例如,图1中
的APC107D)的输出被最终拷贝回系统存储器105。为了说明性目
的,虚箭头说明了从系统存储器105通过APC队列110的数据块的
流动。当数据体201已经被耗尽时,(即,所有的块D1-Dn已经被
在相同数目的时间步长(对应于APC队列110的长度)传播),该
过程被重复,直到波场已经被一路传播到最后的时间点。如上简单讨
论的,使用APC队列110的主要优点中的一个是可以避免计算机总
线109的瓶颈。如可以看到的,在任何单个数据块已经经历过多个时
间步长后,块D1-Dn中的任何一个在通过APCAPC队列后只通过总
线109传递到更慢的系统存储器105。此外,所公开的方法的实施例
能够利用APC存储器112和APC107自身的更快的速度,而不是更
慢的系统存储器105的速度。
APC队列110显示出了与其它计算队列相同的特性。对于初始
计算,在来自最后的APC(例如,图1中的107D)的第一输出数据
块产生之前,当APC队列110充满时存在初始延迟,但是一旦APC
队列110充满时,在实施例中,对于每个输入数据块可以产生一个输
出块。当数据体已经被耗尽时,在APC队列110中仍可以存在正在
进行的多个块。这些块需要被进行,其包含发送附加的数据块以向前
移动APC队列110。在下一次迭代,排空APC队列110可以与将其
充满重叠。当地震模型算法到达数据体201的末端时,它仅仅回到数
据体的开始并且继续从那里发送块。在域的开始处的块已经被传播,
因此它们将最终形成已经被传播2*M个时间步长(M是以时间步长
的计算APC队列的长度)的输出,它需要M个块来充满APC队列
110以用于第二完整迭代。在该第二迭代期间,来自前一迭代的剩余
的M个块被产生。因此,只经历一次延迟。
在实施例中,通过双缓冲和锁定存储器(pinnedmemory),数
据传递和计算可以被完全脱离。针对算法中的每个步长(每次新的数
据块的子集被发送到APC队列),缓冲器的额外集合可以被创建以
用于数据传递,结果被写入缓冲器的一个集合并且缓冲器被切换。在
每个步长开始时,双缓冲容许数据传递和计算被同时安排。锁定存储
器使得APC上的异步数据传递成为可能。计算加速器具有可以与计
算引擎并行运行的数据传递引擎,容许数据传递和计算重叠。双缓冲
消耗一点加速器存储器并且将额外的延迟时间增加到计算APC队列,
但是对计算吞吐量没有影响。
计算APC队列中的每个时间步长或时间迭代将输出块延迟X轴
上的一个位置。其发生是因为在任何特定块的两侧上的邻近块被使用
以便传播块,如此传播块N、块N-1、N和N+1。因此,如果时间步
长i仅仅传播块N,针对时间步长J+1有足够的输入块以传播块N-1。
这对算法的吞吐量没有影响,但是知道块何时进入系统存储器以及离
开系统存储器是重要的。
计算加速器之间的负载平衡也可以提高整体吞吐量。负载平衡容
许每个计算加速器做相同量的工作。当在所有时间步长中传播的单元
的总数目对于所有计算加速器是相同的时,工作量可以均匀地分布。
在一个实施例中,利用两步优化处理可以获得负载平衡。首先,APC
队列宽度可以被调节使得每个APC队列传播相同总数目的单元(所
有时间步长的块数据体大小的总和)。靠近边缘的APC队列可以具
有更少的要传播的光环单元。接下来,在工作被传给下一计算加速器
之前,所传播的块的总数目可以被一个计算加速器调节。由于光环计
算开销,APC队列中的第一时间步长可以比后续的时间步长要求更
多的工作,因此如果每个计算加速器工作相同数目的全时间步长,只
有每个APC队列中的第一计算加速器将始终忙碌并且每个后续的计
算加速器得到越来越少的工作。如果我们容许计算加速器在它们将块
传给APC队列中的下一计算加速器之前部分地完成它们的最后的时
间步长,这易于解决。下一计算加速器完成它的前任者的部分完成的
时间步长,在部分完成它自己的最后的时间步长之前进行几个它自己
的全时间步长,它自己的最后的时间步长接着被传给APC队列中的
下一计算加速器等。该方案易于实现并且容许我们精细粒度控制由每
个计算加速器完成的工作的量,因此计算负载可以被完全平衡。
如上讨论的,在一个实施例中,最简单的方案分离一个维度并且
保持其它两个完整。通过如上所述的滑动窗口缓冲器光环或影子开销
被在循环维度上消除,因此最简单的分块方法具有既在数据传递方面
又在计算方面完全消除光环开销的优点。该实施例可以为在例如典型
的声学TTI传播器中的大约10亿个单元的数据体大小产生最够小的
块。然而,所公开的方法不被数据体大小限制,并且取决于当前技术
状态的系统存储器大小和速度以及APC存储器大小和速度,任何数
据体大小可以被使用。
现在参考图4A和5,在另一实施例中,通过分离两个剩余维度
中的一个并且为每个维度创建单独的计算流水线或APC队列,更大
的数据体可以被处理。任何两个维度可以被选择用于分割或划分,但
是出于解释的目的,X被选择为第一划分维度并且Y是第二划分维
度。参考图4A,数据体20已经被在X和Y维度上划分。DX,Y代表
体201中的数据块的特定迭代。例如,D3,1代表沿着X维度的第三个
数据块,但是在第一Y组中。如由用于数据块D的下标n所表示的,
X已经被划分n次,而Y已经被划分为2个划分区。在这一实施例
中,现在参考图5,针对Y的每个划分区,可以创建单独的计算
APC队列110A和110B。再次,虚箭头代表针对每个APC队列
110A-110B的数据块的流动。如可以看到的,每个队列110可以与其
它队列并行处理它的数据块集合。由一个APC队列处理的Y的部分
的大小可以被称为所述APC队列的(输出)“宽度”。例如,Y可以
被划分任何次数以获得用于APC队列的适当的宽度。例如,Y可以
被划分4次,并且因此四个APC队列可以被使用。这样做在Y上创
建了光环或影子单元。在循环维度上同步APC队列可以防止光环单
元因竞争APC队列而被意外地覆写。更特别地,APC队列110A-
110B可以从相同的循环维度坐标接收输入数据块并且可以将块写到
相同的循环维度坐标。由于APC队列延迟,该方案确保光环单元不
因竞争APC队列而被覆写。
在实施例中,一种算法可以被用于优化数据块大小,其以宽的块
开始,该宽的块针对每个时间步长而变得更窄直到最后的时间步长,
其中它变为等于APC队列的宽度。由Y分离创建的光环单元被(两
个相邻的APC队列)传播两次,因此这样做造成了计算开销,但是
它消除了在APC队列中的每个时间步长之间执行光环交换的需求。
这容许计算APC队列继续独立地操作并且所有数据传递继续严格地
以APC队列方式进行。通过分离Y引入的计算开销一般很低,因为
只有在Y维度已经增加到非常大时Y维度才被分离,并且相对光环
开销成本与APC队列宽度的倒数成比例。该计算光环开销成本可以
进一步被APC之间的细心负载平衡减少一半。
该数据体可以被重新布置在系统存储器105中以使得主机与
APC之间的数据传递尽可能高效。当每个块可以在单个操作中传递
时,最高的吞吐量被获得。为了做到这一点,在系统存储器中块可以
是连续的,因此系统存储器被重新组织以适合数据传递模式。在最简
单的实施例中,由于光环可以通过滑动窗口缓冲器处理,只有一个维
度被划分并且不需要传递重叠块。
在如图4中示出的其中数据体的两个维度被划分的实施例中,如
以前在第一分离维度上可以不存在任何重叠,但是在第二分离维度上
可以存在重叠。为了容纳这些传递,系统存储器105中的场可以被沿
着第一分离维度重新布置成块。系统存储器105中的每个块内,第一
维度接着变为最快的轴,剩余的完整维度是中间的轴并且第二分离维
度是慢轴。当系统存储器像这样组织时,在第二分离维度上重叠的块
可以在主机和计算加速器之间的一个连续的片中传递。可选择地,所
述块在被传递之前可以被即时(onthefly)重新布置,但是这可能需
要系统存储器105中不同位置之间的附加的存储器拷贝。这可能是受
关注的,因为附加的存储器拷贝可以对系统存储器带宽施加额外的压
力,其最终可以降低系统存储器105与APC107之间的数据传递速
度。这样,在传播开始之前系统存储器105中的数据结构的细心组织
可以避免额外的步长。
如图4A中示出的通过分离至多两个维度(例如,X和Y)各种
大小的数据体201可以被处理,但是可预期的是也可能将数据体201
分离为三个维度,如图4B中示出的。一个维度是第一分离维度(并
且因此也是循环维度),剩余的两个被分离为拼片并且为每个拼片创
建APC队列。当数据体被通过这种方式分离时,如本文所使用的,
术语APC队列(输出)“宽度”指每个APC队列可以处理的拼片大小。
在图4B中示出的示例中,Y被分离为两路并且Z被分离为两路,导
致四个APC队列的使用。在示例性实施例中,如果X是第一分离维
度以及循环维度,Y被分离为8路(8-ways)并且Z被分离为4路
(4-ways)。作为结果,在X上循环的总共32个计算APC队列被
创建。如果所有这些较小的数据块或拼片是相同大小,那么一个计算
APC队列的“宽度”变为(NY/8)*(NZ/4),其中NY和NZ是全数
据体的Y和Z维度。这导致针对Y和Z两者的光环开销,其被通过
如以前相同的方式处理——利用冗余的计算而不是光环交换。如以前,
计算加速器之间细心的负载平衡可以显著降低计算光环开销成本。
一般地,APC队列110可以被它自己的专用计算加速器或APC
芯片集合占据。这通常是关于具有高密度的计算加速器的系统的情况,
但是所公开的方法可以应用到其中APC队列的数量超出可用APC
的系统和状况。该状况可以在许多情况中出现,例如当尝试在装配有
单个计算加速器的系统上传播大的数据体时。大多数工作站具有强大
的统一计算设备架构(CUDA)能力的图形卡,使用该图形卡作为计
算加速器可以使任何FDTD传播器的吞吐量是利用优化的CUP代码
可以获得的吞吐量的两倍或三倍。如果数据体足够大,可能必须创建
多个计算APC队列以使块足够小到适合进入计算加速器存储器。由
于具有比计算加速器更多的计算APC队列,每个计算加速器必须模
拟多个APC队列或起多个APC队列的作用。在加速器切换到下一
计算APC队列之前,它将完全耗尽数据体。这导致的唯一的复杂是
它使得不可能同步循环维度上的所有的计算APC队列。由于这一点,
需要单独的输入和输出波场以避免覆写光环单元。这意味着要求更多
的系统存储器,取决于传播器类型其将最大数据体大小减少了大约
10-30%。唯一的限制是当前技术状态中可用的系统存储器量,其在
该情况中通常是至少比计算加速器上可用的多一个数量级。
尽管主要的应用是用于地震建模的FDTD,但是该方法可以用于
扩展在呈现良好的空间局部性的计算加速器上运行的任何计算代码的
最大可获得数据体并且具有时间步进的概念。其它应用的示例可以包
括但不限于,声各向同性、声垂直横向各向同性(VTI)、声倾斜各
向同性(TTI)、弹性各向同性、弹性VTI、弹性TTI、弹性正交晶
系(elasticorthorhombic)、弹性三斜晶系(elastictriclinic)、粘
弹性等。用于流体流动模拟的格子玻尔兹曼(Lattice-Boltzman)方
法也是所公开方法的另一应用。此外,可以预期的是所公开的方法和
系统可以应用到地震成像应用。
图6示出了更宽泛意义上的实施例计算机系统20的示例,其可
以执行该说明书中描述的操作。在该示例中,系统20是通过包括通
过网络连接到服务器30的工作站21的计算机系统实现的。当然,与
本发明相关的有用的计算机系统的特定架构和构造可以广泛变化。例
如,系统20可以通过单个物理计算机(诸如,传统的工作站或个人
计算机)实现,或可选择地通过以分布式方式通过多个物理计算机实
现的计算机系统实现。因此,图5中说明的一般架构仅通过示例提供。
如图6中示出的并且如上提到的,系统20可以包括工作站21和
服务器30。工作站21包括耦接到系统总线的中央处理单元25。也耦
接到系统总线的是输入/输出接口22,其指那些通过其外围功能P
(例如,键盘、鼠标、显示器等)与工作站21的其它构成要素接口
连接的接口源。中央处理单元25指工作站21的数据处理能力,并且
同样地可以由一个或多个CPU核、协同处理电路等实现。中央处理
单元25的特定结构和能力被根据工作站21的应用需求选择,这种需
求至少包括本说明书中描述的功能的实施,并且也包括可以被计算机
系统执行的这种其它功能。在根据该示例的分配系统20的架构中,
系统存储器24被耦接到系统总线,并且提供期望类型的存储器资源,
该期望类型的存储器资源可以用作用于存储输入数据和被中央处理单
元25执行的处理的结果的数据存储器,也可以用作用于存储将被中
央处理单元25在实施这些功能时执行的计算机指令的程序存储器。
当然,该存储器布置只是示例,应当理解系统存储器24可以以单独
的物理存储器资源或作为整体或部分分布在工作站21的外部实现这
种数据存储器和程序存储器。此外,如图5中示出的,地震数据体输
入28经由输入/输出功能22被输入,并且本地地或经由网络接口26
存储在工作站21可访问的存储器资源中。
工作站21的网络接口26是传统的接口或适配器,通过其工作站
21访问在网络上的网络源。如图5中示出的,工作站21经由网络接
口26访问的网络源包括服务器30,服务器30驻留在局域网或广域
网(诸如内联网,虚拟专用网)或互联网上,并且通过这些网络布置
中的一个以及通过对应的有线或无线(或两者)通信设施工作站21
可访问服务器30。在本发明的实施例中,服务器30是在一般意义上
与工作站21的架构类似的传统架构的计算机系统,并且同样地包括
一个或多个中央处理单元、系统总线、以及存储器资源、网络接口功
能等。根据本发明的实施例,服务器30被耦接到程序存储器34,其
是存储可执行的计算机程序指令的计算机可读介质,根据其本说明书
中描述的操作被分配系统30实施。在本发明的实施例中,根据从工
作站21传送的输入数据,这些计算机程序指令例如以“基于网络的”
应用的形式被服务器30执行以创建输出数据和结果,其被传送到工
作站21以用于由外围P以对工作站21的人类用户可用的形式显示
或输出。此外,库32也是对服务器30(以及可能通过局域网或广
域网对工作站21)可用的,并且存储可以用于分配系统20中的这种
档案或参考信息。库32可以驻留在另一局域网上,或可选择地经由
互联网或一些其它广域网可访问。可以预期的是,库32对整体网络
中的其它相关联的计算机也可以是可访问的。
测量、库32以及程序存储器34物理地驻留在的特定存储器资源
或位置可以在对分配系统20可访问的各种位置实现。例如,这些数
据和程序指令可以存储在工作站21内的,服务器30内的本地存储器
资源中,或对这些功能网络可访问的存储器资源中。此外,这些数据
和程序存储器中的每一个自身可以被分布在多个位置中。可以预期的
是本领域技术人员将很容易能够以针对每个特定应用适当的方式实现
关于本发明的该实施例可用的可应用的测量、模型以及其它信息的存
储和检索。
根据该实施例,通过示例,系统存储器24和程序存储器34分别
存储可以被中央处理单元25和服务器30执行的计算机指令,以实施
本说明书中描述的所公开的操作,例如,通过其细长区域可以被对齐
并且细长区域内的道(trace)的叠合也被对齐。这些计算机指令可
以以一种或多种可执行程序的形式或以源代码或更高级代码的形式,
从其一种或多种可执行的程序被导出、组合、解释或编译。取决于所
期望的操作将被实施的方式,多种计算机语言或协议中的任何一种可
以被使用。例如,这些计算机指令可以以传统的高级语言编写,作为
传统的线性计算机程序或布置为以目标定向方式执行。这些指令也可
以被嵌入更高级的应用内。这种计算机可执行指令可以包括程序、例
程、对象、部件、数据结构以及计算机软件技术,其可以用于执行特
定任务和处理抽象数据类型。可以理解的是所公开方法的范围和基本
原理不限于任何特定的计算机软件技术。例如,可执行的基于网络的
应用可以驻留在对服务器30和客户计算机系统(诸如工作站21)可
访问的程序存储器34上,从客户系统接收以电子表格形式的输入,
执行在网络服务器处的算法模块,以及以一些方便显示或打印的形式
将输出提供给客户系统。可以预期的是参考本具体实施方式的本领域
技术人员将很容易能够在无需过多实验的情况下以针对期望的安装的
适当的方式实现本发明的实施例。可选择地,这些计算机可执行的软
件指令可以驻留在局域网或广域网上的其它地方,或经由一些网络接
口或输入/输出设备以电磁载波信号上的编码信息的方式,从更高级
的服务器或位置可下载。该计算机可执行的软件指令可以最初存储在
可移除的或其它非易失性计算机可读存储介质(例如,DVD盘、闪
存等)上,或以软件包的形式作为电磁载波信号上的编码信息可下载
的,根据所述软件包计算机可执行软件指令被分配系统20以用于软
件安装的传统方式安装。
尽管本发明的实施例已经被示出和描述,本领域技术人员可以进
行对它的修改而不脱离本发明的精神和教导。所描述的实施例和本文
提供的示例仅是示例性的,并且不意为限制。本文所公开的发明的许
多变化和修改是可能的,并且在本发明的范围内。因此,保护范围不
由以上陈述的具体实施方式限制,而是只由以下的权利要求限制,所
述范围包括权利要求的主题的所有等价物。
参考文献的讨论不是承认其是本发明的现有技术,尤其是可能具
有在本申请的优先权日期之后的公开日期的任何参考文献。通过参考
将本文所引用的所有专利、专利申请以及公布的公开内容并入本文,
以使得它们提供对本文所提出的内容的示例性、程序性或其它细节补
充。