本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種用于在并行異構(gòu)系統(tǒng)上執(zhí)行算法的系統(tǒng)和方法。
背景技術(shù):
本發(fā)明在其一些實施例中涉及用于優(yōu)化程序執(zhí)行的系統(tǒng)和方法,更具體地但非唯一地,涉及用于優(yōu)化分布式和/或異構(gòu)處理系統(tǒng)中的程序執(zhí)行的系統(tǒng)和方法。
異構(gòu)處理平臺的規(guī)模、處理器指令集架構(gòu)(instructionsetarchitecture,isa)、通信架構(gòu)和存儲器架構(gòu)存在巨大差異。例如,與擁有10000個多核cpu服務(wù)器的計算云之類的同質(zhì)處理系統(tǒng)對比,具有片上系統(tǒng)(system-on-chip,soc)的蜂窩電話包括自定義專用集成電路(applicationspecificintegratedcircuit,asic)、圖形處理器(graphicprocessingunit,gpu)和小型雙核中央處理器(centralprocessingunit,cpu)的組合。
以高級語言編寫的同一程序可編譯成在不同目標異構(gòu)分布式處理系統(tǒng)中執(zhí)行的機器可執(zhí)行代碼。每個目標處理系統(tǒng)可具有一個不同的架構(gòu)。因此,相同的機器可執(zhí)行指令的性能水平可能不同,取決于執(zhí)行系統(tǒng)的架構(gòu)。對于一個系統(tǒng),程序可能快速執(zhí)行,而對于另一系統(tǒng),同一程序可能執(zhí)行地非常慢。
一種針對基于目標異構(gòu)系統(tǒng)提高程序性能的問題的方案是為每種特定目標硬件配置手動定制代碼。這種手動編碼耗時且容易出錯。
如果可能,另一種方案是在由相似的處理平臺組成的計算云之類的同質(zhì)系統(tǒng)中執(zhí)行代碼。
針對上述問題提出的另一種方案是從源代碼生成基于圖形的中間表示(intermediaterepresentation,ir)。ir是高級程序的機器無關(guān)表示。ir可在編譯期間優(yōu)化,以生成程序的多種設(shè)備特定實施方式。例如,產(chǎn)生兩個機器可執(zhí)行版本,第一版本適合在通用中央處理器上執(zhí)行,第二版本適合在專用圖形處理器上執(zhí)行。運行時環(huán)境根據(jù)架構(gòu)選擇執(zhí)行哪種變體。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是改進在處理系統(tǒng)中執(zhí)行的代碼的代碼生成。
前述和其它目標通過獨立權(quán)利要求的特征來實現(xiàn)。其它實施方式從從屬權(quán)利要求、描述內(nèi)容和附圖中顯而易見。
根據(jù)第一方面,一種用于生成在處理系統(tǒng),尤其是分布式處理系統(tǒng)上執(zhí)行的代碼的裝置包括:計算機程序的中間表示(intermediaterepresentation,ir);解釋器,用來評估所述中間表示,而所述解釋器用于:接收反饋信息,所述反饋信息包括關(guān)于所述處理系統(tǒng)的信息;以及基于所述反饋信息來調(diào)整所述ir。
在編譯時需要知道目標系統(tǒng)架構(gòu)。所述裝置執(zhí)行所述計算機程序的運行時調(diào)整,以基于所述處理系統(tǒng)的狀態(tài)和/或動態(tài)變化來改變所述程序的行為。所述計算機程序?qū)ζ渥陨磉M行重配置,以適應(yīng)所述處理系統(tǒng)的架構(gòu)中的變化。在遇到先前未知的處理架構(gòu)時,執(zhí)行程序可對其自身進行重配置。所述執(zhí)行程序可對其自身進行重配置以在由不同子架構(gòu)(例如,不同的節(jié)點處理器架構(gòu))組成的目標異構(gòu)系統(tǒng)上執(zhí)行。
根據(jù)所述第一方面,在所述裝置的第一可能實施形式中,所述ir包括依賴數(shù)據(jù)流圖形,表示所述計算機程序的計算流程;所述圖形包括以下元素:表示一個或多個數(shù)據(jù)操作的節(jié)點,表示所述數(shù)據(jù)操作的一個或多個參數(shù)的邊緣,尤其是入邊緣,表示所述數(shù)據(jù)操作的一個或多個結(jié)果的邊緣,尤其是出邊緣;和/或一個或多個規(guī)則,其對如何評估所述ir,尤其是所述數(shù)據(jù)流圖形的所述元素,進行編碼。
一個或多個規(guī)則與圖形節(jié)點關(guān)聯(lián),支持程序執(zhí)行基于受影響圖形節(jié)點進行有效的運行時調(diào)整。基于dir的圖形可有效地重優(yōu)化和/或重編譯。
根據(jù)所述第一方面的所述第一實施形式,在所述裝置的第二可能實施形式中,所述解釋器用于響應(yīng)于所述反饋信息而調(diào)整所述ir,從而執(zhí)行以下操作中的至少一個:將至少一個新規(guī)則添加到所述ir、撤銷所述ir的至少一個預(yù)先存在的規(guī)則、改變所述ir中的至少一個預(yù)先存在的規(guī)則。
評估的規(guī)則可觸發(fā)先前存在的規(guī)則的自適應(yīng),從而支持例如基于遞歸的復(fù)雜運行時調(diào)整。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施形式,在所述裝置的第三可能實施形式中,所述解釋器還用于集中生成部分物化的ir,所述部分物化的ir可由多個目標分布式處理系統(tǒng)作為全物化本地ir的本地調(diào)整和本地生成的基礎(chǔ)來執(zhí)行,用于某一分布式處理系統(tǒng)中多個節(jié)點中的每個節(jié)點處的本地執(zhí)行。
集中ir基于可用全局信息進行部分編譯,無需生成全局完整程序。部分編譯的代碼被發(fā)送到每個節(jié)點,以基于本地節(jié)點條件進行本地編譯和調(diào)整。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施形式,在所述裝置的第四可能實施形式中,所述某一分布式處理系統(tǒng)的多個節(jié)點中的每個單獨節(jié)點包括一個本地解釋器以評估集中生成的調(diào)整后ir,而所述解釋器用于:接收本地反饋信息,所述本地反饋信息包括關(guān)于所述某一分布式處理系統(tǒng)的本地信息;以及基于所述本地反饋信息本地調(diào)整所述集中生成的調(diào)整后ir。
所述集中調(diào)整后ir在各個節(jié)點處本地調(diào)整以創(chuàng)建不同的版本,對每個版本進行優(yōu)化以在所述本地節(jié)點處執(zhí)行。每個節(jié)點處的調(diào)整可以不同,取決于本地節(jié)點架構(gòu)和其它本地條件。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施形式,在所述裝置的第五可能實施形式中,所述解釋器還用于向中央調(diào)度器提供所述調(diào)整后ir,所述中央調(diào)度器用于集中調(diào)度所述調(diào)整后ir以針對每個單獨節(jié)點處的多個相應(yīng)目標架構(gòu),在每個單獨節(jié)點處本地執(zhí)行。
中央調(diào)度器能夠在不知道目標節(jié)點處的架構(gòu)和處理條件的情況下調(diào)度所述調(diào)整后ir在所述目標節(jié)點上的處理。
根據(jù)所述第一方面的所述第三、第四或第五實施形式,在所述裝置的第六可能實施形式中,所述裝置還包括所述多個節(jié)點中的每個單獨節(jié)點處的一個本地規(guī)則集,所述規(guī)則對如何評估所述本地調(diào)整后ir,尤其是所述本地調(diào)整后ir的所述本地數(shù)據(jù)流圖形的所述元素,進行編碼。
所述本地規(guī)則集用于基于本地架構(gòu)和/或本地條件等使所述計算機程序適應(yīng)(例如,所述本地節(jié)點處的)本地環(huán)境。不同的本地處理環(huán)境可以具有不同的本地規(guī)則集,從而以自定義的靈活性使同一計算機程序以不同的方式適應(yīng)各個本地環(huán)境。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施方式,在所述裝置的第七可能實施形式中,所述反饋信息從包含以下項的組中選擇:所述處理系統(tǒng)的圖形拓撲表示的模式、所述處理系統(tǒng)的處理系統(tǒng)拓撲的模式、基于所述處理系統(tǒng)的至少一個系統(tǒng)運行時變量的至少一個邏輯表達式、所述計算機程序的至少一個函數(shù)和參數(shù)的模式。
所述調(diào)整通過不同的反饋信息觸發(fā),從而響應(yīng)于各方面的改變而提供靈活性。遇到新情況可通過調(diào)整動態(tài)地處理。動態(tài)運行時調(diào)整由以下一項或多項觸發(fā):dir表示自身、所述分布式處理系統(tǒng)的架構(gòu)、運行時系統(tǒng)變量、執(zhí)行代碼。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施方式,在所述裝置的第八可能實施形式中,調(diào)整所述ir從包含以下項的組中選擇:動態(tài)調(diào)整表示所述計算機程序的計算流程的運行時圖形、調(diào)整所述計算機程序中的操作、重編譯所述計算機程序的一個或多個部分以在某一平臺上進行優(yōu)化、更新觸發(fā)一個或多個規(guī)則的變量。
不同參數(shù)可以動態(tài)調(diào)整,從而使系統(tǒng)能夠靈活地以不同方式進行響應(yīng)??蛇x擇最佳響應(yīng)。可改變代碼自身,可替換不同代碼,可基于參數(shù)變化編譯新代碼以進行優(yōu)化,并且可觸發(fā)其它規(guī)則。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施形式,在所述裝置的第九可能實施形式中,包含在所述ir中的一個規(guī)則集基于一種基于規(guī)則的語言實施為應(yīng)用編程接口。
所述規(guī)則集獨立于所述ir。所述規(guī)則集例如由不同的程序設(shè)計員從用于生成所述ir的源代碼分別編寫。同一個規(guī)則集可應(yīng)用到不同的計算機程序。同一計算機程序的同一ir可使用例如不同組織處的不同規(guī)則集進行調(diào)整。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施形式,在所述裝置的第十可能實施形式中,所述解釋器還用于向低級編譯器提供所述調(diào)整后ir以編譯和生成低級代碼,以供在所述處理系統(tǒng)中執(zhí)行。
所述計算機程序通過更新所述dir和重編譯所述dir來觸發(fā)其自身的修改,以生成更新后的計算機可執(zhí)行代碼。所述更新后dir的重編譯可更有效地優(yōu)化,從而產(chǎn)生優(yōu)化的更新后可執(zhí)行代碼。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施方式,在所述裝置的第十一可能實施形式中,所述反饋信息包括從包含以下成員的組中選擇的至少一個成員:添加新處理單元、移除現(xiàn)有處理單元、進程失敗、處理單元失敗、處理單元的可用性發(fā)生變化、處理資源的可用性發(fā)生變化、輸入數(shù)據(jù)發(fā)生變化、處理復(fù)雜度發(fā)生變化。
所述可執(zhí)行代碼在運行時期間的調(diào)整由常發(fā)生在分布式處理系統(tǒng)中的一個或多個場景觸發(fā)。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實施方式,在所述裝置的第十二可能實施形式中,所述裝置還包括:數(shù)據(jù)庫,用于存儲從所述調(diào)整后dir編譯而來的計算機可執(zhí)行代碼,以供將來在執(zhí)行類似規(guī)則集的評估時重用。
在運行時期間存儲通過重編譯和可選重優(yōu)化而生成的所述可執(zhí)行代碼的不同版本使得將來遇到類似的系統(tǒng)條件時可使用所述代碼。所述代碼可在不重復(fù)生成所述代碼的處理步驟的情況下重用。
根據(jù)第二方面,提供了一種用于生成在處理系統(tǒng),尤其是分布式處理系統(tǒng)上執(zhí)行的代碼的方法,包括:提供計算機程序的中間表示(intermediaterepresentation,ir);接收反饋信息,所述反饋信息包括關(guān)于所述處理系統(tǒng)的信息;以及基于所述反饋信息來調(diào)整所述ir。
根據(jù)第三方面,提供了一種包括可讀存儲介質(zhì)的計算機程序產(chǎn)品,所述可讀存儲介質(zhì)上存儲有程序代碼,供解釋器來評估計算機程序的中間表示(intermediaterepresentation,ir),所述程序代碼包括:用于接收反饋信息的指令,所述反饋信息包括關(guān)于執(zhí)行所述計算機程序的處理系統(tǒng),尤其是分布式處理系統(tǒng)的信息;以及用于基于所述反饋信息調(diào)整所述ir的指令。
除非另外限定,否則本文所使用的所有技術(shù)術(shù)語和/或科學(xué)術(shù)語均具有本發(fā)明所涉及的本領(lǐng)域的普通技術(shù)人員共同理解的相同意思。雖然類似于或等同于本文所描述的那些方法和材料可以使用在本發(fā)明的實施例的實踐中或測試中,但是以下描述了示例性方法和/或材料。在有沖突的情況下,以包括定義的專利說明書為準。此外,材料、方法和示例僅僅是示例性的并不旨在有必要地進行限制。
附圖說明
此處僅作為示例,結(jié)合附圖描述了本發(fā)明的一些實施例?,F(xiàn)在具體結(jié)合附圖,需要強調(diào)的是所示的項目作為示例,為了說明性地討論本發(fā)明的實施例。這樣,根據(jù)附圖說明,如何實踐本發(fā)明實施例對本領(lǐng)域技術(shù)人員而言是顯而易見的。
在附圖中:
圖1是根據(jù)本發(fā)明一些實施例的在處理系統(tǒng)中執(zhí)行的計算機程序的中間表示的運行時調(diào)整方法的流程圖;
圖2是根據(jù)本發(fā)明一些實施例的包括裝置的系統(tǒng)的方框圖,該裝置執(zhí)行在處理系統(tǒng)中執(zhí)行的計算機程序的中間表示的運行時調(diào)整;
圖3是根據(jù)本發(fā)明一些實施例的本地調(diào)整集中生成的中間表示以供本地執(zhí)行的方法的流程圖;
圖4是根據(jù)本發(fā)明一些實施例的本地調(diào)整集中生成的中間表示以供本地執(zhí)行的系統(tǒng)的方框圖;
圖5是根據(jù)本發(fā)明一些實施例的通過基于圖2的系統(tǒng)的架構(gòu)來實施圖1的方法的示例的示意圖;
圖6是根據(jù)本發(fā)明一些實施例的通過基于圖4的系統(tǒng)的架構(gòu)來實施圖3的方法的示例的示意圖;
圖7是根據(jù)本發(fā)明一些實施例的描繪中間表示的調(diào)整的示意圖。
具體實施方式
本發(fā)明在其一些實施例中涉及用于優(yōu)化程序執(zhí)行的系統(tǒng)和方法,更具體地但非唯一地,涉及用于優(yōu)化分布式和/或異構(gòu)處理系統(tǒng)中的程序執(zhí)行的系統(tǒng)和方法。
本發(fā)明一些實施例的一個方面涉及一種解釋器模塊,其基于反饋信息調(diào)整計算機程序的中間表示(intermediaterepresentation,ir),該反饋信息包括關(guān)于計算機程序在其中執(zhí)行的處理系統(tǒng)的信息。調(diào)整基于反映處理系統(tǒng)的當(dāng)前狀態(tài)的動態(tài)反饋信息實時執(zhí)行。程序執(zhí)行在運行時期間基于調(diào)整后ir動態(tài)變化。該模塊支持設(shè)計用于在處理系統(tǒng)上執(zhí)行的程序,以響應(yīng)于程序執(zhí)行期間的處理系統(tǒng)變化而動態(tài)地對程序自身進行重配置,而不是例如提前靜態(tài)地定義程序的不同版本并選擇要運行的版本,這將程序只限制為預(yù)定義的版本。解釋器支持計算機程序使其自身適應(yīng)分布式處理系統(tǒng)(distributedprocessingsystem,dps)中的意外變化,和/或在遇到先前未知的處理架構(gòu)時對其自身進行配置。解釋器支持同一原始計算機程序通過該模塊自動調(diào)整以在各種各樣的分布式處理平臺上有效運行。解釋器可在系統(tǒng)中實施,作為方法執(zhí)行,和/或存儲為計算機程序產(chǎn)品,如本文所述。
可選地,調(diào)整根據(jù)基于反饋信息定義ir調(diào)整的一個規(guī)則集中的至少一個規(guī)則執(zhí)行。該規(guī)則集可例如由不同的程序設(shè)計員從源代碼分別定義和/或編程。可選地,該規(guī)則集使用一種不同的語言,可選地一種自定義的規(guī)則語言來定義。
在本文中,該規(guī)則集與ir合并稱為動態(tài)中間表示(dynamicintermediaterepresentation,dir)。術(shù)語dir有時可與術(shù)語ir互換使用,例如,在調(diào)整dir的數(shù)據(jù)流圖形時,數(shù)據(jù)流圖形是指dir的ir部分。
可選地,dir以高級抽象進行表示,可選地以依賴數(shù)據(jù)流圖形進行表示,依賴數(shù)據(jù)流圖形可在多個不同目標dps架構(gòu)和/或目標dps編譯器上執(zhí)行。dir可基于目標dps架構(gòu)的局部(或少許)認知來構(gòu)造。使dir適應(yīng)某些目標架構(gòu)由解釋器在運行時期間基于來自某一目標dps的反饋信息來動態(tài)執(zhí)行。
可選地,將解釋器組織為具有中央解釋器模塊的層次結(jié)構(gòu),中央解釋器模塊生成中央dir以分布到多個處理節(jié)。每個處理節(jié)點包括一個本地解釋器模塊,其基于來自本地處理系統(tǒng)的本地反饋信息本地調(diào)整中央dir。可選地,dir的本地調(diào)整根據(jù)基于本地反饋信息定義調(diào)整的一個本地規(guī)則集來執(zhí)行。每個節(jié)點可根據(jù)本地條件(例如,本地架構(gòu))以一種不同的方式來調(diào)整中央dir。
可選地,dps是包括不同架構(gòu)和/或不同低級程序?qū)嵤┓绞降漠悩?gòu)分布式處理系統(tǒng)。異構(gòu)分布式處理系統(tǒng)基于例如編程模型、通信模型、內(nèi)存語義和處理器架構(gòu)的多樣性。
通過詳細說明本發(fā)明的至少一項實施例,將會理解,本發(fā)明的應(yīng)用不一定限于下文描述中陳述的和/或附圖和/或示例中說明的部件和/或方法的構(gòu)造和布置細節(jié)。本發(fā)明能夠用于其它實施例或者能夠以各種方式實踐或執(zhí)行。
本發(fā)明可以是一種系統(tǒng)、一種方法和/或一種計算機程序產(chǎn)品。計算機程序產(chǎn)品可包括一種計算機可讀存儲介質(zhì)(或媒體),其上存儲有計算機可讀程序指令,用于使處理器執(zhí)行本發(fā)明的各方面。
計算機可讀存儲介質(zhì)可以是有形設(shè)備,該有形設(shè)備可保留和存儲指令以供指令執(zhí)行設(shè)備使用。計算機可讀存儲介質(zhì)可以是,例如但不限于電子存儲設(shè)備、磁性存儲設(shè)備、光學(xué)存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或前述存儲設(shè)備的任意合適組合。
本文描述的計算機可讀程序指令可以從計算機可讀存儲介質(zhì)下載到相應(yīng)的計算/處理設(shè)備,或者通過網(wǎng)絡(luò),例如互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)絡(luò)下載到外部計算機或外部存儲設(shè)備。
計算機可讀程序指令可作為獨立軟件包全部在用戶的計算機上執(zhí)行、部分在用戶的計算機上執(zhí)行、部分在用戶的計算機上且部分在遠程計算機上執(zhí)行,或全部在遠程計算機或服務(wù)器上執(zhí)行。在后一場景中,遠程計算機可通過任意類型的網(wǎng)絡(luò)連接到用戶的計算機,這些類型的網(wǎng)絡(luò)包括局域網(wǎng)(localareanetwork,lan)或廣域網(wǎng)(wideareanetwork,wan),或者可以(例如使用互聯(lián)網(wǎng)服務(wù)提供商通過互聯(lián)網(wǎng))連接到外部計算機。在一些實施例中,包括可編程邏輯電路、現(xiàn)場可編程門陣列(field-programmablegatearray,fpga)或可編程邏輯陣列(programmablelogicarray,pla)等的電子電路可使用計算機可讀程序指令的狀態(tài)信息來對電子電路進行個性化,從而執(zhí)行計算機可讀程序指令,以便執(zhí)行本發(fā)明的各部分。
本發(fā)明的各方面在本文中參考根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖圖示和/或方框圖進行描述。將理解,流程圖圖示和/或方框圖中的每個方框以及流程圖圖示和/或方框圖中的方框的組合可以通過計算機可讀程序指令實現(xiàn)。
圖中的流程圖和方框圖圖示了根據(jù)本發(fā)明各實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實施方式的架構(gòu)、功能和操作。在這一方面,流程圖或方框圖中的每個方框可表示一個模塊、片段或一部分指令,指令包括用于實現(xiàn)指定邏輯功能的一個或多個可執(zhí)行指令。在一些替代性實施方式中,方框中提到的功能可不按照圖中提到的順序發(fā)生。例如,相繼示出的兩個方框,事實上可以基本上同時執(zhí)行,或者這些方框有時可以按相反的順序執(zhí)行,取決于所涉及的功能。還應(yīng)注意的是,方框圖和/或流程圖圖示的每個方框以及方框圖和/或流程圖圖示中的方框的組合可通過執(zhí)行指定功能或動作或執(zhí)行專用硬件和計算機指令組合的基于硬件的專用系統(tǒng)來實現(xiàn)。
現(xiàn)參考圖1,圖1是根據(jù)本發(fā)明一些實施例的用于在處理系統(tǒng)中執(zhí)行的計算機程序的中間表示的運行時調(diào)整方法的流程圖。還參考圖2,圖2是包括解釋器模塊的系統(tǒng)的部件的圖,解釋器模塊支持計算機程序的ir在運行時期間響應(yīng)于目標處理系統(tǒng)的反饋信息而動態(tài)適應(yīng)目標處理系統(tǒng)。解釋器模塊使ir適應(yīng)當(dāng)前系統(tǒng)狀態(tài)和/或發(fā)生于dps執(zhí)行計算機程序期間的動態(tài)變化,例如,一個或多個硬件部件發(fā)生故障、一個或多個部件的熱插拔、動態(tài)優(yōu)化和/或多個應(yīng)用之間的硬件資源的動態(tài)劃分。圖1的方法可由圖2的裝置和/或系統(tǒng)執(zhí)行。
本文描述的系統(tǒng)和/或方法無需知道ir編譯時的目標系統(tǒng)架構(gòu)。該方法執(zhí)行計算機程序的運行時調(diào)整以基于處理系統(tǒng)的狀態(tài)和/或動態(tài)變化來改變計算機程序的行為。系統(tǒng)對其自身進行重配置,以適應(yīng)dps架構(gòu)變化。在遇到先前未知的處理架構(gòu)時,執(zhí)行程序可對其自身進行重配置。執(zhí)行程序可對其自身進行重配置以在由不同子架構(gòu)(例如,不同的節(jié)點處理器架構(gòu))組成的目標異構(gòu)系統(tǒng)上執(zhí)行。
可選地,在102處,解釋器模塊202接收計算機程序的中間表示(intermediaterepresentation,ir)?;蛘?,解釋器模塊202接收計算機程序的源代碼。源代碼和/或ir可存儲在與解釋器模塊202通信的204存儲器上。該存儲器可存儲調(diào)整后ir的迭代。
計算機程序可以是一個完整的計算機程序、一個計算機程序的一部分,和/或單個算法。計算機程序可使用高級源代碼格式、適合執(zhí)行的低級代碼格式,或可為預(yù)編譯代碼。
計算機程序旨在由處理系統(tǒng)執(zhí)行,可選地由分布式處理系統(tǒng)208執(zhí)行,可選地由異構(gòu)分布式處理系統(tǒng)執(zhí)行。例如,程序可解決由于以下原因而無法在單個計算節(jié)點上解決的計算問題:為解決該計算問題而需要處理大量信息。單個計算節(jié)點可能沒有足夠的內(nèi)存和處理能力來在合理的時間量內(nèi)解決該計算問題,或者可能根本無法處理該信息量(例如,本地內(nèi)存不足)。
注意到,計算機程序的源代碼可由(位于裝置200中或裝置200外部的)高級編譯器處理以通過解析和/或編譯源代碼等方式來生成ir?;蛘?,可通過現(xiàn)有計算機程序的反編譯來生成ir?;蛘?,從外部源獲得ir。
用于生成ir的源代碼可使用高級編程語言的應(yīng)用編程接口來編寫。該高級編程語言可以是領(lǐng)域?qū)S谜Z言(domainspecificlanguage,dsl)。dsl提供不直接與任何特定低級實施方式關(guān)聯(lián)的高級抽象,從而支持多種可能的低級實施方式。dsl的示例包括旨在對機器學(xué)習(xí)、數(shù)據(jù)查詢和圖形算法領(lǐng)域中的應(yīng)用進行編程的語言。
ir可包括表示計算機程序的計算流程的依賴數(shù)據(jù)流圖形。該圖形可包括以下元素:表示數(shù)據(jù)操作的節(jié)點、表示數(shù)據(jù)操作參數(shù)的入邊緣、表示數(shù)據(jù)操作結(jié)果的出邊緣。ir是機器無關(guān)的,有能力被編譯以在不同的目標系統(tǒng)上執(zhí)行。
在104處,解釋器202接收一個規(guī)則集。該規(guī)則集對如何評估ir,尤其是數(shù)據(jù)流圖形的元素,進行編碼。該規(guī)則集根據(jù)反饋信息定義在計算機程序執(zhí)行時的動態(tài)變化,以優(yōu)化dps208中的計算機程序的性能。
該規(guī)則集可基于反饋信息定義ir的自適應(yīng)優(yōu)化和/或ir的編譯規(guī)則。該規(guī)則集變換計算機程序的算法(表示為ir)以實現(xiàn)不同處理環(huán)境中的最佳執(zhí)行。
可選地,該規(guī)則集基于一種基于規(guī)則的語言實施為應(yīng)用編程接口(applicationprogramminginterface,api)。該基于規(guī)則的語言旨在表達調(diào)整邏輯。該基于規(guī)則的語言可與用于編寫源代碼的語言不同。
該規(guī)則集獨立于ir。該規(guī)則集例如由不同的程序設(shè)計員從用于生成ir的源代碼分別編寫。同一規(guī)則集可應(yīng)用到不同的計算機程序。同一計算機程序的同一ir可使用例如不同組織處的不同規(guī)則集進行調(diào)整。
該規(guī)則集可存儲在與解釋器模塊202通信的存儲器204上。
可選地,每個規(guī)則被劃分為一個謂詞(其可通過規(guī)則語言表示為左手邊(lefthandside,lhs))和一個關(guān)聯(lián)動作(其可通過規(guī)則語言表示為右手邊(righthandside,rhs))。
謂詞的示例包括:處理系統(tǒng)的圖形拓撲表示的模式匹配、處理系統(tǒng)的處理系統(tǒng)拓撲的模式匹配、基于處理系統(tǒng)運行時變量的邏輯表達式、處理系統(tǒng)性能指標(例如,可用內(nèi)存和處理器使用率)、處理系統(tǒng)的函數(shù)和參數(shù)的模式匹配。
用于調(diào)整ir(例如,圖形表示)的動作的示例包括:圖形變換、圖形劃分、操作替代、操作融合和分離、調(diào)用第三方編譯器來編譯或重編譯特定平臺上的內(nèi)核或優(yōu)化、更新與其它謂詞(它們可迭代觸發(fā)其它規(guī)則)關(guān)聯(lián)的變量。
可選地,在106處,通過將該規(guī)則集與ir合并來生成dir。這些規(guī)則可與ir關(guān)聯(lián)和/或映射到ir。可選地,dir是包括ir和該規(guī)則集這兩者的合并數(shù)據(jù)結(jié)構(gòu),例如,規(guī)則存儲在ir的各個節(jié)點中?;蛘撸琩ir分別包括擁有ir和該規(guī)則集的數(shù)據(jù)結(jié)構(gòu)。這些規(guī)則獨立評估,所評估的規(guī)則的動作應(yīng)用到ir。
dir可在多個不同的目標dps架構(gòu)和目標dps特定編譯器上執(zhí)行(或者可編譯以供執(zhí)行)。dir在目標dps的每個不同節(jié)點處可以有差異地執(zhí)行。
一個或多個規(guī)則與圖形節(jié)點關(guān)聯(lián),支持程序執(zhí)行基于受影響圖形節(jié)點進行有效的運行時調(diào)整。基于dir的圖形可有效地重優(yōu)化和/或重編譯。
在108處,解釋器模塊202接收反饋信息,反饋信息包括關(guān)于dps208的信息。反饋信息可由監(jiān)控dps208的監(jiān)控模塊216獲取,從而連續(xù)地、周期性地、基于事件和/或?qū)崟r進行監(jiān)控。監(jiān)控模塊216將反饋信息傳輸給解釋器模塊202以評估規(guī)則,如本文所述。
反饋信息可表示處理環(huán)境的當(dāng)前狀態(tài)和/或變化、算法自身的狀態(tài)和/或變化,和/或執(zhí)行程序在處理的輸入數(shù)據(jù)的狀態(tài)和/或變化,等等。
反饋信息的示例包括:添加新處理單元(例如,熱插拔)、移除現(xiàn)有處理單元(例如,熱插拔)、進程失敗、處理單元失敗、處理單元和/或其它資源的可用性發(fā)生變化(例如,由于多個用戶和/或數(shù)據(jù)集變化)、可變輸入數(shù)據(jù)類型和/或大小發(fā)生統(tǒng)計變化、處理資源的可用性發(fā)生變化、處理復(fù)雜度發(fā)生變化(例如,與輸入相關(guān)的變化)。
可選地,反饋信息與一個或多個規(guī)則有關(guān),例如,與一個或多個謂詞關(guān)聯(lián),謂詞包括如ir的圖形拓撲表示的模式、dps的處理系統(tǒng)拓撲的模式、基于一個或多個系統(tǒng)運行時變量的邏輯表達式、執(zhí)行的計算機程序的函數(shù)和/或參數(shù)的模式。
在110處,響應(yīng)于反饋信息而調(diào)整dir。當(dāng)基于反饋信息評估dir的一個或多個規(guī)則時,觸發(fā)調(diào)整。所評估的規(guī)則觸發(fā)有關(guān)調(diào)整動作。
調(diào)整通過不同的參數(shù)觸發(fā),從而靈活地響應(yīng)各方面的改變。遇到新情況可通過調(diào)整動態(tài)地處理。動態(tài)運行時調(diào)整由以下一項或多項觸發(fā):dir表示自身、dps架構(gòu)、運行時系統(tǒng)變量、執(zhí)行代碼。
可執(zhí)行代碼在運行時期間的調(diào)整由常發(fā)生于dps中的一個或多個場景觸發(fā)。
dir的規(guī)則和圖像部件可一起、分別或獨立調(diào)整。可選地,當(dāng)規(guī)則被評估為真(true)(或者滿足另一條件)時,例如規(guī)則的謂詞,觸發(fā)關(guān)聯(lián)的調(diào)整動作。前一dir版本的調(diào)整后版本在本文中稱為調(diào)整后dir。調(diào)整后dir可以是前一dir的(即,規(guī)則和/或圖形的)子圖形、前一dir的分區(qū)、前一dir的更新版本、前一dir的部分刪除版本,和/或前一dir的修改版本。
可選地,在系統(tǒng)運行時評估和調(diào)用規(guī)則以調(diào)整dir。
可選地,基于反饋信息評估規(guī)則以觸發(fā)dir中的相同規(guī)則或其它規(guī)則的調(diào)整,例如,將一個或多個新規(guī)則添加到dir、撤銷dir中的一個或多個預(yù)先存在的規(guī)則和/或改變dir的一個或多個預(yù)先存在的規(guī)則。所評估的規(guī)則可觸發(fā)先前存在的規(guī)則的調(diào)整,從而支持基于遞歸等進行復(fù)雜運行時調(diào)整。
在dir上執(zhí)行的調(diào)整動作基于關(guān)聯(lián)的觸發(fā)規(guī)則,由規(guī)則的rhs動作定義。例如,動態(tài)調(diào)整表示計算機程序的計算流程的運行時圖形、調(diào)整計算機程序中的操作、編譯或重編譯計算機程序的一個或多個部分以在某一目標平臺進行優(yōu)化、更新觸發(fā)一個或多個其它規(guī)則的變量。
在112處,將調(diào)整后dir傳輸給中央調(diào)度器210,中央調(diào)度器調(diào)度目標dps208中的計算機程序執(zhí)行。中央調(diào)度器210集中調(diào)度調(diào)整后dir以供在dps208的每個單獨處理節(jié)點處進行本地執(zhí)行。當(dāng)dps208是異構(gòu)系統(tǒng)時,每個處理節(jié)點可包括不同的目標架構(gòu)。中央調(diào)度器能夠在不知道目標節(jié)點處的架構(gòu)和處理條件的情況下調(diào)度調(diào)整后dir在目標節(jié)點上的處理。
不同參數(shù)可以動態(tài)調(diào)整,從而使系統(tǒng)能夠靈活地以不同方式進行響應(yīng)??蛇x擇最佳響應(yīng)??筛淖兇a自身,可替換不同代碼,可基于參數(shù)變化編譯新代碼以進行優(yōu)化,并且可觸發(fā)其它規(guī)則。
可選地,為低級編譯器212提供調(diào)整后dir以編譯和生成低級代碼,以便在目標dps208中執(zhí)行。或者,或另外,低級編譯器212從調(diào)整后dir生成靜態(tài)運行時數(shù)據(jù)流圖形。低級代碼和/或運行時圖形被提供給中央調(diào)度器210以供調(diào)度。這樣,dir可基于dps208的當(dāng)前狀態(tài)觸發(fā)其自己的部分或完全重編譯。
低級編譯器212可將調(diào)整后dir編譯為適合在目標dps上執(zhí)行的格式,例如,編譯為目標二進制格式、便攜型代碼格式或具有節(jié)點的運行時數(shù)據(jù)流圖形,其中這些節(jié)點表示由二進制或字節(jié)代碼組成的操作。低級編譯器212可以是基于高級編程語言的目前現(xiàn)成的編譯器,例如,編譯調(diào)整后dir(當(dāng)其在沒有規(guī)則集的情況下提供時,對使用可識別ir格式的低級編譯器顯示)的dsl后端編譯器。
計算機程序可通過更新dir和重編譯dir來觸發(fā)其自身的修改,以生成程序的更新后計算機可執(zhí)行代碼。更新后dir的重編譯可更有效地優(yōu)化,從而產(chǎn)生優(yōu)化的更新后可執(zhí)行代碼。
可選地,編譯代碼存儲在代碼存儲庫(例如,數(shù)據(jù)庫)214中。將來在執(zhí)行類似規(guī)則集的評估時可重用所存儲的代碼。在運行時期間存儲通過重編譯和可選重優(yōu)化而生成的可執(zhí)行代碼的不同版本使得將來遇到類似的系統(tǒng)條件時可使用該代碼。該代碼可在不重復(fù)生成和/或編譯代碼的處理步驟的情況下重用,提高了系統(tǒng)性能。
可選地,解釋器模塊202集中生成部分物化的dir,部分物化的dir可通過多個目標dps架構(gòu)執(zhí)行。部分物化的dir被提供給目標dps的每個處理節(jié)點,作為全物化本地dir的本地調(diào)整和本地生成的基礎(chǔ),用于在本地處理節(jié)點處進行本地執(zhí)行。集中ir基于可用全局信息進行部分編譯,無需生成全局完整程序。部分編譯的代碼被發(fā)送到每個節(jié)點,以基于本地節(jié)點條件進行本地編譯和調(diào)整。
部分、完整或劃分的dir被發(fā)送到中央調(diào)度器210以供執(zhí)行調(diào)度。
現(xiàn)參考圖3,圖3是根據(jù)本發(fā)明一些實施例的本地調(diào)整集中生成的ir以供本地執(zhí)行的方法的流程圖。還參考圖4,圖4是系統(tǒng)部件的方框圖,該系統(tǒng)包括:目標處理系統(tǒng)(例如,圖2的dps208)的本地節(jié)點400,以及本地解釋器模塊402,該本地解釋器模塊支持計算機程序在運行時期間響應(yīng)于本地環(huán)境的反饋信息而動態(tài)適應(yīng)本地處理系統(tǒng)404。本地解釋器模塊402根據(jù)本地反饋信息評估計算機程序的集中生成的調(diào)整后ir。本地解釋器模塊402使中央dir適應(yīng)在處理節(jié)點對程序進行本地執(zhí)行期間發(fā)生的本地動態(tài)變化,和/或適應(yīng)本地系統(tǒng)狀態(tài)。圖3的方法可由圖4的裝置和/或系統(tǒng)執(zhí)行。
集中調(diào)整后ir在各個節(jié)點處本地調(diào)整以創(chuàng)建不同的版本,對每個版本進行優(yōu)化以在本地節(jié)點處執(zhí)行。每個節(jié)點處的調(diào)整可以不同,取決于本地節(jié)點架構(gòu)和其它本地條件。
在302處,在每個本地節(jié)點處接收至少一部分集中生成的dir(其可能已經(jīng)集中調(diào)整)。圖2的調(diào)度器210可將dir分發(fā)至本地節(jié)點。同一個集中生成的dir可在每個本地節(jié)點處接收,以進行本地調(diào)整。或者,可將dir的不同部分傳輸?shù)矫總€單獨節(jié)點,與被調(diào)度以供該單獨節(jié)點執(zhí)行的任務(wù)關(guān)聯(lián)。或者,首先將中央dir轉(zhuǎn)換為運行時圖形,運行時圖形被傳輸?shù)矫總€處理節(jié)點?;蛘?,將中央dir的ir部件傳輸?shù)矫總€處理節(jié)點,無需中央規(guī)則集部件。
在304處,接收一個本地規(guī)則集。該本地規(guī)則集對如何評估本地調(diào)整后ir,尤其是本地調(diào)整后ir的本地數(shù)據(jù)流圖形的元素,進行編碼。每個規(guī)則與一個單獨節(jié)點關(guān)聯(lián)(例如,存儲在與該節(jié)點通信的存儲器中)。
該本地規(guī)則集用于,例如基于本地架構(gòu)和/或本地條件,使計算機程序適應(yīng)(例如,本地節(jié)點處的)本地環(huán)境。不同的本地處理環(huán)境可以具有不同的本地規(guī)則集,從而以自定義的靈活性使同一計算機程序以不同的方式適應(yīng)各個本地環(huán)境。
該本地規(guī)則集可以具體相同的格式,和/或使用參考中央規(guī)則集描述的同一種(或相似的)基于規(guī)則的語言進行編寫。
在306處,將該本地規(guī)則集與中央dir合并以生成本地dir。該本地規(guī)則集可映射到中央dir的ir部件,可與中央dir的中央規(guī)則集合并,和/或替代中央dir的中央規(guī)則集。
在308處,從本地處理系統(tǒng)(localprocessingsystem,lps)404接收本地反饋信息。本地反饋信息包括關(guān)于lps404的本地信息。
可選地,本地監(jiān)控模塊408執(zhí)行l(wèi)ps404的監(jiān)控,并將本地反饋信息傳輸給本地解釋器模塊402。
在310處,基于本地反饋信息調(diào)整中央dir以生成本地dir?;蛘撸谝焉闪吮镜豥ir時,基于本地反饋信息調(diào)整本地dir以生成調(diào)整后本地dir。
在312處,將本地dir或調(diào)整后本地dir傳輸給本地調(diào)度器406以調(diào)度lps404中的執(zhí)行。
在314處,重復(fù)方框308至312。當(dāng)收到新的本地反饋信息時和/或當(dāng)從觸發(fā)本地規(guī)則評估的先前本地反饋信息中檢測到變化時,可進行該重復(fù)以生成新的本地調(diào)整后dir。
注意的是,方框302至314可在額外的多個層次等級中重復(fù),例如,本地處理節(jié)點自身可以是包括多個子節(jié)點的本地分布式系統(tǒng)。
返回參考圖1,在114處,重復(fù)方框108至112。當(dāng)收到新的反饋信息時和/或當(dāng)從觸發(fā)規(guī)則評估的先前反饋信息中檢測到變化時,可進行該重復(fù)以生成新的調(diào)整后dir。
現(xiàn)參考圖5,圖5是根據(jù)本發(fā)明一些實施例的通過基于圖2的系統(tǒng)的架構(gòu)502來實施圖1的方法的示例的示意圖。
算法504例如由程序設(shè)計員以高級語言(例如,dsl)506編寫為源代碼??蛇x地,前端編譯器508將源代碼編譯為ir。ir與算法特定優(yōu)化規(guī)則512(例如,由程序設(shè)計員編寫以優(yōu)化程序的規(guī)則)合并以生成dir?;蛘撸岸司幾g器508接收規(guī)則510和源代碼作為輸入,并生成dir(即,不輸出不包含這些規(guī)則的ir)。
dir解釋器模塊514從監(jiān)控目標dps的系統(tǒng)監(jiān)控器516接收實時反饋信息。dir解釋器514基于收到的反饋信息評估規(guī)則,以執(zhí)行以下動作:
*重寫dir512,
*生成運行時圖形518,其被傳輸?shù)疆悩?gòu)調(diào)度器526以在目標dps處執(zhí)行。
*通過優(yōu)化器模塊520優(yōu)化dir,通過后端編譯器522(即,低級編譯器)編譯dir。編譯代碼存儲在操作存儲器524中以供將來使用。將編譯代碼傳輸給異構(gòu)調(diào)度器526以在dps中執(zhí)行。例如,當(dāng)操作代碼(例如,使用二進制格式和/或字節(jié)代碼格式)對于系統(tǒng)平臺丟失時或者需要更新時,觸發(fā)重優(yōu)化和重調(diào)度。
現(xiàn)參考圖6,圖6是根據(jù)本發(fā)明一些實施例的通過基于圖4的系統(tǒng)的架構(gòu)來實施圖3的方法的示例的示意圖。
集中生成dir602,如本文所述。dir解釋器604從目標dps接收實時系統(tǒng)信息606作為反饋信息?;诜答佇畔⒃u估dir602的規(guī)則,以生成部分物化圖形608。反饋信息可包括系統(tǒng)級詳細內(nèi)容,例如,可用節(jié)點的數(shù)量。將部分物化圖形608傳輸?shù)街髡{(diào)度器610以在本地節(jié)點612a和612b處進行調(diào)度。
現(xiàn)描述本地節(jié)點612a。為了清晰明了,由于相似,所以省略本地節(jié)點612b的描述。描述節(jié)點之間的元素差異。本地dir解釋器614a接收部分物化圖形608?;趤碜员镜靥幚硐到y(tǒng)的本地反饋信息,本地dir解釋器614a可將部分物化圖形608轉(zhuǎn)換為本地全物化圖形616a。注意的是,全物化圖形616a和616b可以不同,基于本地反饋信息適應(yīng)本地條件?;蛘?,本地dir解釋器614a將部分物化圖形608傳輸給本地編譯器620a以生成低級代碼。注意的是,本地編譯器620a和620b可以不同,從而將同一個部分物化圖形編譯為適合在本地架構(gòu)中執(zhí)行的不同低級語言。生成的代碼可保存在本地操作存儲器622a中。本地調(diào)度器618a調(diào)度設(shè)備624a中的全物化圖形616a和/或低級代碼的執(zhí)行。注意的是,設(shè)備624a和624b可以不同(即,架構(gòu)不同)。
現(xiàn)參考圖7,圖7是根據(jù)本發(fā)明一些實施例的描繪中間表示的調(diào)整的示意圖。注意的是,調(diào)整可集中執(zhí)行,和/或在每個處理節(jié)點處本地執(zhí)行。
dir解釋器模塊704處理dir702。dir702包括ir部件,例如圖形706,以及關(guān)聯(lián)的規(guī)則708集部件。規(guī)則708包括一個或多個謂詞,每個謂詞與一個動作關(guān)聯(lián)。這些謂詞基于從目標dps收到的實時系統(tǒng)信息710(即,反饋信息)進行評估,以觸發(fā)有關(guān)動作???同時,或在不同迭代期間)生成不同的調(diào)整后dir712a和dir712b,它們可以是dir702的部分或完全重寫版本。
現(xiàn)描述將本文描述的系統(tǒng)和/或方法應(yīng)用到常見場景的示例。
在第一示例中,代碼自動適應(yīng)變化的處理環(huán)境。參考圖1(假設(shè)現(xiàn)有ir),在108處,解釋器模塊接收關(guān)于在dps中添加新處理節(jié)點的反饋信息。在110處,觸發(fā)相應(yīng)規(guī)則以通過根據(jù)新的處理節(jié)點數(shù)量重新劃分ir來調(diào)整ir,將新節(jié)點納入考慮。(為清晰起見,省略方框112至114)。在另一有關(guān)示例中,在108處,解釋器模塊接收反饋信息,反饋信息是關(guān)于輸入負載閾值的基于從dps收集到的統(tǒng)計的變化。在110處,觸發(fā)相應(yīng)規(guī)則以通過重構(gòu)本地圖形來調(diào)整ir,從而實現(xiàn)新分區(qū)平衡。
在第二示例中,將集中生成的dir轉(zhuǎn)發(fā)給本地節(jié)點以供本地優(yōu)化和執(zhí)行。參考圖3,在302處,節(jié)點中的一個接收dir,其中已為該dir集中劃分一個圖形以在多個節(jié)點上運行。劃分的圖形包含運算x。在304和306處,將一個本地規(guī)則集映射到運算x。在308處,節(jié)點無法確定運算x在本地操作存儲器中的實例,并向本地解釋器提供有關(guān)反饋信息。在310處,評估與運算x有關(guān)的規(guī)則以確定在運算x丟失時執(zhí)行什么操作。該規(guī)則觸發(fā)對運算x的實例的搜索,這適用于節(jié)點的硬件。發(fā)現(xiàn)運算x的實例以高級dsl語言編寫。該規(guī)則觸發(fā)運算x的源代碼重編譯,產(chǎn)生的低級代碼存儲在操作存儲器中以供將來使用。在312處,調(diào)度生成的低級代碼。
在第三示例中,本地解釋器修改現(xiàn)有規(guī)則以實施本地優(yōu)化。參考圖3,在302處,本地節(jié)點接收針對n個gpu劃分的ir。在308處,本地節(jié)點接收關(guān)于本地gpu有時被另一進程使用的反饋信息。在310處,本地節(jié)點將一個規(guī)則添加到本地dir,以檢查當(dāng)前gpu使用率以及當(dāng)部分gpu已經(jīng)在使用時重劃分本地dir。
在第四示例中,在集群中的不同處理器上逐步物化dir。參考圖1,主節(jié)點在不知道各個從節(jié)點處的哪些處理器可用的情況下將ir劃分到從節(jié)點。參考圖3,各個從節(jié)點重評估并重劃分中央ir以生成適用于各個從節(jié)點的處理器的本地dir。
在第五示例中,調(diào)整dir以添加一種先前未知類型的處理器。參考圖3,在302處,節(jié)點從主調(diào)度器接收集中劃分的ir。在308處,向本地解釋器提供反饋信息,反饋信息指示檢測到系統(tǒng)先前已知的一種新類型的片上系統(tǒng)(systemonachip,soc)。在310處,本地解釋器將soc轉(zhuǎn)換邏輯添加到本地dir,并重新解釋本地dir。針對新架構(gòu)生成并優(yōu)化正確的低級代碼。生成的代碼存儲在本地存儲庫(例如,操作存儲器)中以供將來使用。在312處,在新架構(gòu)上執(zhí)行新的低級代碼。
第六示例涉及算法特定優(yōu)化規(guī)則。參考圖1,在102和104處,創(chuàng)建具有唯一優(yōu)化集的算法,設(shè)計一個關(guān)聯(lián)的優(yōu)化規(guī)則集與該算法一起工作。在106處,解釋器模塊將唯一算法規(guī)則添加到現(xiàn)有規(guī)則,以生成dir。在110處,基于反饋信息將這些唯一規(guī)則與缺省規(guī)則一起進行評估。當(dāng)任一規(guī)則被觸發(fā)時,解釋器模塊觸發(fā)優(yōu)化算法所需要的合適動作。生成的優(yōu)化指令可存儲在存儲庫(例如,操作存儲器)中以供將來使用。在另一有關(guān)示例中,參考圖1,在108處,向解釋器模塊提供反饋信息,指示節(jié)點a、b和c被確定為連續(xù)的并且各自包含gpu硬件。在110處,觸發(fā)算法特定優(yōu)化規(guī)則,從而調(diào)用將節(jié)點a、b和c融合為更有效的節(jié)點d的動作。節(jié)點a、b和c在dir的圖形中替換為節(jié)點d。
本發(fā)明各實施例的描述已出于說明目的提出,但并非旨在詳盡無遺或限制所公開的實施例。對于本領(lǐng)域普通技術(shù)人員來說,許多修改和變體將是顯而易見的,不脫離所描述的實施例的范圍和精神。選擇本文使用的術(shù)語是為了最好地說明實施例的原則、實際應(yīng)用或相對于在市場中發(fā)現(xiàn)的技術(shù)的技術(shù)改進,或者是為了使具有本領(lǐng)域普通技術(shù)的其他人員能夠理解本文公開的實施例。
預(yù)期在從本申請開始走向成熟的專利的生命周期中,將會開發(fā)出許多相關(guān)系統(tǒng)和方法,術(shù)語中間表示、反饋信息和解釋器的范圍旨在包括所有這類先驗新技術(shù)。
本文使用的術(shù)語“約”是指±10%。
術(shù)語“包括”和“有”表示“包括但不限于”。這個術(shù)語包括了術(shù)語“由…組成”以及“本質(zhì)上由…組成”。
短語“本質(zhì)上由…組成”是指構(gòu)造或方法可包括額外的材料和/或步驟,但前提是額外的材料和/或步驟不會實質(zhì)上改變所要求保護的構(gòu)造或方法的基本和新穎特性。
本文使用的單數(shù)形式“一個”和“所述”包括復(fù)數(shù)含義,除非上下文中另有明確說明。例如,術(shù)語“一個化合物”或“至少一個化合物”可包括多個化合物,包含其混合物。
此處使用的詞“示例性的”表示“作為一個示例、實例或說明”。任何“示例性的”實施例并不一定理解為優(yōu)先于或優(yōu)越于其它實施例和/或并不一定排除其它實施例的特征的并入。
此處使用的詞語“可選地”表示“在一些實施例中提供且在其它實施例中沒有提供”。本發(fā)明的任意特定的實施例可以包括多個“可選的”特征,除非這些特征相互矛盾。
在本申請中,本發(fā)明各實施例可通過范圍格式提出。應(yīng)理解,以范圍格式進行的描述僅僅是為了方便和簡潔,不應(yīng)理解為對本發(fā)明的范圍的僵化限制。相應(yīng)地,范圍的描述應(yīng)視為具體公開了所有可能的子范圍以及該范圍內(nèi)的單獨的數(shù)值。例如,范圍的描述,例如從1至6,應(yīng)視為已具體公開了子范圍,例如從1至3,從1至4,從1至5,從2至4,從2至6,從3至6等等,以及該范圍內(nèi)所有單獨的數(shù)字,例如1、2、3、4、5和6。無論范圍多寬,這都適用。
當(dāng)此處指出一個數(shù)字范圍時,表示包括了在指出的這個范圍內(nèi)的任意所列舉的數(shù)字(分數(shù)或整數(shù))。短語“在第一個所指示的數(shù)和第二個所指示的數(shù)范圍內(nèi)”以及“從第一個所指示的數(shù)到第二個所指示的數(shù)范圍內(nèi)”和在這里互換使用,表示包括第一個和第二個所指示的數(shù)以及二者之間所有的分數(shù)和整數(shù)。
單個實施例也可以提供某些特征的組合,這些特征在各個實施例正文中有簡短的描述。相反地,本發(fā)明的各個特征在單個實施例的正文中有簡短的描述,也可以分別提供這些特征或任何適合的子組合或者作為本發(fā)明所述的任何合適的其它實施例。不可認為各個實施例的正文中描述的某些特征是這些實施例的必要特征,除非沒有這些元素,該實施例無效。
此處,本說明書中提及的所有出版物、專利和專利說明書都通過引用本說明書結(jié)合在本說明書中,同樣,每個單獨的出版物、專利或?qū)@f明書也具體且單獨地結(jié)合在此。此外,對本申請的任何參考的引用或識別不可當(dāng)做是允許這樣的參考在現(xiàn)有技術(shù)中優(yōu)先于本發(fā)明。就使用節(jié)標題而言,不應(yīng)該將節(jié)標題理解成必要的限定。