TWI444894B - 用於資料平行操作中的次序保存之方法及電腦可讀取儲存媒體 - Google Patents
用於資料平行操作中的次序保存之方法及電腦可讀取儲存媒體 Download PDFInfo
- Publication number
- TWI444894B TWI444894B TW097120485A TW97120485A TWI444894B TW I444894 B TWI444894 B TW I444894B TW 097120485 A TW097120485 A TW 097120485A TW 97120485 A TW97120485 A TW 97120485A TW I444894 B TWI444894 B TW I444894B
- Authority
- TW
- Taiwan
- Prior art keywords
- operations
- reordering
- order
- logical
- parallel
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
Description
本發明關於資料平行操作中的次序保存。
由於早期的軟體發展,軟體程式已經撰寫成序列式執行。隨時間演進,電腦已經變得更為強大,而具有更多處理能力及記憶體來處理先進的作業。此趨勢最近已經偏離了一直增加的單一處理器時脈速率而朝向在一單一電腦中可使用的處理器數目的增加,即偏離序列執行,而朝向平行執行。軟體開發者想要利用電腦處理能力改善後的好處,而使得他們的軟體程式在採用新的硬體之後即可執行地更快速。但是利用平行硬體,此需要一種不同的方法:開發者必須安排一特定軟體程式的一或多項工作來平行地執行(有時候稱之為「共時」),所以相同的邏輯作業可一次利用許多處理器,並在當加入更多的處理器到執行這種軟體的電腦上時即可造成更佳的效能。
當平行化先前寫好的序列演算法時,其時常需要儘可能地保持先前序列程式行為。但是,既有的序列邏輯之典型平行執行引進新的行為特性,並會造成問題而導致由序列移轉成平行演算法時的挑戰。再者,這種問題亦可能代表對於不可協商之序列行為的改變,而同時造成無法移轉。這種問題的一類型為保存資料次序,其係基於程式師指定的鍵選擇邏輯所產生的次序位置或鍵。
如所示,想像一程式師撰寫此程式文字,其使用一語言整合的查詢理解做為代表一資料平行運算之方法:int[ ]A=...generate some interesting input...;Array.Sort(A);//sort‘A’in place int[ ]B=(from x in A select x*x).To Array( );
該序列演算法為了’B’中的輸出元素,保留’A’中之元素間的相對次序保存,其僅藉由對查詢結果被指定到’B’之該查詢進行序列評估。如果該查詢理解係使用典型的資料平行執行來平行進行,在元素之間的相對次序化可能變得混亂。例如,想像「A」包含元素{0,1,2,3};該程式師將可能預期在執行之後,「B」包含{0,1,4,9}。此問題可概略應用到所有資料平行作業,不僅是查詢理解。
本發明揭示多種科技及技術來在資料平行操作中保存次序。資料平行操作的複雜組合(如樹)被重新撰寫來包含引進區隔化及合併化之資料平行操作。區隔化允許每個區隔來平行地處理該輸入的一分離子集合,且該等結果在稍後被合併回到一組輸出來耗用。該系統確保不論是直接或間接地耗用一次序建立操作之輸出的該等操作會記住必要的次序資訊,所以該合併操作可根據該等操作屬於哪種類別而使用不同技術來保存該次序。
在一種實施方式中,輸入元素次序藉由執行多種步驟來在資料平行操作中被保存。其支援兩種次序化:鍵式及順序式。兩者皆使用次序鍵來模型化:對於前者,次序鍵藉由應用一程式師指定的鍵選擇功能來處理輸入元素而產生,而在後者,次序鍵由擷取順序元素位置來產生(例如該資料源為具有索引的一陣列)。首先,分析一複雜操作(其中包含個別資料平行操作)以標示在該資料源中每個操作一個別類別。在一種實施方式中,有兩種重要的類別要討論:實體重新排序,其中一操作會干擾元素(實體性)之間的既有次序,以及邏輯重新排序,其中一操作納入所有先前對該等元素的次序限制以利於新的次序化。邏輯重新排序操作基本上亦為實體重新排序,但並不必然。如果在該複雜操作中沒有構成的操作係在實體或邏輯重新排序類別中,則該輸入資料元素的次序鍵被記住(如果次序為要緊),以至於它們可在該合併步驟期間被使用。如果一或多個操作係在實體重新排序類別中,則次序鍵必須在重新排序期間被傳遞,以至於它們可在合併步驟期間被發現,且該合併步驟必須執行一排序,以重新建立正確的區隔間次序化。如果一或多個操作係在邏輯重新排序類別中,則最靠近該合併的操作即負責提供重新建構該合併操作之次序所需要的次序鍵資訊。如果存在有多個邏輯重新排序操作,僅有最靠近於該合併的操作將前述的需求條件設定在直接或間接地耗用其輸出之實體重新排序操作上。然後最後的合併程序使用多種技術之一來執行,以藉由次序鍵來排序元素
以產生一最後次序化集合。
此發明內容係用來介紹具有簡化型式的選出的觀念,其在以下的實施方式中會進一步說明。此發明內容並非要識別所主張之標的的關鍵特徵或基本特徵,也並非要做為輔助決定所主張之標的的範疇。
此處之科技及技術可在一般性內文中描述為一種應用來在資料平行操作中保存次序,但該等科技及技術除此之外亦可用於其它目的。在一種實施中,此處所述的一或多種技術可實施成一架構程式中的特徵,像是MICROSOFT®.NET Framework,或來自任何其它種類可處理程式中資料平行操作的程式或服務。
在一種實施方式中,提供一種系統來重新撰寫平行操作,以包含引進區隔化及合併化之操作。每個區隔係平行處理,且邏輯元素位置被保存。該資料被合併回到一輸出串流,以產生一最後次序化集合。在一種實施中,該系統允許順序次序保存,無關於所選擇的區隔化策略,以確保在輸出e0及e1中任兩個元素的相對次序可等於在該輸入中相對應元素之相對次序化(或用於產生e0及e1的那些元素,例如在一對映操作的情況中)。
在一種實施方式中,該系統用於輔助鍵式次序保存。有時候在不必然為順序式的元素當中建立一次序化。例如一種排序操作可邏輯及實體地重新排序該資料。當平行化
這種操作時,一種保存適當次序的方法為記住該鍵資訊一段足夠長的時間來延遲該合併直到結束,其中不論如何將會發生至少一合併操作。此相當類似於順序次序保存:事實上,如下所述,順序次序保存為鍵式次序保存的特例,其中原始的元素索引被模型化為排序鍵。
如第1圖所示,用於實施該系統一或多個部份之範例性電腦系統包括一運算裝置,像是運算裝置100。在其最基本的組態中,運算裝置100基本上包括至少一處理單元102及記憶體104。根據運算裝置的實際組態及種類,記憶體104可為揮發性(如RAM)、非揮發性(如ROM,快閃記憶體等)或兩者的某種組合。此最基本組態在第1圖中由虛線106所示。
此外,裝置100亦可具有額外的特徵/功能。例如,裝置100亦可包括額外的儲存器(可移除及/或不可移除式),其包括但不限於磁碟或光碟或磁帶。這種額外的儲存器在第1圖中例示有可移除儲存器108及不可移除儲存器110。電腦儲存媒體包括以任何方法或技術來儲存資訊的揮發性及非揮發性,可移除及不可移除媒體,像是電腦可讀取指令、資料結構、程式模組或其它資料。記憶體104、可移除儲存器108及不可移除儲存器110皆為電腦儲存媒體的範例。電腦儲存媒體包括(但不限於)RAM, ROM, EEPROM,快閃記憶體或其它記憶體技術,CD-ROM,數位多功能碟片(DVD, "Digital Versatile Disk")或其它光學儲存,磁性卡匣、磁帶、磁碟儲存或其它磁性儲存裝置,或
可用於儲存所要的資訊,並可由裝置100存取之任何其它媒體。任何這種電腦儲存媒體可為裝置100的一部份。
運算裝置100包括一或多個通訊連接114,其允許運算裝置100與其它電腦/應用115通訊。裝置100亦可具有輸入裝置112,像是鍵盤、滑鼠、筆、語音輸入裝置、觸控輸入裝置等。輸出裝置111,例如顯示器、喇叭、印表機等,亦可包含在其中。這些裝置皆為本技藝中所熟知,不需要在此贅述。在一種實施方式中,運算裝置100包括平行操作次序保存應用200。平行操作次序保存應用200將在第2圖中進一步詳細說明。
現在參考第2圖並繼續參照第1圖,所示為在運算裝置100上操作的一平行操作次序保存應用200。平行操作次序保存應用200為存在於運算裝置100上的應用程式之一。但是,將可瞭解到平行操作次序保存應用200另可或額外地實施成在一或多部電腦上的電腦可執行指令及/或在如第1圖所示的不同變化中。另外或額外,平行操作次序保存應用200中一或多個部份可為其它電腦及/或應用115上的系統記憶體104之一部份,或可為熟習電腦軟體技藝者會想到的其它這種變化。
平行操作次序保存應用200包括程式邏輯204,其負責進行部份或所有此處所述的技術。程式邏輯204包括用以重新撰寫一複雜資料平行操作,以包含引進區隔化及合併化的操作(如以下相關於第3圖所述)之邏輯206;用於分析該複雜操作及標示每個構成操作為實體重新排序、邏
輯重新排序、兩者或兩者皆非之邏輯207(如以下相關於第5圖所述);用於平行地處理每個區隔之邏輯208(如以下相關於第3圖所述);用於在資料平行操作中保存邏輯元素位置之邏輯210(如以下相關於第4圖及第5圖所述);用於合併資料回到一輸出串流以產生最後次序化的組合之邏輯212(如以下相關於第3圖及第5圖所述);及其它用於該操作應用之邏輯220。
現在討論第3圖至第8圖,並繼續參照第1圖至第2圖,將進一步詳細說明用於實施平行操作次序保存應用200之一或多種實施方式的階段。在一些實施方式中,第3圖至第8圖之程序至少部份實施在運算裝置100的操作邏輯中。第3圖為用於平行操作次序保存應用200的高階程序流程圖。該程序開始於啟始點240,重新撰寫一複雜資料平行操作以包含邏輯上透明的構成操作,但實體上引進區隔化及合併化(階段242)。此處所使用之名詞「複雜操作」係表示包括一或多個資料平行操作之合成為一更為複雜的操作,像是一樹狀結構,其中節點為資料平行操作、一單一操作、鏈結的操作列表、圖形等。在一種實施方式中,一區隔操作僅區隔該輸入空間成為多個分離區隔(階段243),其使用下述多種技術之一:動態地依需求產生所需尺寸大小的「大部份(chunk)」,藉由運算該區域的邊界的索引來區隔成分離尺寸大小,分解資料成較小的細粒,基於某種鍵選擇函數來雜湊編碼等等。然後每個區隔被獨立及平行地處理(階段244)。之後該合併操作採用這些區隔,
並合併該資料回到一輸出串流(階段246)。該程序結束於終點248。
在該等區隔及合併步驟之間,可發現到類似投影、過濾、結合、排序等的操作。大多數操作落在以下三種類別之一:1.邏輯次序重新排序
2.實體次序重新排序
3.兩者皆進行(實體及邏輯次序重新排序)
4.兩者皆非(實體及邏輯次序保存)
一排序為類別#1的範例:該等元素基於邏輯而重新排序,因為由該排序建立的次序必須被保存在最後集合中,其亦表示不論我們先前已經維持的次序資訊為何,現在均為過時。一排序可視需要實體地重新安排元素,在此情況中,其係在類別#3。一雜湊重新區隔化操作為類別#2中內容之範例:基於一鍵選擇功能,元素可被重新分佈到其它區隔,造成元素在該等區隔當中不可預測及非決定性插入。但是該等重新區隔化操作僅表示實體性地分佈元素,且對於在元素當中建立的邏輯次序並無影響。大多數操作落在類別#4:投影、過濾等,其既非實體地重新排序元素,也不會建立必須被保存之邏輯次序化資訊的任何分類。這些僅為一些非限制性範例,因為顯然地在每個類別中可有許多更多的操作範例。請注意到在任何類別中的操作可刪去
來自任何類別中其輸出的輸入元素,例如過濾及結合。這種操作的保存邏輯元素次序化的一些範例係在第4圖至第8圖中進一步詳細說明。
第4圖所示為牽涉到在資料平行操作中保存既有元素位置的高階階段之一種實施方式。該程序開始於啟始點270,其提供一種操作來建立元素間的一邏輯次序(階段272)。該邏輯次序的建立所採取的型式為一種必需保存元素順序位置之操作,或另可採取型式為一種具有一程式師指定的鍵選擇例式的分類操作,其在給定一元素時可產生用於次序化的一鍵。需要次序保存之操作對於將處理其輸出之所有下游操作有所限制(階段274)。此處所使用的名詞「下游操作」表示直接或間接耗用一操作的輸出的任何操作。這些下游操作基於該操作所屬的類別使用不同任務以記住次序化訊息(階段276),即實體重新排序、邏輯重新排序、兩者、或兩者皆非。該程序結束於終點278。
第5圖所示為牽涉到在資料平行操作中保存既有元素位置的更為詳細階段之一種實施方式。該程序開始於啟始點290,其由個別資料平行操作產生一複雜資料平行操作,並將其結合到一資料源(階段292)。然後該系統分析該複雜操作以標示每個構成操作其類別(階段294)。如果在「實體及邏輯次序重新排序」類別中有任何操作(決定點296),則在該類別中最靠近該合併的操作即用於在該複雜操作內標示個別操作的位置,使得所有下游操作必須記得在該合併期間重新建構次序所需要的資訊(階段298)。所
有直接或間接地耗用來自那一類別的這種操作之輸出的所有操作,執行促進次序保存之程序(階段300)。該最後合併程序使用來自前兩個步驟之資料以產生該最後次序化集合(階段302),且該程序結束於終點310。
但是,如果在「實體及邏輯次序重新排序」類別中沒有任何操作(決定點296),且如果該系統的確需要考慮該次序(決定點304),則該系統將記住在該等元素間的必要元素次序資訊(階段308),例如順序保存之索引或排序的鍵,然後將進行到階段300及302,其保存次序保存,並執行最後合併程序,如前所述。如果該系統並不需考慮次序,則不進行任何特別的工作(階段306),而該程序結束於終點310。
第6圖所示為牽涉到提供促進次序保存之程序的該等階段之一種實施方式。該程序開始於啟始點320,其中在「實體次序重新排序」類別中每一操作被告知其次序需要保存(階段322)。一分析程序應用嘗試錯誤法(heuristics)來決定是否有比傳遞及記住該邏輯元素次序資訊更有效率的演算法(階段324)。如果該分析程序顯示有較佳的替代方式(決定點326),則該系統進行該替代操作(階段329)。如果沒有較佳的替代方式(決定點326),則該系統關連並記住該次序資訊,如前所述(階段328)。該程序結束於終點330。
第7圖所示為牽涉到提供產生該最後次序化集合的一最後合併程序之該等階段的一種實施方式。該程序開始於
啟始點340,如果在該複雜操作中所有構成操作已經仔細地保存實體次序時,即對於該等元素進行一漸增排序(階段342)。因為每一個區隔皆已經排序,其不需要獨立地重新排序每個區隔。如果在執行該複雜操作期間並未保存邏輯到實體(logical-to-physical)次序化關係時,該最後合併程序必須先重新建構每個區隔之間的次序,如第8圖所述。其藉由對於每個區隔平行地執行獨立排序操作來完成。然後該合併程序進行到漸增地合併該等獨立排序的區隔,其藉由使用許多種技術之一(階段344),例如一堆疊資料結構來記住先前比較結果、一合併排序等,以產生該最後次序化的組合(階段346)。該程序結束於終點348。
第8圖所示為牽涉到在該輸入上執行一資料平行排序操作之階段的一種實施方式,其中在元素間的邏輯次序化被改變,但該實體重新排序(即該排序)即合併至該最後合併。如果多重排序出現在一複雜操作中,此可避免在當僅有最後的效果不論如何將保留在該最後合併的輸出中時必需執行多重排序的情況。第8圖的程序亦用於當所有操作並未仔細地保存實體次序化,如上所述。該程序開始於啟始點370,其改變該排序操作,所以其以邏輯方式產生鍵,並建立次序保存性質(階段372)。然後該系統將以實體方式排序該等元素的責任委派給該最後合併操作(階段374)。該程序結束於終點376。
雖然該標的已經以特定於結構化特徵及/或方法性動作的語言來描述,應瞭解到在附屬申請專利範圍中所定義
的該標的並不必然限制於上述之特定特徵或動作。而是上述的特定特徵與動作係以實施該等申請專利範圍之範例型式來揭露。在如此處所述的實施之精神之下及/或藉由以下的申請專利範圍之所有同等者、改變、及修正皆要受到保護。
例如,在電腦軟體技藝中的專業人士將可瞭解到此處所述的範例可在一或多部電腦上不同的組織化,以包括比該等範例中所述之較少或額外的選項或特徵。
100‧‧‧運算裝置
102‧‧‧處理單元
104‧‧‧記憶體
106‧‧‧虛線
108‧‧‧可移除儲存器
110‧‧‧不可移除儲存器
111‧‧‧輸出裝置
112‧‧‧輸入裝置
114‧‧‧通訊連接
115‧‧‧其它電腦/應用
200‧‧‧平行操作次序保存應用
204‧‧‧程式邏輯
206‧‧‧用以重新撰寫一複雜資料平行操作,以包含引進區隔化及合併
化的操作之邏輯
207‧‧‧用於分析該複雜操作及標示每個構成操作為實體重新排序、邏輯重新排序、兩者或兩者皆非之邏輯
208‧‧‧用於平行地處理每個區隔之邏輯
210‧‧‧用於在資料平行操作中保存邏輯元素位置之邏輯
212‧‧‧用於合併資料回到一輸出串流以產生最後次序化的組合之邏輯
220‧‧‧其它用於該操作應用之邏輯
第1圖為一種實施之電腦系統的圖解視圖。
第2圖為在第1圖的電腦系統上操作的一種實施之平行操作次序保存應用之圖解視圖。
第3圖為第1圖之系統的一種實施之高階程序流程圖。
第4圖為第1圖之系統的一種實施之程序流程圖,所示為牽涉到在資料平行操作中保存既有元素位置之高階階段。
第5圖為第1圖之系統的一種實施之程序流程圖,所示為牽涉到在資料平行操作中保存既有元素位置之更為詳細的階段。
第6圖為第1圖之系統的一種實施之程序流程圖,所示為牽涉到提供促進次序保存之程序的階段。
第7圖為第1圖之系統的一種實施之程序流程圖,所示為牽涉到提供產生該最後次序化集合之一最後合併程序
的階段。
第8圖為第1圖之系統的一種實施之程序流程圖,所示為於該輸入上執行一資料平行排序操作來匹配該實體次序化與邏輯次序化之變化。
100‧‧‧運算裝置
102‧‧‧處理單元
104‧‧‧記憶體
106‧‧‧虛線
108‧‧‧可移除儲存器
110‧‧‧不可移除儲存器
111‧‧‧輸出裝置
112‧‧‧輸入裝置
114‧‧‧通訊連接
115‧‧‧其它電腦/應用
200‧‧‧平行操作次序保存應用
Claims (15)
- 一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體具有電腦可執行指令來使得一電腦執行包含以下步驟:重新撰寫之步驟,重新撰寫一複雜資料平行操作,來包含引進區隔化(partitioning)及合併化(merging)之資料平行操作,該重新撰寫步驟包含以下步驟:分析步驟,分析該複雜資料平行操作以將該等資料平行操作標示為邏輯重新排序、實體重新排序、或邏輯與實體重新排序兩者;及識別步驟,根據該等標示來將該等資料平行操作識別為多種操作類型,該多種操作類型包含實體重新排序、邏輯重新排序、或邏輯與實體重新排序兩者;其中,一實體重新排序操作類型,該實體重新排序操作類型在不影響相對應元素之該邏輯次序下,將實體儲存器中的相對應元素重新排列;一邏輯重新排序操作類型,該邏輯重新排序操作類型在不影響在實體儲存器中之該等元素的排序下,將相對應元素邏輯性重新排序;及一邏輯與實體操作類型,該邏輯與實體操作類型進行邏輯性重新排序相對 應元素、及重新排序在實體儲存器中之該等相對應元素兩者;平行處理之步驟,平行地處理每個所得到的區隔,以獲得個別的資料輸出;建立邏輯次序資訊之步驟,基於該等已識別的操作類型,以在執行該等資料平行操作期間,建立邏輯次序資訊;執行次序保存程序之步驟,執行一次序保存程序,該次序保存程序係促進在耗用來自最靠近一合併操作之一邏輯重新排序操作之輸出的所有操作中的次序保存,該合併操作係合併該等操作之輸出;其中,若沒有操作係經識別為實體或邏輯重新排序操作,且若目前有一排序需求係經決定,則在該等元素間之輸入資料相對次序在該合併操作期間係經保存;及合併步驟,使用可用於保存該複雜資料平行操作之一所欲邏輯次序之一最後合併程序,來將該等資料輸出合併回到一個輸出串流。
- 如申請專利範圍第1項所述之電腦可讀取儲存媒體,其中該已保存的邏輯次序資訊係取自於在針對該等資料平行操作之一輸入中一元素的一位置。
- 如申請專利範圍第1項所述之電腦可讀取儲存媒體, 其中該最後合併程序係可操作以用於自該邏輯次序資訊產生一最後次序化集合。
- 如申請專利範圍第1項所述之電腦可讀取儲存媒體,其中該最後合併程序係可操作以在當所有操作已經保存實體次序時,即對元素執行一漸增排序。
- 如申請專利範圍第4項所述之電腦可讀取儲存媒體,其中該一個輸出串流包含該最後合併程序之次序化結果。
- 如申請專利範圍第1項所述之電腦可讀取儲存媒體,其中該最後合併操作係在當所有操作並未保存實體次序時,即負責排序及合併。
- 如申請專利範圍第6項所述之電腦可讀取儲存媒體,其中利用已建立的次序進行之排序,係經改變來產生可建立一邏輯次序保存性質的鍵。
- 如申請專利範圍第1項所述之電腦可讀取儲存媒體,其中該已保存的次序資訊係取自一鍵選擇(key-selection)功能,該鍵選擇功能係自針對該等資料平行操作之一輸入中之每個元素擷取一排序鍵。
- 一種由一電腦所執行以用於在執行一複雜資料平行操作的輸出中保存相對輸入元素位置的方法,該複雜資料平行操作係為正由該電腦所執行的一應用程式之部分,該應用程式係由可執行碼所組成,該方法包含以下步驟:存取複雜資料平行操作之步驟,存取該應用程式之該複雜資料平行操作,該複雜資料平行操作係建立在元素間之一邏輯次序、及要求次序保存;及分隔(partitioning)步驟,將該複雜資料平行操作分隔為在該等元素之個別分離區隔上之複數個平行執行的構成操作,其中該等構成操作重新排序在該等構成操作之個別區隔中之該等元素,以致使每一區隔之該等元素係具有一彼此相對的次序,該彼此相對的次序係異於若該等構成操作已由該複雜資料平行操作以非平行方式來處理之次序;標示步驟,以一標籤來將每一構成操作標示為以下之一者:一實體重新排序操作但非為一邏輯重新排序操作、一邏輯重新排序操作但非為一實體重新排序操作、或一實體及邏輯重新排序操作;分析步驟,根據該等用以識別該等構成操作之類型的標籤,來分析該等構成操作,其中,一實體重新排序操作在無須影響相對應元素的邏輯次序之情況下,重新排序在實體儲存 器中的相對應元素;一邏輯重新排序操作在無須影響在實體儲存器中之該等元素的排序之情況下,邏輯性重新排序相對應元素;及一邏輯與實體重新排序,該實體與邏輯操作類型進行邏輯性重新排序相對應元素、及重新排序在實體儲存器中之該等相對應元素兩者;及確保步驟,根據該等已識別之類型的該等構成操作而使用不同技術,來確保下游操作已經存取關於該邏輯次序之次序資訊,該等不同技術包含執行促進在耗用輸出之所有操作中之次序保存的一次序保存程序,該輸出係為來自最靠近一合併操作之一邏輯重新排序操作之輸出,該合併操作係合併該等操作之輸出,其中,若有任何構成操作係在一邏輯次序重新排序類別、或該實體及邏輯重新排序類別中,則具有最靠近一合併操作的該邏輯次序重新排序標籤之一構成操作會儲存後續重新建構該邏輯次序所需要的資訊,該合併操作係合併由該等構成操作所處理之元素。
- 如申請專利範圍第9項所述之方法,其中分析該複雜資料平行操作以標示具有一個別類別的每個構成操 作,該個別類別係自一群組中選出,該群組包含一實體次序重新排序類別、一邏輯次序重新排序類別、一實體及邏輯次序重新排序類別、及非屬上述三種類別之類別。
- 如申請專利範圍第9項所述之方法,其中在一實體重新排序類別中耗用來自最靠近該合併的操作之輸出的所有構成操作,會儲存在該合併操作期間重新建構次序所需要的資訊。
- 如申請專利範圍第11項所述之方法,其中該次序保存程序包含以下步驟:通知步驟,通知在一實體次序重新排序類別中的每一構成操作關於該每一構成操作的次序需要被保存;及進行替代操作之步驟,如果有一替代的演算法係經決定為比儲存改變以進行排序的方式來得更有效率,且該替代的演算法並不在該實體次序重新排序類別中,則進行該替代操作。
- 如申請專利範圍第12項所述之方法,進一步包含以下步驟:進行關連及記住改變之步驟,如果沒有該經決定 為比記住改變以進行排序的方式來得更有效率之替代演算法,則進行關連並儲存該等改變。
- 如申請專利範圍第12項所述之方法,其中使用嘗試錯誤法(heuristics)來決定該替代演算法。
- 一種用於在資料平行操作中保存既有順序性元素位置的方法,該方法係由一電腦來執行,該電腦係將一資料源載入該電腦之記憶體中,而該載入操作係由該電腦之一處理器來處理,該方法係由該處理器來執行且包含以下步驟:取得資料源之步驟,取得由元素及一複雜資料平行操作所組成之該資料源,該複雜資料平行操作係由操作所組成;重新撰寫之步驟,重新撰寫一複雜資料平行操作以包含資料平行操作,該等資料平行操作係引進區隔化及合併化,該重新撰寫步驟包含以下步驟:分析步驟,分析該複雜資料平行操作以用一個別類別來標示在該資料源中的每一操作,其中該等操作中的一些係經識別為邏輯重新排序操作,且該等操作中的一些係經識別為實體重新排序操作,其中,一實體重新排序操作在無須影響相對應元素之邏輯次序情況下,將實體儲 存器中的相對應元素重新排序;一邏輯重新排序操作在無須影響實體儲存器中之該等元素的次序情況下,邏輯性重新排序相對應元素;及一邏輯與實體操作,該邏輯與實體操作進行邏輯性重新排序相對應元素、及重新排序在實體儲存器中的該等相對應元素兩者;儲存步驟,針對經識別為邏輯重新排序操作之該等操作,儲存資訊以允許重建用於經識別為一最靠近一合併操作之邏輯重新排序操作的一操作之次序,該合併操作係將該等操作之輸出合併;執行次序保存程序之步驟,執行一次序保存程序,該次序保存程序係促進在耗用來自最靠近該合併操作的該邏輯重新排序操作之輸出的所有操作中的次序保存,其中若未有操作係經識別為實體或邏輯重新排序操作,且若目前有一排序需求係經決定,則會在該合併操作期間,保存在該等元素間的輸入資料相對次序;及執行合併操作之步驟,執行該合併操作來產生一最後次序化集合。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/823,167 US8074219B2 (en) | 2007-06-27 | 2007-06-27 | Order preservation in data parallel operations |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200907800A TW200907800A (en) | 2009-02-16 |
TWI444894B true TWI444894B (zh) | 2014-07-11 |
Family
ID=40162386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097120485A TWI444894B (zh) | 2007-06-27 | 2008-06-02 | 用於資料平行操作中的次序保存之方法及電腦可讀取儲存媒體 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8074219B2 (zh) |
EP (1) | EP2176752A4 (zh) |
JP (1) | JP2010532528A (zh) |
CN (1) | CN101689125B (zh) |
TW (1) | TWI444894B (zh) |
WO (1) | WO2009002750A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8996556B2 (en) * | 2009-06-05 | 2015-03-31 | Microsoft Technology Licensing, Llc | Parallel processing of an ordered data stream |
US8276154B2 (en) * | 2009-12-18 | 2012-09-25 | Microsoft Corporation | Hash partitioning streamed data |
JP5410301B2 (ja) * | 2010-01-05 | 2014-02-05 | 日本電信電話株式会社 | 分散処理システム、分散処理方法、およびプログラム |
US8949249B2 (en) | 2010-06-15 | 2015-02-03 | Sas Institute, Inc. | Techniques to find percentiles in a distributed computing environment |
US20120124518A1 (en) * | 2010-11-16 | 2012-05-17 | Microsoft Corporation | Managing Operations via a User Interface |
US10007698B2 (en) * | 2011-11-28 | 2018-06-26 | Sybase, Inc. | Table parameterized functions in database |
US9122700B2 (en) * | 2011-12-20 | 2015-09-01 | Los Alamos National Security, Llc | Parallel log structured file system collective buffering to achieve a compact representation of scientific and/or dimensional data |
US9251155B1 (en) * | 2012-05-04 | 2016-02-02 | Paraccel Llc | Maintaining sort order of data in databases |
US10175961B2 (en) * | 2015-06-10 | 2019-01-08 | International Business Machines Corporation | Joining operator graph elements via whole program optimization |
US10783113B2 (en) * | 2015-06-11 | 2020-09-22 | Oracle International Corporation | Data retention framework |
JP6902805B2 (ja) * | 2017-03-03 | 2021-07-14 | ランウェイ セーフ アイピーアール エイビー | 人工材料拘束システム及びその形成方法 |
CN111291036B (zh) * | 2018-11-21 | 2023-10-20 | 杭州海康威视数字技术股份有限公司 | 数据标签的确定方法、装置及计算机可读存储介质 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2606305B2 (ja) * | 1988-07-21 | 1997-04-30 | 松下電器産業株式会社 | データ処理装置 |
JPH04222049A (ja) | 1990-03-16 | 1992-08-12 | Hewlett Packard Co <Hp> | 属性データ記憶及びグラフィックスパイプラインアクセスを可能にするデータストリーム集信装置 |
US5237691A (en) * | 1990-08-01 | 1993-08-17 | At&T Bell Laboratories | Method and apparatus for automatically generating parallel programs from user-specified block diagrams |
JPH077422B2 (ja) | 1991-08-23 | 1995-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム |
US5421007A (en) * | 1992-05-12 | 1995-05-30 | Syncsort Incorporated | Key space analysis method for improved record sorting and file merging |
JP3415914B2 (ja) * | 1993-10-12 | 2003-06-09 | 富士通株式会社 | 並列マージソート処理方法 |
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
US5860009A (en) * | 1994-04-28 | 1999-01-12 | Kabushiki Kaisha Toshiba | Programming method for concurrent programs and program supporting apparatus thereof |
US5659737A (en) | 1995-08-01 | 1997-08-19 | Oracle Corporation | Methods and apparatus for data compression that preserves order by using failure greater than and failure less than tokens |
US5610603A (en) | 1995-09-28 | 1997-03-11 | International Business Machines Corporation | Sort order preservation method used with a static compression dictionary having consecutively numbered children of a parent |
US5745392A (en) * | 1995-10-05 | 1998-04-28 | Chevron U.S.A. Inc. | Method for reducing data storage and transmission requirements for seismic data |
US6055558A (en) * | 1996-05-28 | 2000-04-25 | International Business Machines Corporation | Pacing of multiple producers when information is required in natural order |
US5999729A (en) * | 1997-03-06 | 1999-12-07 | Continuum Software, Inc. | System and method for developing computer programs for execution on parallel processing systems |
CA2209549C (en) | 1997-07-02 | 2000-05-02 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for loading data into a database in a multiprocessor environment |
US6292822B1 (en) * | 1998-05-13 | 2001-09-18 | Microsoft Corporation | Dynamic load balancing among processors in a parallel computer |
US6212617B1 (en) * | 1998-05-13 | 2001-04-03 | Microsoft Corporation | Parallel processing method and system using a lazy parallel data type to reduce inter-processor communication |
US6480876B2 (en) * | 1998-05-28 | 2002-11-12 | Compaq Information Technologies Group, L.P. | System for integrating task and data parallelism in dynamic applications |
US6366911B1 (en) * | 1998-09-28 | 2002-04-02 | International Business Machines Corporation | Partitioning of sorted lists (containing duplicate entries) for multiprocessors sort and merge |
US6427148B1 (en) * | 1998-11-09 | 2002-07-30 | Compaq Computer Corporation | Method and apparatus for parallel sorting using parallel selection/partitioning |
US6408314B1 (en) * | 1999-07-06 | 2002-06-18 | Synscort Incorporated | Method of performing a high-performance sort which gains efficiency by reading input file blocks sequentially |
US6542921B1 (en) * | 1999-07-08 | 2003-04-01 | Intel Corporation | Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor |
US6434560B1 (en) * | 1999-07-19 | 2002-08-13 | International Business Machines Corporation | Method for accelerated sorting based on data format |
US6438562B1 (en) * | 1999-08-24 | 2002-08-20 | Oracle Corporation | Parallel index maintenance |
US6717851B2 (en) * | 2000-10-31 | 2004-04-06 | Sandisk Corporation | Method of reducing disturbs in non-volatile memory |
US6691109B2 (en) * | 2001-03-22 | 2004-02-10 | Turbo Worx, Inc. | Method and apparatus for high-performance sequence comparison |
US7085769B1 (en) * | 2001-04-26 | 2006-08-01 | Ncr Corporation | Method and apparatus for performing hash join |
US7047395B2 (en) * | 2001-11-13 | 2006-05-16 | Intel Corporation | Reordering serial data in a system with parallel processing flows |
US6864892B2 (en) | 2002-03-08 | 2005-03-08 | Sun Microsystems, Inc. | Graphics data synchronization with multiple data paths in a graphics accelerator |
US7058937B2 (en) * | 2002-04-12 | 2006-06-06 | Intel Corporation | Methods and systems for integrated scheduling and resource management for a compiler |
WO2003091872A1 (fr) * | 2002-04-26 | 2003-11-06 | Nihon University School Juridical Person | Dispositif de tri par fusion en parallele, procede et programme y relatifs |
JP3977765B2 (ja) * | 2003-03-31 | 2007-09-19 | 富士通株式会社 | グリッドコンピューティングを用いたシステムにおけるリソース提供方法,そのシステムにおける監視装置およびその監視装置用プログラム |
CA2891145C (en) | 2003-06-25 | 2019-02-19 | Craig W. Stanfill | Computer-aided parallelizing of computation graphs |
US7251650B2 (en) | 2003-08-25 | 2007-07-31 | International Business Machines Corporation | Method, system, and article of manufacture for processing updates to insert operations |
US20050131893A1 (en) * | 2003-12-15 | 2005-06-16 | Sap Aktiengesellschaft | Database early parallelism method and system |
US7426752B2 (en) | 2004-01-05 | 2008-09-16 | International Business Machines Corporation | System and method for order-preserving encryption for numeric data |
US20060155394A1 (en) | 2004-12-16 | 2006-07-13 | International Business Machines Corporation | Method and apparatus for order-preserving clustering of multi-dimensional data |
US7779008B2 (en) * | 2005-02-16 | 2010-08-17 | Oracle International Corporation | Parallel partition-wise aggregation |
US8126870B2 (en) | 2005-03-28 | 2012-02-28 | Sybase, Inc. | System and methodology for parallel query optimization using semantic-based partitioning |
US7302510B2 (en) * | 2005-09-29 | 2007-11-27 | International Business Machines Corporation | Fair hierarchical arbiter |
US20070250470A1 (en) * | 2006-04-24 | 2007-10-25 | Microsoft Corporation | Parallelization of language-integrated collection operations |
US8316360B2 (en) * | 2006-09-29 | 2012-11-20 | Intel Corporation | Methods and apparatus to optimize the parallel execution of software processes |
-
2007
- 2007-06-27 US US11/823,167 patent/US8074219B2/en not_active Expired - Fee Related
-
2008
- 2008-06-02 TW TW097120485A patent/TWI444894B/zh not_active IP Right Cessation
- 2008-06-16 CN CN200880022282.8A patent/CN101689125B/zh not_active Expired - Fee Related
- 2008-06-16 WO PCT/US2008/067138 patent/WO2009002750A2/en active Application Filing
- 2008-06-16 JP JP2010514964A patent/JP2010532528A/ja active Pending
- 2008-06-16 EP EP08771207A patent/EP2176752A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP2176752A2 (en) | 2010-04-21 |
WO2009002750A3 (en) | 2009-02-26 |
CN101689125B (zh) | 2013-12-25 |
JP2010532528A (ja) | 2010-10-07 |
TW200907800A (en) | 2009-02-16 |
WO2009002750A2 (en) | 2008-12-31 |
EP2176752A4 (en) | 2011-05-04 |
US20090007137A1 (en) | 2009-01-01 |
CN101689125A (zh) | 2010-03-31 |
US8074219B2 (en) | 2011-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI444894B (zh) | 用於資料平行操作中的次序保存之方法及電腦可讀取儲存媒體 | |
US20240028595A1 (en) | Editor for generating computational graphs | |
EP3803570B1 (en) | Systems and methods for dataflow graph optimization | |
Okasaki | Purely functional data structures | |
Schatz et al. | High-throughput sequence alignment using Graphics Processing Units | |
US8201171B2 (en) | Adjacent data parallel and streaming operator fusion | |
Griebler et al. | High-level and productive stream parallelism for Dedup, Ferret, and Bzip2 | |
Sengupta et al. | Evograph: On-the-fly efficient mining of evolving graphs on gpu | |
KR102549994B1 (ko) | 가변 레벨 병렬화를 사용하여 데이터 처리 동작을 수행하기 위한 시스템 및 방법 | |
Spangenberg et al. | Evaluating new approaches of big data analytics frameworks | |
Wijs et al. | GPUexplore 2.0: unleashing GPU explicit-state model checking | |
TW200910093A (en) | Memory transaction grouping | |
Tuomanen | Hands-On GPU Programming with Python and CUDA: Explore high-performance parallel computing with CUDA | |
Banerjee et al. | Work efficient parallel algorithms for large graph exploration on emerging heterogeneous architectures | |
JP3318051B2 (ja) | 翻訳処理方法 | |
US9507794B2 (en) | Method and apparatus for distributed processing of file | |
US8549456B2 (en) | System and method for circuit design floorplanning | |
Kastenberg et al. | Graph attribution through sub-graphs | |
Upadhyay et al. | Large scale graph processing in a distributed environment | |
Marszałek | Modification of parallelization for fast sort algorithm | |
Teng | Accelerating the alignment phase of Minimap2 genome assembly algorithm Using GACT-X in a commercial Cloud FPGA machine. | |
Tricoire | BROUTE: a benchmark suite for the implementation of standard vehicle routing algorithms | |
Battyányi et al. | Describing membrane computations with a chemical calculus | |
Hughey | Tumbling down the GraphBLAS rabbit hole with SHMEM | |
Feng et al. | Gene Sequence Input Formatting and MapReduce Computing. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |