專利名稱:通過利用虛擬OpenCL設(shè)備作為與計算云的接口來加速OpenCL應用的制作方法
通過利用虛擬OpenCL設(shè)備作為與計算云的接口來加速
OpenCL應用領(lǐng)域本發(fā)明一般涉及計算領(lǐng)域。更具體地,本發(fā)明的實施例一般涉及用于通過利用虛 擬OpenCL設(shè)備作為與計算云的接口來加速OpenCL應用的技術(shù)。背景OpenCL(開放計算語言)是用于異構(gòu)系統(tǒng)的通用并行編程的首個開放、免版稅標 準。OpenCL為軟件開發(fā)者提供了統(tǒng)一編程環(huán)境,以便為使用多核CPU(中央處理單元)、 GPU (圖形處理單元)、蜂窩類型架構(gòu)和諸如DSP (數(shù)字信號處理器)等其他并行處理器的各 種混合的高性能計算服務器、臺式計算機系統(tǒng)和手持設(shè)備編寫高效的便攜式代碼。該標準 是由Khronos集團開發(fā)的。附圖簡述參照附圖提供詳細描述。在附圖中,附圖標記最左邊的數(shù)字標識該附圖標記首次 出現(xiàn)的附圖。在不同附圖中使用相同附圖標記來指示相似或相同的項目。
圖1和3-4示出可用來實現(xiàn)本文討論的一些實施例的計算系統(tǒng)的實施例的框圖。圖2示出根據(jù)本發(fā)明一實施例的流程圖。詳細描述在以下描述中,闡述眾多具體細節(jié)以提供對各實施例的透徹理解。然而,本發(fā)明的 各個實施例在沒有這些具體細節(jié)的情況下也可實踐。在其他情形中,眾所周知的方法、過 程、組件和電路并未進行詳細描述以免混淆本發(fā)明的特定實施例。此外,本發(fā)明實施例的各 方面可使用各種手段來執(zhí)行,諸如集成半導體電路(“硬件”也稱為“冊”)、組織成一個或 多個程序的計算機可讀指令(“軟件”也稱為“SW”)或硬件與軟件的某種組合。出于本公 開的目的,對“邏輯”的引述應表示硬件、軟件(包括例如控制處理器的操作的微代碼)或 其某種組合。說明書中對“一個實施例”或“實施例”的引述意味著結(jié)合該實施例描述的具體特 征、結(jié)構(gòu)或特性可被包含于至少一種實現(xiàn)中。本說明書中各處出現(xiàn)的短語“在一個實施例 中”可以或可以并非全部指代同一實施例。另外,在本描述和權(quán)利要求中,可使用術(shù)語“耦合”和“連接”連同其派生詞。在本 發(fā)明的一些實施例中,可使用術(shù)語“連接”來指示兩個或多個元件彼此直接物理或電氣接 觸?!榜詈稀笨梢馕吨鴥蓚€或多個元件直接物理或電氣接觸。然而,“耦合”也可意味著兩個 或多個元件可能彼此并未直接接觸,但是仍然彼此協(xié)作或交互。在OpenCL中,并行計算機內(nèi)核可從主機(通常是CPU)卸載到同一系統(tǒng)中的加速 器設(shè)備(例如,GPU、CPU或FPGA(現(xiàn)場可編程門陣列))。此外,OpenCL明確覆蓋移動和嵌 入式設(shè)備以便于開發(fā)便攜式計算密集應用。然而,在可預見的將來,移動設(shè)備的并行計算能 力可能相當有限。雖然這對于小的低等待時間圖形工作量可能是夠用的,但嘗試運行計算 密集OpenCL應用(比如科學、工程和商業(yè)計算中的模擬、復雜數(shù)據(jù)分析等)將導致令人失 望的用戶體驗。另外,很可能將存在完全不包含有OpenCL能力的設(shè)備且具有性能非常有限的CPU的超輕重量或嵌入式平臺。復雜OpenCL應用將完全不能在這些系統(tǒng)上運行。甚至在標準臺式機和工作站上,計算密集OpenCL應用可通過將OpenCL工作量卸 載到計算云中的服務器場來加速。然而,使得在云中運行工作量的現(xiàn)有接口可能需要對應 用本身的顯著修改。這些修改有可能限于特定云計算系統(tǒng),這甚至進一步阻礙了在工業(yè)中 采用云計算。為此,本文談論的一些實施例提供了用于通過利用虛擬OpenCL設(shè)備作為與計算 云的接口來加速OpenCL應用的技術(shù)。在一實施例中,計算密集OpenCL應用通過將應用的 一個或多個計算內(nèi)核卸載到本地網(wǎng)絡(諸如因特網(wǎng)或內(nèi)聯(lián)網(wǎng))上的計算云來加速。在一 個實施例中,可執(zhí)行卸載以使得其對于應用是透明的;因此,將無需修改應用代碼。這允許 OpenCL應用在輕重量系統(tǒng)上運行并接進后端云中的大型服務器的性能潛能。圖1示出了根據(jù)一實施例的包括虛擬OpenCL設(shè)備的計算系統(tǒng)100。如圖所示,一個 或多個客戶端102可包括OpenCL客戶端應用104(其可以是與OpenCL兼容的應用程序)、 OpenCL API (應用編程接口 ) 106、OpenCL驅(qū)動程序108、虛擬OpenCL設(shè)備110和客戶端網(wǎng) 絡服務112。網(wǎng)絡服務112經(jīng)由(例如,根據(jù)SOAP(簡單對象訪問協(xié)議)操作的)鏈路耦合到 網(wǎng)絡120。在一個實施例中,網(wǎng)絡120可包括允許各代理(諸如計算設(shè)備)傳達數(shù)據(jù)的計 算機網(wǎng)絡(包括例如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)或其組合)。在一實施例中,網(wǎng)絡120可包括經(jīng)由串行 (例如,點對點)鏈路來通信的一個或多個互連(或互連網(wǎng)絡)和/或共享通信網(wǎng)絡。在一個實施例中,系統(tǒng)100可支持分層協(xié)議方案,該分層協(xié)議方案可包括物理層、 鏈路層、路由層、傳輸層和/或協(xié)議層。對于點對點或共享網(wǎng)絡,網(wǎng)絡120還可便于從一種 協(xié)議(例如,高速緩存處理器或高速緩存感知存儲器控制器)向另一種協(xié)議傳輸數(shù)據(jù)(例 如,以分組的形式)。另外,在一些實施例中,網(wǎng)絡120可提供遵循一種或多種高速緩存一致 性協(xié)議的通信。此外,網(wǎng)絡120可利用任何類型的通信協(xié)議,諸如以太網(wǎng)、快速以太網(wǎng)、千兆位以 太網(wǎng)、廣域網(wǎng)(WAN)、光纖分布式數(shù)據(jù)接口(FDDI)、令牌環(huán)、租用線路、模擬調(diào)制解調(diào)器、數(shù) 字訂戶線(DSL及其變形,諸如高比特率DSL(HDSL)、綜合業(yè)務數(shù)字網(wǎng)DSL(IDSL)等)、異步 傳輸模式(ATM)、有線調(diào)制解調(diào)器和/或火線。網(wǎng)絡120中的無線通信可以根據(jù)以下一種或多種無線局域網(wǎng)(WLAN)、無線廣域 網(wǎng)(WffAN)、碼分多址(CDMA)蜂窩無線電電話通信系統(tǒng)、全球移動通信系統(tǒng)(GSM)蜂窩無 線電電話系統(tǒng)、北美數(shù)字蜂窩(NADC)蜂窩無線電電話系統(tǒng)、時分多址(TDMA)系統(tǒng)、擴展 TDMA(E-TDMA)蜂窩無線電電話系統(tǒng)、諸如寬帶CDM(WCDM)等第三代伙伴項目(3G)系統(tǒng)、 等等。此外,網(wǎng)絡通信可由內(nèi)部網(wǎng)絡接口設(shè)備(例如,與計算系統(tǒng)位于相同的物理外殼內(nèi)) 或諸如網(wǎng)絡接口卡或控制器(OTC)等外部網(wǎng)絡接口設(shè)備(例如,具有與其耦合到的計算系 統(tǒng)分開的物理外殼和/或電源)來建立。如圖1中所示,網(wǎng)絡120可耦合到資源代理邏輯122,資源代理邏輯122確定云130 的一個或多個可用服務器(或計算資源)126-1到126-Z中的哪一個可向客戶端102提供 計算卸載服務。(例如根據(jù)SOAP操作的)鏈路131-1到131-Z可將服務器1沈_1到U6-Z 耦合到資源代理122。服務器1沈-1到U6-Z中的每一個服務器可包括網(wǎng)絡服務(132-1到 132-Z)、OpenCL API (134-1 到 134-Z)以及 OpenCL 驅(qū)動程序(136-1 到 136-Z)。
在一實施例中,虛擬OpenCL設(shè)備110可與OpenCL框架集成到計算云中。該虛擬 設(shè)備110可實現(xiàn)在處理與云130基礎(chǔ)設(shè)施的通信的OpenCL驅(qū)動程序108內(nèi)。OpenCL驅(qū)動 程序108可單獨安裝在客戶端系統(tǒng)上或者可用作現(xiàn)有OpenCL驅(qū)動程序的擴展。驅(qū)動程序 108可對應用104表現(xiàn)為標準OpenCL驅(qū)動程序,并且在一實施例中可透明地處理與云130 基礎(chǔ)設(shè)施的所有通信。用戶可以在驅(qū)動程序系統(tǒng)層面打開和關(guān)閉云支持。此外,應用本身 可能不會注意到任何差別,但除了例如在啟用云支持時出現(xiàn)在可用設(shè)備列表中的新設(shè)備。在一實施例中,虛擬OpenCL設(shè)備110可代表云130中對客戶端102可用的資源。 若應用104例如正在尋找具有最高性能的設(shè)備,則它可從列表中選擇虛擬設(shè)備110并在相 同的各OpenCL功能中將其用作本地設(shè)備。在一實施例中,虛擬設(shè)備的一個特殊性質(zhì)在于它 可能不在本地執(zhí)行OpenCL功能,而是在網(wǎng)絡上將它們轉(zhuǎn)發(fā)給計算云130。主機/客戶端平 臺102上的OpenCL驅(qū)動程序108可充當與由云提供的網(wǎng)絡服務接口(例如,服務132-1到 132-Z)通信的客戶端(例如,經(jīng)由網(wǎng)絡服務112)。為了透明地處理客戶端102與云130之間的內(nèi)核卸載和數(shù)據(jù)來回傳遞,在OpenCL 運行時間中定義的API調(diào)用可被實現(xiàn)為ffeb/網(wǎng)絡服務。例如,每次當應用104執(zhí)行API功 能時,虛擬設(shè)備110可檢測到此并調(diào)用云130中相應的ffeb/網(wǎng)絡服務。在一些實施例中, 云130可由計算系統(tǒng)的異構(gòu)集合構(gòu)成。唯一要求可能是這些計算系統(tǒng)對OpenCL的支持。每 個系統(tǒng)可運行與OpenCL運行時間調(diào)用相對應的網(wǎng)絡服務。網(wǎng)絡服務可進而在服務器上本 地可用的(例如,在一個或多個服務器1沈-1到U6-Z上本地可用的)OpenCL設(shè)備上執(zhí)行 OpenCL 功能。圖2示出了根據(jù)一實施例的經(jīng)由虛擬設(shè)備來加速OpenCL應用的方法200。在一些 實施例中,本文(例如參照圖1或3-4)討論的一個或多個組件可用于執(zhí)行方法200的一個 或多個操作。參照圖1-2,在操作202,確定應用(例如,應用104)是否已例如經(jīng)由API調(diào)用 clGetDeviceldsO請求了平臺的可用設(shè)備。在操作204,平臺(例如處理器,諸如參照圖3 或4討論的那些處理器)可例如經(jīng)由調(diào)用dGetDevicehfoO來詢問可用設(shè)備的性質(zhì)。在 操作206,應用可執(zhí)行設(shè)備性質(zhì)與應用要求之間的比較?;诒容^結(jié)果,應用隨后可在操作 208選擇一設(shè)備。在操作210,應用可例如經(jīng)由調(diào)用clCreateContextO在該設(shè)備上創(chuàng)建上 下文。該上下文隨后可在操作212用于與該設(shè)備作進一步交互。在一實施例中,該云增強 驅(qū)動程序108例如響應于調(diào)用clGetDeviceldsO將虛擬設(shè)備110添加到返回的可用設(shè)備 列表。該虛擬設(shè)備代表云中的可用資源,并且其性質(zhì)描述相應系統(tǒng)的硬件特征。在一些實施例中,云130由具有強大和/或多核CPU的服務器場構(gòu)成,因此虛擬設(shè) 備的性質(zhì)CL_DEVICE_TYPE (CL_設(shè)備_類型)將被設(shè)為CL_DEVICE_TYPE_CPU (CL_設(shè)備_類 型—CPU)。然而,云系統(tǒng)可包含GPU (圖形處理單元)、加速器等,在這種情形中,設(shè)備類型將 分別為 CL_DEVICE_TYPE_GPU(CL_ 設(shè)備 _ 類型 _GPU)或 CL_DEVICE_TYPE_ACCELERATOR(CL_ 設(shè)備_類型_加速器)。這意味著每個虛擬設(shè)備可代表云中相同類型且具有相同性質(zhì)的一 組異構(gòu)物理系統(tǒng)。在一些實施例中,云可通過在異構(gòu)物理系統(tǒng)上部署相同的虛擬機來實現(xiàn) 類型CL_DEVICE_TYPE_CPU的虛擬設(shè)備。因此,虛擬設(shè)備的性質(zhì)將實際上反映將部署在云中 的物理系統(tǒng)上的虛擬機的配置。為了使用虛擬設(shè)備,應用將從列表選擇該設(shè)備并在相同的 各OpenCL功能中將其用作本地設(shè)備。因此,應用可通過查詢這些性質(zhì)來確定在云系統(tǒng)上或在本地運行給定的OpenCL內(nèi)核是否有意義。在一些實施例中,應用代碼不需要修改就能利 用云。相反,云可被無縫地整合到OpenCL框架中并由應用單單基于其OpenCL性質(zhì)來選擇。因此,一些實施例利用本地計算卸載和云計算兩者。例如,由云計算提供的資源抽 象/管理和數(shù)據(jù)傳輸能力和協(xié)議(諸如web/網(wǎng)絡服務)可經(jīng)由虛擬OpenCL設(shè)備110被利 用和整合到OpenCL框架中。因此,云的潛能變得對OpenCL應用104可用,且很少需要或不 需要使這些應用適應在一般或特定云實現(xiàn)中使用云。而且,與云接口的交互可封裝在虛擬 OpenCL設(shè)備110中并由OpenCL驅(qū)動程序108處理。此外,“啟用云的”O(jiān)penCL框架可允許 OpenCL應用利用服務器平臺上可用的計算能力,從而導致跨廣范圍的客戶端形狀因子的超 級功能和/或用戶體驗。例如,薄設(shè)備的計算能力可被擴展成包括通常由服務器場提供的 能力。此外,可作為新的商業(yè)服務來提供OpenCL云服務,例如,OpenCL驅(qū)動程序可免費提 供并按使用收費。圖3示出計算系統(tǒng)300的實施例的框圖。在各個實施例中,系統(tǒng)300的一個或多 個組件可設(shè)置在能執(zhí)行本文中參照本發(fā)明一些實施例所討論的一個或多個操作的各種電 子器件中。例如,系統(tǒng)300的一個或多個組件可用于執(zhí)行參照圖1-2討論的操作,例如通過 將虛擬OpenCL設(shè)備用作與計算云的接口來加速OpenCL應用。另外,本文(例如參照圖3 和/或4)討論的各種存儲設(shè)備可用于存儲數(shù)據(jù)、運算結(jié)果等。在一個實施例中,與圖3的 方法300的操作相關(guān)聯(lián)的數(shù)據(jù)——包括由處理器302執(zhí)行的指令序列——可存儲在存儲器 設(shè)備中(諸如處理器312或圖3的處理器302中或圖4的處理器402/404中存在的一個或 多個高速緩存(例如,在一實施例中為Ll高速緩存))。此外,計算系統(tǒng)300可包括經(jīng)由互連網(wǎng)絡(或總線)304通信的一個或多個中央處 理單元(CPU) 302或處理器。處理器302可包括通用處理器、網(wǎng)絡處理器(處理在計算機網(wǎng) 絡120上傳達的數(shù)據(jù))或其他類型的處理器(包括精簡指令集計算機(RISC)處理器或復 雜指令集計算機(CISC))。而且,處理器302可具有單核或多核設(shè)計。具有多核設(shè)計的處理 器302可以在同一塊集成電路(IC)管芯上集成不同類型的處理器核。另外,具有多核設(shè)計 的處理器302可實現(xiàn)為對稱或非對稱多處理器。此外,處理器302可利用SIMD (單指令多 數(shù)據(jù))架構(gòu)。芯片組306也可與互連網(wǎng)絡304通信。芯片組306可包括存儲器控制中樞 (MCH) 308。MCH 308可包括與存儲器312 (在系統(tǒng)300為客戶端的情況下,存儲器312可存儲 圖1的項104-112中的一個或多個;而在系統(tǒng)300為云資源/服務器的情況下,存儲器312 可存儲圖1的項132-136中的一個或多個)通信的存儲器控制器310。存儲器312可存儲 數(shù)據(jù),包括由處理器302或計算系統(tǒng)300中所包括的任何其他設(shè)備執(zhí)行的指令序列。在本 發(fā)明的一個實施例中,存儲器312可包括一個或多個易失性存儲(或存儲器)設(shè)備,諸如隨 機存取存儲器(RAM)、動態(tài)RAM(DRAM)、同步DRAM (SDRAM)、靜態(tài)RAM(SRAM)或其他類型的存 儲設(shè)備。也可利用非易失性存儲器,諸如硬盤。諸如多個CPU和/或多個系統(tǒng)存儲器等其 他設(shè)備可經(jīng)由互連網(wǎng)絡304通信。MCH 308還可包括與顯示器316通信的圖形接口 314。顯示器316可用于向用戶 顯示本文討論的操作的結(jié)果。在本發(fā)明的一實施例中,顯示器316可以是平板顯示器,其通 過例如信號轉(zhuǎn)換器與圖形接口 314通信,該信號轉(zhuǎn)換器將諸如視頻存儲器或系統(tǒng)存儲器等 存儲設(shè)備中所存儲的圖像的數(shù)字表示轉(zhuǎn)換成由顯示器316解讀和顯示的顯示器信號。由接口 314產(chǎn)生的顯示器信號可經(jīng)過各種控制設(shè)備,然后由顯示器316解讀并后續(xù)在顯示器316 上顯不。中樞接口 318可允許MCH 308與輸入/輸出控制中樞(ICH) 320通信。ICH320可向 與計算系統(tǒng)300通信的I/O設(shè)備提供接口。ICH 320可通過諸如外圍組件互連(PCI)橋路、 通用串行總線(USB)控制器或其他類型的外圍橋路或控制器等外圍橋路(或控制器)3 與總線322通信。橋路3M可在CPU 302與外圍設(shè)備之間提供數(shù)據(jù)路徑。可以利用其他類 型的拓撲結(jié)構(gòu)。另外,多條總線例如可通過多個橋路或控制器與ICH 320通信。而且,在本 發(fā)明的各個實施例中,與ICH 320通信的其他外圍設(shè)備可包括集成驅(qū)動電子設(shè)備(IDE)或 小型計算機系統(tǒng)接口(SCSI)硬驅(qū)動、USB端口、鍵盤、鼠標、并行端口、串行端口、軟盤驅(qū)動、 數(shù)字輸出支持(例如,數(shù)字視頻接口(DVI))或其他設(shè)備??偩€322可與音頻設(shè)備326、一個或多個盤驅(qū)動328以及可與計算機網(wǎng)絡120通信 的網(wǎng)絡接口設(shè)備330通信。在一實施例中,設(shè)備330可以是能夠進行無線通信的NIC。其他 設(shè)備可經(jīng)由總線322通信。另外,在本發(fā)明的一些實施例中,各種組件(諸如網(wǎng)絡接口設(shè)備 330)可與MCH 308通信。此外,可以組合處理器302和MCH 308以形成單塊芯片。此外,在 本發(fā)明的其他實施例中,圖形接口 314可被包括在MCH 308內(nèi)。此外,計算系統(tǒng)300可包括易失性和/或非易失性存儲器(或存儲)。例如, 非易失性存儲器可包括以下一個或多個只讀存儲器(ROM)、可編程ROM(PROM)、可擦除 PROM(EPROM)、電EPROM(EEPROM)、盤驅(qū)動(例如328)、軟盤、緊致盤ROM(CD-ROM)、數(shù)字多功 能盤(DVD)、閃存、磁光盤或能夠存儲電子數(shù)據(jù)(例如,包括指令)的其他類型的非易失性機 器可讀介質(zhì)。在一實施例中,系統(tǒng)300的組件可安排成諸如參照圖4討論的點對點(PtP) 配置。例如,處理器、存儲器、和/或輸入/輸出設(shè)備可通過多個點對點接口互連。圖4示出根據(jù)本發(fā)明一實施例的安排成點對點(PtP)配置的計算系統(tǒng)400。具體 而言,圖4示出其中處理器、存儲器、以及輸入/輸出設(shè)備通過多個點對點接口互連的系統(tǒng)。 參照圖1-3討論的操作可由系統(tǒng)400的一個或多個組件來執(zhí)行。如圖4中所示,系統(tǒng)400可包括若干處理器,出于清楚目的僅示出其中的兩個,即 處理器402和404。處理器402和404各自可包括用以與存儲器410和412耦合的本地存 儲器控制器中樞(MCH)406和408。存儲器410和/或412可存儲各種數(shù)據(jù),諸如參照圖3 的存儲器312(在系統(tǒng)400為客戶端的情況下,存儲器312可存儲圖1的項104-112中的一 個或多個;而在系統(tǒng)400為云資源/服務器的情況下,存儲器312可存儲圖1的項132-136 中的一個或多個)所討論的那些數(shù)據(jù)。處理器402和404可以是任何合適的處理器,諸如參照圖3的處理器302所討論 的那些。處理器402和404可分別使用點對點(PtP)接口電路416和418經(jīng)由PtP接口 414交換數(shù)據(jù)。處理器402和404各自可使用點對點接口電路似6、似8、430和432經(jīng)由各 個PtP接口 422和424與芯片組420交換數(shù)據(jù)。芯片組420還可使用PtP接口電路437經(jīng) 由高性能圖形接口 436與高性能圖形電路434交換數(shù)據(jù)。本發(fā)明的至少一個實施例可通過利用處理器402和404來提供。例如,處理器402 和/或404可執(zhí)行圖1-3的一個或多個操作。然而,本發(fā)明的其他實施例可存在于圖4的 系統(tǒng)400內(nèi)的其他電路、邏輯單元或設(shè)備中。此外,本發(fā)明的其他實施例可分布在圖4中所 示的若干電路、邏輯單元或設(shè)備中。
芯片組420可使用PtP接口電路441耦合到總線440??偩€440可具有與其耦合 的一個或多個設(shè)備,諸如總線橋路442和I/O設(shè)備443??偩€橋路442可經(jīng)由總線444耦合 到其他設(shè)備,諸如鍵盤/鼠標445、參照圖4討論的網(wǎng)絡接口設(shè)備430 (諸如調(diào)制解調(diào)器、網(wǎng) 絡接口卡(NIC)或者可耦合到計算機網(wǎng)絡120的類似設(shè)備)、音頻I/O設(shè)備和/或數(shù)據(jù)存儲 設(shè)備448。數(shù)據(jù)存儲設(shè)備448可存儲可由處理器402和/或404執(zhí)行的代碼449。在本發(fā)明的各個實施例中,本文中例如參照圖1-4所討論的操作可實現(xiàn)為硬件 (例如,邏輯電路)、軟件(包括例如控制諸如參照圖1-4所討論的處理器之類的處理器的 操作的微代碼)、固件或其組合,它們可作為計算機程序產(chǎn)品來提供,例如包括其上存儲有 用于編程計算機(例如,計算設(shè)備的處理器或其他邏輯)以執(zhí)行本文所討論的操作的指令 (或軟件程序)的有形機器可讀或計算機可讀介質(zhì)。機器可讀介質(zhì)可包括諸如本文所討論 的那些存儲設(shè)備。另外,這樣的有形計算機可讀介質(zhì)可以作為計算機程序產(chǎn)品來下載,其中可借助 于有形傳播介質(zhì)中包含的數(shù)據(jù)信號經(jīng)由通信鏈路(例如,總線、調(diào)制解調(diào)器或網(wǎng)絡連接)將 該程序從遠程計算機(例如,服務器)傳輸?shù)秸埱笥嬎銠C(例如,客戶端)。由此,盡管已經(jīng)用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本發(fā)明的實施例, 但是應該理解所要求保護的主題可并不被限定于所描述的具體特征或動作。相反,這些具 體特征和動作是作為實現(xiàn)所要求保護的主題的樣本形式而公開的。
權(quán)利要求
1.一種用于加速opencl應用的方法,所述方法包括響應于從應用可用的多個設(shè)備中選擇虛擬設(shè)備,將一個或多個計算操作卸載到所述虛 擬設(shè)備,其中所述選擇虛擬設(shè)備是基于所述虛擬設(shè)備的一個或多個性質(zhì)與將由所述應用確定 的一個或多個要求的比較,并且其中所述虛擬設(shè)備的所述一個或多個性質(zhì)代表云的可用資源。
2.如權(quán)利要求1所述的方法,其特征在于,所述多個設(shè)備包括處理器。
3.如權(quán)利要求2所述的方法,其特征在于,還包括所述處理器確定是否將所述一個或 多個計算操作從所述處理器卸載到所述虛擬設(shè)備。
4.如權(quán)利要求2所述的方法,其特征在于,還包括所述處理器執(zhí)行所述應用。
5.如權(quán)利要求1所述的方法,其特征在于,所述卸載是根據(jù)OpenCL(開放計算語言)執(zhí) 行的。
6.如權(quán)利要求1所述的方法,其特征在于,還包括響應于在所述多個設(shè)備中選擇虛擬 設(shè)備而生成所述虛擬設(shè)備的設(shè)備上下文。
7.如權(quán)利要求6所述的方法,其特征在于,還包括基于生成的設(shè)備上下文與所述虛擬 設(shè)備交互。
8.如權(quán)利要求1所述的方法,其特征在于,還包括響應于所述應用的請求而接收所述 多個設(shè)備的一個或多個性質(zhì)。
9.一種用于加速opencl應用的裝置,所述裝置包括存儲器,用于存儲對應于虛擬設(shè)備的數(shù)據(jù),其中所述虛擬設(shè)備代表云的可用資源;以及處理器,用于確定是否將一個或多個計算操作從所述處理器卸載到所述虛擬設(shè)備。
10.如權(quán)利要求9所述的裝置,其特征在于,所述存儲器用于存儲以下一個或多個 OpenCL客戶端應用、OpenCL API (應用編程接口)以及OpenCL驅(qū)動程序。
11.如權(quán)利要求10所述的裝置,其特征在于,所述OpenCL驅(qū)動程序包括所述虛擬設(shè)備。
12.如權(quán)利要求9所述的裝置,其特征在于,還包括用于將所述虛擬設(shè)備的網(wǎng)絡服務耦 合到所述云的可用資源的網(wǎng)絡服務的一條或多條鏈路。
13.如權(quán)利要求9所述的裝置,其特征在于,所述云經(jīng)由網(wǎng)絡耦合到所述處理器。
14.如權(quán)利要求9所述的裝置,其特征在于,所述處理器包括一個或多個處理器核。
15.如權(quán)利要求9所述的裝置,其特征在于,還包括資源代理,用于確定所述云的哪一 個可用資源將用于服務所卸載的一個或多個計算操作。
全文摘要
描述了用于通過利用虛擬OpenCL(開放計算語言)設(shè)備作為與計算云的接口來加速OpenCL應用的方法和裝置。在一個實施例中,一個或多個計算操作可從本地處理器卸載到代表云的可用資源的虛擬設(shè)備。還描述了其他實施例。
文檔編號G06F9/44GK102109997SQ201010622958
公開日2011年6月29日 申請日期2010年12月24日 優(yōu)先權(quán)日2009年12月26日
發(fā)明者H-C·霍普, R·拉特林 申請人:英特爾公司