利用共享存儲器傳遞混合消息的方法
【專利摘要】一種利用共享存儲器傳遞混合消息的方法。一種在單一的計算環(huán)境中至少兩個協(xié)處理器之間傳輸數據的方法(10),其中所述協(xié)處理器中的一個是發(fā)送處理器以及所述協(xié)處理器中的另一個是接收處理器,并且所述單一的計算環(huán)境包括可由所述協(xié)處理器訪問的存儲器,該存儲器除其它事項外包括:在該發(fā)送處理器中確定要傳輸的數據的大小(14),將該數據附連到消息(15),并如果該數據的大小小于或等于預定的閾值(36)則將該消息發(fā)送到接收處理器(30),以及如果該數據的大小大于預定的閾值(34)則將指向所述存儲器中的數據的位置的指針發(fā)送到接收處理器(24,30)。
【專利說明】利用共享存儲器傳遞混合消息的方法
【背景技術】
[0001]在多處理器或多核處理器計算環(huán)境中運行的應用的代碼性能可以部分地由該環(huán)境中的單個處理單元如何相互通信來決定。共享存儲器和消息傳遞是用于處理器間通信的兩大類型的通信范例。已知利用兩種通信范例的混合編程技術。
【發(fā)明內容】
[0002]本發(fā)明的一個方面涉及在單一的計算環(huán)境中兩個或多個協(xié)處理器之間傳輸數據的方法,其中協(xié)處理器中的一個是發(fā)送處理器以及協(xié)處理器中的另一個是接收處理器。單一的計算環(huán)境包括可由協(xié)處理器訪問的存儲器。該方法包括在發(fā)送處理器中確定要傳輸的數據的大小。如果數據的大小小于或等于預定的閾值,則該方法將數據附連到消息,并且將該消息發(fā)送到接收處理器。如果數據的大小大于預定的閾值,則該方法將指針發(fā)送到接收處理器,其中,所述指針指向存儲器中的數據的位置。
【專利附圖】
【附圖說明】
[0003]在附圖中;
[0004]圖1是示出根據本發(fā)明的一個實施例利用共享存儲器傳遞混合消息的方法的流程圖。
【具體實施方式】
[0005]在【背景技術】和下面的描述中,出于解釋的目的,闡述許多具體的細節(jié)以便提供對本文中所描述的技術的全面理解。然而,對于本領域技術人員而言將顯而易見,示范實施例可以在沒有這些具體細節(jié)的情況下實施。在其它情況下,結構和設備以圖的形式表示,以便于該示范實施例的描述。
[0006]示范實施例參考附圖進行描述。這些附圖示出了實現本文中所描述的模塊,方法或計算機程序產品的具體實施例的某些細節(jié)。然而,附圖不應被解釋為強加任何可能存在于附圖中的限制。方法和計算機程序產品可以在任何機器可讀介質上提供,用于實現其操作。實施例可使用現有的計算機處理器來實現,或者通過為此或為另一個目的而并入的專用計算機處理器來實現,或通過硬連線系統(tǒng)來實現。
[0007]如上面提到的,本文中所描述的實施例可以包括計算機程序產品,該計算機程序產品包括用于攜帶或具有存儲在其上的計算機可運行指令或數據結構的機器可讀介質。這樣的機器可讀介質可以是任何可用的介質,其可以由通用或專用計算機或其它具有處理器的機器訪問。通過舉例,這樣的機器可讀介質可以包括RAM,ROM, EPROM, EEPROM, CD-ROM或者其它光盤存儲、磁盤存儲或其它磁存儲設備,或是可以用于攜帶或存儲所需的機器可運行指令或數據結構形式的程序代碼的任何其它介質,該介質可以由通用或專用計算機或其它具有處理器的機器訪問。當信息通過網絡或另一個通信連接(硬連線、無線或者硬連線或無線的組合)被傳輸或提供到機器時,該機器適當地將該連接視為機器可讀介質。因此,任何這樣的連接都被適當地稱為機器可讀介質。上述的組合也包括在機器可讀介質的范圍之內。機器可運行指令包括例如指令和數據,其導致通用計算機、專用計算機、或專用處理機器執(zhí)行某個功能或功能組。
[0008]實施例將用方法步驟的一般上下文描述,該方法步驟在一個實施例中可由包括機器可運行指令的程序產品來實現,該機器可運行指令諸如例如由連網環(huán)境中的機器執(zhí)行的程序模塊的形式的程序代碼。通常,程序模塊包括例程、程序、對象、組件、數據結構等,其具有執(zhí)行特定任務或實現特定抽象數據類型的技術效果。機器可運行指令、關聯數據結構和程序模塊代表用于執(zhí)行本文所公開的方法的步驟的程序代碼的示例。這樣的可運行指令或關聯數據結構的特定序列表示用于實現在這樣的步驟中描述的功能的相應動作的示例。
[0009]實施例可以在連網環(huán)境中使用到具有處理器的一個或多個遠程計算機的邏輯連接來實現。邏輯連接可以包括局域網(LAN)和廣域網(WAN),局域網(LAN)和廣域網(WAN)在這里以示例而不是限制的方式來展示。這樣的網絡環(huán)境在辦公室范圍或企業(yè)范圍的計算機網絡中、內聯網和互聯網中常見,并且可以使用多種不同的通信協(xié)議。本領域技術人員將會理解,這樣的網絡計算環(huán)境將通常包含許多類型的計算機系統(tǒng)配置,包括個人計算機、手持設備、多處理器系統(tǒng)、基于微處理器的或可編程的消費電子產品、網絡PC、小型計算機、大型計算機等。
[0010]實施例也可以在分布式計算環(huán)境中實施,其中任務由通過通信網絡鏈接(通過硬連線鏈路,無線鏈路或者硬連線或無線鏈路的組合)的本地和遠程處理設備執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設備兩者中。
[0011]用于實現全部或部分的示范實施例的示范系統(tǒng)可以包括計算機形式的通用計算設備,包括處理單元、系統(tǒng)存儲器和系統(tǒng)總線,該系統(tǒng)總線將包括系統(tǒng)存儲器的各種系統(tǒng)組件耦合至處理單元。系統(tǒng)存儲器可以包括只讀存儲器(ROM)和隨機存取存儲器(RAM)。計算機還可以包括用于從磁硬盤讀取和寫入到磁硬盤的磁硬盤驅動器、用于從可拆卸磁盤讀取或寫入到可拆卸磁盤的磁盤驅動器以及用于從可拆卸光盤讀取或寫入到可拆卸光盤的光盤驅動器,該可拆卸光盤諸如CD-ROM或其它光介質。驅動器及其關聯的機器可讀介質為計算機提供機器可運行指令、數據結構、程序模塊和其它數據的非易失性存儲。
[0012]在實施例中公開的方法的技術效果包括改進多處理器計算系統(tǒng)的性能和可擴縮性。任意大的消息可以像任意小的消息一樣有效地在協(xié)處理器之間傳輸。從協(xié)處理器發(fā)送消息到多個接收處理器所需的額外時間是可忽略的。具有大的數據類型和不同消息的大小要求之間高度差別的實時處理系統(tǒng)的性能,例如高光譜成像系統(tǒng)的性能可通過在實施例中公開的方法來改進。
[0013]在具有至少兩個協(xié)處理器的單一計算環(huán)境中,當在處理到計算環(huán)境的數據輸入的過程中時,協(xié)處理器之間傳輸數據往往是必要的。為了在協(xié)處理器之間傳遞數據,發(fā)送處理器必須將消息發(fā)送到接收處理器,以將數據或有關數據的信息傳輸到接收處理器。在消息傳遞是通信范例的計算環(huán)境中,發(fā)送處理器可以發(fā)送消息(帶有包含在該信息中的數據)到一個或多個接收處理器。備選地,在具有共享存儲器系統(tǒng)的計算環(huán)境中,發(fā)送處理器可以將消息發(fā)送到一個或多個接收處理器,該消息編碼可被所有協(xié)處理器訪問的存儲器中數據駐留的位置。隨后,每個協(xié)處理器可以直接訪問共享存儲器中的數據。
[0014]圖1是根據利用共享存儲器使用混合消息傳遞的本發(fā)明的實施例,示出在協(xié)處理器之間傳輸數據的方法10的流程圖。最初,在步驟12,在多處理器系統(tǒng)中運行應用的過程期間,計算環(huán)境中的協(xié)處理器可能有必要將特定的數據塊傳輸到至少一個其它協(xié)處理器。數據塊將具有可例如通過在存儲器中數字化編碼數據所需的字節(jié)數來確定的一些有限的大小。
[0015]在步驟14,發(fā)送處理器可以確定要被傳輸的數據的大小,并將該大小與預定的閾值比較。如果在36被傳輸的數據的大小小于或等于預定的閾值,則在步驟15,發(fā)送處理器將數據復制到將要傳輸到一個或多個接收處理器的消息中。相反地,在34,如果被傳輸的數據的大小大于預定的閾值,則發(fā)送處理器可以在步驟16確定數據是否位于共享存儲器中。
[0016]在本發(fā)明的一個實施例中,預定的閾值可以諸如在配置文件中被編碼為靜態(tài)參數。配置文件可以是用初始設定編碼的ASCII文本文件,這通常用于應用、服務器和操作系統(tǒng)并且經常用諸如XML的標記語言來寫成。備選地,預定的閾值可以被傳遞到所述計算環(huán)境中,以作為應用程序實例化時的參數,或者甚至設置為計算環(huán)境的操作系統(tǒng)的環(huán)境變量。在所有這些示例中都編碼靜態(tài)參數,該靜態(tài)參數標識該預定的閾值以確定特定大小的數據塊是否應當通過共享存儲器或消息傳遞來被更有效地傳輸。
[0017]在本發(fā)明的另一個實施例中,預定的閾值可以是自適應的。當傳輸消息時,發(fā)送處理器可以基于所有的協(xié)處理器已知的全局時鐘插入時間戳,并且接收處理器隨后可以分析延遲以確定是否該預定的閾值應該被修改。可能影響延遲并改變最佳閾值的因素包括總線擁塞、尋呼、中斷和CPU的時鐘速度。
[0018]在40,如果發(fā)送處理器確定要傳輸的數據存儲在不能被一個或多個接收處理器訪問的存儲器位置,則發(fā)送處理器可以在步驟18將數據移動到共享存儲器區(qū)域。如果在38,發(fā)送處理器確定要傳輸的數據已經位于共享存儲器區(qū)域中,則發(fā)送處理器可以跳過將數據移動到共享存儲器區(qū)域的步驟,
[0019]然后發(fā)送處理器可以在步驟20確定是否存在唯一標識符;也就是說,是否唯一標識符已經產生并分配給要傳輸到接收處理器的數據。該唯一標識符是分配給計算對象的代碼,諸如,是為了使分布式計算環(huán)境能唯一地標識信息的數據塊。在本發(fā)明的上下文中,所述唯一標識符分配給要傳送的數據,使得通過共享存儲器訪問該數據的接收處理器可確定該數據是否有效。無效的數據可能由同步和過期的問題導致,據此,共享內存區(qū)域可能會在接收處理器訪問對應于唯一標識符的舊數據之前就被新的數據覆蓋。該唯一標識符可以是在軟件設計領域中公知的通用唯一標識符(UUID)的實現方式之一。備選地,唯一標識符可以是編碼有關于數據的時間的時間戳,該有關于數據的時間諸如當數據被寫入到共享存儲器區(qū)域時,或者參考自身當唯一標識符被創(chuàng)建時的時間。
[0020]在42,如果發(fā)送處理器確定對于位于共享存儲器內的要傳輸的數據不存在唯一標識符,則發(fā)送處理器可在步驟21產生并預置唯一標識符到在數據的位置的共享存儲器區(qū)域。如果在44發(fā)送處理器確定對于要傳輸的數據的唯一標識符已經存在并且位于共享存儲器區(qū)域中,則發(fā)送處理器可以跳過添加唯一標識符到共享存儲器區(qū)域中的數據的步驟。
[0021]一旦發(fā)送處理器確定對于共享存儲器中要傳輸的數據的唯一標識符,發(fā)送處理器就可以在步驟22從共享存儲器區(qū)域中復制該唯一標識符來放置到要發(fā)送到該一個或多個接收處理器的消息中。另外,在步驟24,發(fā)送處理器可以將指針設置到消息中,其中所述指針是指示在共享存儲器中定位要傳輸的數據的地址的值。雖然將指針放置到要被發(fā)送的消息中是本發(fā)明的優(yōu)選實施例,但是諸如共享存儲器系統(tǒng)的類型的特定的計算環(huán)境可以避免直接將指針從發(fā)送處理器傳輸到接收處理器。例如,計算環(huán)境可以這樣配置:該共享存儲器以要傳輸的數據的位置可以由接收處理器通過對該消息中的唯一標識符執(zhí)行模數操作來確定的方式被劃分。
[0022]要傳輸到至少一個接收處理器的消息可以如步驟15中具有消息中的數據的拷貝,或者可以如步驟24中包含指向共享存儲器中的位置的指針。無論如何,在步驟28,發(fā)送處理器可確定是否額外的元數據必須在消息中發(fā)送。如果在46發(fā)送處理器確定添加額外的元數據到消息中,則在步驟26,發(fā)送處理器可以復制該額外的元數據到消息中。如果在48發(fā)送處理器確定沒有額外的元數據是可用的或對于消息而言是必需的,則發(fā)送處理器可以跳過復制額外的元數據到消息中的步驟。
[0023]元數據可以是提供額外的信息來描述要傳輸的數據并使該數據的通信最有效的任何數據的集合。例如,元數據可以包含表征從發(fā)送處理器將數據傳送到特定的接收處理器所需要的信道的延遲信息。在其中數據可以表示可取決于諸如光譜帶的數目、位深度、圖像尺度和帶排序的特性以幾種不同方式中的一種被格式化的高光譜圖像的計算環(huán)境中,元數據可以編碼高光譜圖像的特定格式。表征用來收集成像的光學器件的諸如光圈值和ISO感光度的額外信息可編碼為元數據。此外,包含應用于該高光譜圖像的變換的處理歷史可存儲為元數據。
[0024]然后發(fā)送處理器可以在步驟30將該消息發(fā)送到至少一個接收處理器。該方法在步驟32完成,其中每個接收處理器可以解析該消息以直接確定數據是否被編碼在消息中或者如果消息包含唯一標識符和指針則從共享存儲器地址檢索數據。
[0025]許多計算環(huán)境可能受益于上述發(fā)明。雖然發(fā)送和接收處理實體被稱為協(xié)處理器,但是本發(fā)明同樣適用于進程、內核線程和光纖。特別適合于本發(fā)明的硬件實現方式包括圖形處理單元(GPU)和多核處理器,這是因為其高度并行處理架構。
[0026]本書面描述使用實施例來公開本發(fā)明,包括最佳模式,并且還使本領域的技術人員能夠實施本發(fā)明,包括制作和使用任何裝置或系統(tǒng),以及執(zhí)行任何并入的方法。本發(fā)明的專利范圍由權利要求書限定,并且可包括本領域技術人員能想到的其它示例。如果這樣的其它實施例具有不與權利要求的字面語言不同的結構元件,或者如果這樣的其它實施例包括與權利要求的字面語言無實質差異的等效結構元件,則這樣的其它實施例意在位于權利要求書的范圍內。
[0027]部件列表
[0028]10-在協(xié)處理器之間傳輸數據的方法
[0029]12-方法10的初始步驟
[0030]14-確定要傳輸的數據的大小并將該大小與預定的閾值比較的步驟
[0031]15-復制數據到消息中的步驟
[0032]16-確定數據是否位于共享存儲器中的步驟
[0033]18-移動數據到共享存儲器區(qū)域的步驟
[0034]20-確定是否存在唯一標識符的步驟
[0035]21-將唯一標識符產生并預置到在數據的位置的共享存儲器區(qū)域的步驟
[0036]22-從共享存儲器區(qū)域中復制要放置到消息中的唯一標識符的步驟
[0037]24-放置指針到消息中的步驟
[0038]26-復制額外的元數據到消息的步驟
[0039]28-確定是否額外的元數據必須在消息中傳輸的步驟
[0040]30-發(fā)送消息的步驟[0041 ]32-方法10的最后步驟
[0042]34-要傳輸的數據的大小大于預定的閾值
[0043]36-要傳輸的數據的大小小于或等于預定的閾值
[0044]38-要傳輸的數據已經位于共享存儲器區(qū)域中
[0045]40-要傳輸的數據存儲在不能被一個或多個接收處理器訪問的存儲器位置中
[0046]42-對于位于共享存儲器中要傳輸的數據不存在唯一標識符
[0047]44-要傳輸的數據的唯一標識符已經存在,并且位于共享存儲器區(qū)域中
[0048]46-添加額外的元數據到消息
[0049]48-沒有額外的元數據是可用的或對于消息是必需的
【權利要求】
1.一種在單一的計算環(huán)境中至少兩個協(xié)處理器之間傳輸數據的方法,其中所述至少兩個協(xié)處理器中的一個是發(fā)送處理器以及所述至少兩個協(xié)處理器中的另一個是接收處理器,并且所述單一的計算環(huán)境包括可由所述至少兩個協(xié)處理器訪問的存儲器,所述方法包括: 在所述發(fā)送處理器中確定要傳輸的數據的大小(14), 如果所述數據的大小小于或等于預定的閾值(36),則將所述數據附連到消息(15)并將所述消息發(fā)送到所述接收處理器(30),以及 如果所述數據的大小大于預定的閾值(34),則將指針發(fā)送到所述接收處理器(24,30),其中所述指針指向所述存儲器中所述數據的位置。
2.如權利要求1所述的方法,其中在將指針發(fā)送到所述接收處理器的步驟之前,有如果所述數據不是已經在所述位置(16,40)則將所述數據移動到存儲器中對應于所述指針的位置的步驟(18)。
3.如權利要求1所述的方法,其中,將指針發(fā)送到所述接收處理器的步驟(24,30)包括將唯一標識符發(fā)送到所述接收處理器的步驟(22),其中所述唯一標識符被預置到由所述指針指示的位置處的所述存儲器中的所述數據(21)。
4.如權利要求3所述的方法,其中所述唯一標識符是時間戳。
5.如權利要求1所述的方法,其中所述預定的閾值編碼在配置文件中。
6.如權利要求1所述的方法,其中所述預定的閾值基于從所述發(fā)送處理器發(fā)送消息到所述接收處理器所需的時間的量。
7.如權利要求1所述的方法,其中所述發(fā)送處理器將所述消息發(fā)送到多于一個的接收處理器。
【文檔編號】G06F15/167GK104077265SQ201410129531
【公開日】2014年10月1日 申請日期:2014年1月25日 優(yōu)先權日:2013年3月25日
【發(fā)明者】B·T·奧基平蒂, K·R·庫琴斯基, E·D·比勒 申請人:通用電氣航空系統(tǒng)有限責任公司