傳遞數據的任何已知的通信系統。APC 107A-107D也可以與彼此通信。在實施例中,總線109可以是外圍部件互連(PCI)總線。可以使用的其它總線109包括但不限于工業標準結構(ISA)、視頻電子標準協會(VESA)、加速圖形端口(AGP)、通用標準總線(USB)或它們的結合。
[0031]APC 107A-107DD可以各自包括存儲器資源112和加速器芯片115。存儲器資源112可以是任何適當的存儲器類型,諸如但不限于圖形雙數據速率同步動態隨機存取存儲器(⑶DR SDRAM)。再次,要強調的是,APC隊列100可以具有任何適當數目的ΑΡ(λΑΡα07Α-107?的集合可以被稱為APC隊列100。此外,每個APC 107可以具有任何適當的存儲器112的量。在實施例中,每個APC可以具有從大約IGB到大約16GB的存儲器112。
[0032]在實施例中,現在參考圖3中的流程圖,在框301,包含被建模的體積的所有數據以及地震模型可以被保持在系統存儲器105中。系統存儲器105可以是對本領域技術人員已知的任何計算機存儲器,諸如但不限于雙數據速率同步動態隨機存取存儲器(DDR SDRAM)、靜態RAM(SRAM)、動態RAM(DRAM)、相變存儲器(PRAM)或它們的結合。現在參考圖2,包含將被建模的地下體積的數據可以被稱為數據體201。數據體201的全部或部分可以被存儲在系統存儲器105中。使用無損方案、高保真有損方案、或它們的結合、或對本領域技術人員已知的任何方法,可以壓縮保持在系統存儲器105中的數據體201的部分。在其中本方法被應用在地震波傳播的H)TD建模中的實施例中,關于地震模型的數據可以包括邊界條件、傳播波場以及地球模型參數。現在參考圖2,通過根據數據體201的維度分割或劃分數據體,數據體201可以被分離為塊或子體積。特別地,數據體201可以具有X、Y和Z維度。在實施例中,再次參考圖3,在303中,數據體201可以被沿著至少一個軸或維度分割或劃分為更小的數據塊。多劃分方案是可能的。然而,在最簡單的情況中,維度中的兩個保留完整并且最后的維度被分離為足夠小到將其裝入(fit)計算加速器存儲器中的塊或數據體。在一個實施例中,Y和Z軸被保留完整并且X軸被劃分,從而形成數據“片”或“±夬” DjIjDn,其中η是可以在圖2中看到的數據塊的總數目。然而,在其它實施例中,Y維度可以被劃分或分割,并且X和Z維度可以保持完整。同樣,Z維度可以被分割,并且X和Y維度可以保持完整。
[0033]地震模型算法被在劃分的維度(在該示例性實施例中為X)以及被建模的時間范圍上迭代。例如并且非限制的,地震模型可以被在以Ims為增量的10000ms的時間段上傳播或迭代。然而,具有任何適當的時間增量的任何時間范圍可以被使用。迭代的時間范圍和迭代的數目只由當前技術狀態的APC處理速度限制。在圖3的框305中,數據塊的子集01到0?可以被以X的升序從主機發送到第一計算加速器或APC 107A。具體地,在圖3的框305中,三個連續的數據塊一般可以被用于通過一個時間步長或迭代傳播一個塊一一將被傳播的數據塊外加保持循環維度的光環單元(halo cells)或數據點的兩個相鄰或鄰近的塊。然而,任何數目的數據塊可以包括在該子集中。在一些實施例中,數據塊的子集可以僅包含一個數據塊。
[0034]進入的數據塊DJljDn^以被存儲在加速器或APC存儲器資源112中。更特別地,數據塊01到0?可以被存儲在存儲器112中的滑動窗口緩沖器中。已經在一個時間步長傳播的塊可以被存儲在第二滑動窗口緩沖器中直到足夠的塊可用于在第二時間步長傳播一個塊。這可以針對更多的時間步長被重復,直到在一個APC上的可用存儲器已經耗盡。在框307和311中,輸出被發送到排列中的下一 APC,其可以通過一個或多個時間步長傳播相同的塊。如已經討論的,多個計算加速器或APC在APC隊列110中連接,完整的APC隊列110潛在地在一個或多個時間步長或時間迭代中傳播每個塊。在其中數據體201已經被壓縮的實施例中,如上所述,每個數據塊在第一時間步長之前可以被隊列中的第一 APC解壓縮,并且接著流動通過未壓縮的APC隊列。在塊被傳遞回系統存儲器105之前,在最后的時間步長后塊被壓縮。在另一實施例中,在將已處理的數據塊發送到隊列110中的下一APC之前,數據塊可以被APC壓縮。該壓縮可以被實時執行。如以上公開的,使用無損方案、高保真有損方案、或它們的結合、或對本領域技術人員已知的任何方法,數據塊可以被APC壓縮。
[0035]在313中,來自APC隊列110中的最后的APC(例如,圖1中的APC107D)的輸出被最終拷貝回系統存儲器105。為了說明性目的,虛箭頭說明了從系統存儲器105通過APC隊列110的數據塊的流動。當數據體201已經被耗盡時,(即,所有的塊Dl-Dn已經被在相同數目的時間步長(對應于APC隊列110的長度)傳播),該過程被重復,直到波場已經被一路傳播到最后的時間點。如上簡單討論的,使用APC隊列110的主要優點中的一個是可以避免計算機總線109的瓶頸。如可以看到的,在任何單個數據塊已經經歷過多個時間步長后,塊D1-Dn中的任何一個在通過APCAPC隊列后只通過總線109傳遞到更慢的系統存儲器105。此外,所公開的方法的實施例能夠利用APC存儲器112和APC107自身的更快的速度,而不是更慢的系統存儲器105的速度。
[0036]APC隊列110顯示出了與其它計算隊列相同的特性。對于初始計算,在來自最后的APC(例如,圖1中的107D)的第一輸出數據塊產生之前,當APC隊列110充滿時存在初始延遲,但是一旦APC隊列110充滿時,在實施例中,對于每個輸入數據塊可以產生一個輸出塊。當數據體已經被耗盡時,在APC隊列110中仍可以存在正在進行的多個塊。這些塊需要被進行,其包含發送附加的數據塊以向前移動APC隊列110。在下一次迭代,排空APC隊列110可以與將其充滿重疊。當地震模型算法到達數據體201的末端時,它僅僅回到數據體的開始并且繼續從那里發送塊。在域的開始處的塊已經被傳播,因此它們將最終形成已經被傳播2*M個時間步長(M是以時間步長的計算APC隊列的長度)的輸出,它需要M個塊來充滿APC隊列110以用于第二完整迭代。在該第二迭代期間,來自前一迭代的剩余的M個塊被產生。因此,只經歷一次延遲。
[0037]在實施例中,通過雙緩沖和鎖定存儲器(pinned memory),數據傳遞和計算可以被完全脫離。針對算法中的每個步長(每次新的數據塊的子集被發送到APC隊列),緩沖器的額外集合可以被創建以用于數據傳遞,結果被寫入緩沖器的一個集合并且緩沖器被切換。在每個步長開始時,雙緩沖容許數據傳遞和計算被同時安排。鎖定存儲器使得APC上的異步數據傳遞成為可能。計算加速器具有可以與計算引擎并行運行的數據傳遞引擎,容許數據傳遞和計算重疊。雙緩沖消耗一點加速器存儲器并且將額外的延遲時間增加到計算APC隊列,但是對計算吞吐量沒有影響。
[0038]計算APC隊列中的每個時間步長或時間迭代將輸出塊延遲X軸上的一個位置。其發生是因為在任何特定塊的兩側上的鄰近塊被使用以便傳播塊,如此傳播塊N、塊N-1、N和N+I。因此,如果時間步長i僅僅傳播塊N,針對時間步長J+1有足夠的輸入塊以傳播塊N-1。這對算法的吞吐量沒有影響,但是知道塊何時進入系統存儲器以及離開系統存儲器是重要的。
[0039]計算加速器之間的負載平衡也可以提高整體吞吐量。負載平衡容許每個計算加速器做相同量的工作。當在所有時間步長中傳播的單元的總數目對于所有計算加速器是相同的時,工作量可以均勻地分布。在一個實施例中,利用兩步優化處理可以獲得負載平衡。首先,APC隊列寬度可以被調節使得每個APC隊列傳播相同總數目的單元(所有時間步長的塊數據體大小的總和)。靠近邊緣的APC隊列可以具有更少的要傳播的光環單元。接下來,在工作被傳給下一計算加速器之前,所傳播的塊的總數目可以被一個計算加速器調節。由于光環計算開銷,APC隊列中的第一時間步長可以比后續的時間步長要求更多的工作,因此如果每個計算加速器工作相同數目的全時間步長,只有每個APC隊列中的第一計算加速器將始終忙碌并且每個后續的計算加速器得到越來越少的工作。如果我們容許計算加速器在它們將塊傳給APC隊列中的下一計算加速器之前部分地完成它們的最后的時間步長,這易于解決。下一計算加速器完成它的前任者的部分完成的時間步長,在部分完成它自己的最后的時間步長之前進行幾個它自己的全時間步長,它自己的最后的時間步長接著被傳給APC隊列中的下一計算加速器等。該方案易于實現并且容許我們精細粒度控制由每個計算加速器完成的工作的量,因此計算負載可以被完全平衡。
[0040]如上討論的,在一個實施例中,最簡單的方案分離一個維度并且保持其它兩個完整。通過如上所述的滑動窗口緩沖器光環或影子開銷被在循環維度上消除,因此最簡單的分塊方法具有既在數據傳遞方面又在計算方面完全消除光環開銷的優點。該實施例可以為在例如典型的聲學TTI傳播器中的大約10億個單元的數據體大小產生最夠小的塊。然而,所公開的方法不被數據體大小限制,并且取決于當前技術狀態的系統存儲器大小和速度以及APC存儲器大小和速度,任何數據體大小可以被使用。
[0041]現在參考圖4A和5,在另一實施例中,通過分離兩個剩余維度中的一個并且為每個維度創建單獨的計算流水線或APC隊列,更大的數據體可以被處理。任何兩個維度可以被選擇用于分割或劃分,但是出于解釋的目的,X被選擇為第一劃分維度并且Y是第二劃分維度。參考圖4A,數據體20已經被在X和Y維度上劃分。Dx, Y代表體201中的數據塊的特定迭代。例如,D3,工代表沿著X維度的第三個數據塊,但是在第一Y組中。如由用于數據塊D的下標η所表示的,X已經被劃分η次,而Y已經被劃分為2個劃分區。在這一實施例中,現在參考圖5,針對Y的每個劃