欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于異構(gòu)計(jì)算應(yīng)用編程接口(API)的系統(tǒng)和方法與流程

文檔序號(hào):11333702閱讀:462來(lái)源:國(guó)知局
用于異構(gòu)計(jì)算應(yīng)用編程接口(API)的系統(tǒng)和方法與流程



背景技術(shù):

本發(fā)明在其一些實(shí)施例中涉及異構(gòu)計(jì)算,更具體而非唯一地,涉及用于異構(gòu)計(jì)算應(yīng)用編程接口(applicationprogramminginterface,api)的系統(tǒng)和方法。

包含多個(gè)不同處理器的異構(gòu)計(jì)算系統(tǒng)可以通過(guò)專門的api進(jìn)行編程。不同的供應(yīng)商提供不同的api,每個(gè)api在語(yǔ)言語(yǔ)法和/或用于在處理器上執(zhí)行的可用操作方面可能不同。單個(gè)供應(yīng)商可以提供同一api的不同版本,用于在不同的處理硬件上執(zhí)行。

每個(gè)api可能在執(zhí)行模型、內(nèi)存模型、語(yǔ)言語(yǔ)法和編譯模型方面有所不同。例如,執(zhí)行模型可以包括同步或非同步的隊(duì)列。執(zhí)行模型可以支持或不支持事件。內(nèi)存模型可以是分布式的或本地的。傳輸可以是非透明的或透明的??梢灾С只虿恢С钟成浜腿∠成洳僮?。存儲(chǔ)功能可以基于指針或者基于一種不同的模型。api語(yǔ)言在語(yǔ)法和結(jié)構(gòu)上可能不同。編譯模型可以包括單獨(dú)的在線和離線編譯,或包括組合編譯。

為異構(gòu)計(jì)算系統(tǒng)編寫程序較復(fù)雜,可能使程序員專注于使用單個(gè)api進(jìn)行操作。單個(gè)api可能不提供所有必需的能力或行為,并且可能不支持各種版本的內(nèi)核。因此,程序員可能需要修改api或使用其它api。

使用多個(gè)api進(jìn)行編程的速度慢、易出錯(cuò)、價(jià)格昂貴且需要編程人員的高水平培訓(xùn)、知識(shí)和技能。尋求對(duì)異構(gòu)系統(tǒng)的編程進(jìn)行改進(jìn)。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是改進(jìn)應(yīng)用編程接口的處理。

上述和其它目標(biāo)通過(guò)獨(dú)立權(quán)利要求的特征來(lái)實(shí)現(xiàn)。另外的實(shí)施方式從從屬權(quán)利要求、描述內(nèi)容和附圖中顯而易見(jiàn)。

根據(jù)第一方面,一種用于處理應(yīng)用編程接口(applicationprogramminginterface,api)請(qǐng)求的裝置包括:用于接收所述api請(qǐng)求的接口;以及處理單元,用于:識(shí)別具有不同指令集架構(gòu)(instructionsetarchitectures,isa)的多個(gè)處理器;操作一組不同的api執(zhí)行器模塊;以及控制至少一個(gè)api執(zhí)行器模塊,以在所述處理器中的至少一個(gè)處理器上基于所述api請(qǐng)求來(lái)執(zhí)行命令。

所述裝置通過(guò)自動(dòng)選擇api執(zhí)行器模塊,而不是要求程序開(kāi)發(fā)人員使用多個(gè)api進(jìn)行操作,來(lái)消除來(lái)自人類程序開(kāi)發(fā)人員的使用不同api對(duì)不同異構(gòu)處理設(shè)備進(jìn)行編程的負(fù)擔(dān)。不同的api可以提供不同的功能,有時(shí)具有不同的語(yǔ)法,使得使用多個(gè)api進(jìn)行編程很困難、容易出錯(cuò)并且耗時(shí)。所述裝置允許程序員專注于使用單個(gè)統(tǒng)一環(huán)境(而不是多個(gè)不同的api)進(jìn)行操作,然后所述裝置將該單個(gè)統(tǒng)一環(huán)境映射到可用的api執(zhí)行器模塊。在單個(gè)統(tǒng)一框架內(nèi),程序員具有由不同的api提供的多種不同的能力或行為(例如,支持各種版本的內(nèi)核)。

根據(jù)所述第一方面,在所述裝置的第一可能實(shí)施形式中,每個(gè)api執(zhí)行器模塊包括以下組中的至少一個(gè)對(duì)象:存儲(chǔ)對(duì)象、操作對(duì)象、隊(duì)列對(duì)象,而所述至少一個(gè)對(duì)象用于預(yù)定義的isa;所述處理單元用于控制所述至少一個(gè)api執(zhí)行器模塊,以基于至少一個(gè)對(duì)象在所述至少一個(gè)處理器上執(zhí)行所述命令。

所述裝置自動(dòng)分配不同的對(duì)象,在不同對(duì)象與api執(zhí)行器模塊之間進(jìn)行映射,并通過(guò)api模塊使用不同的較低級(jí)的api特定對(duì)象來(lái)對(duì)高級(jí)命令執(zhí)行操作。

根據(jù)如上所述第一方面或根據(jù)所述第一方面的前述任一實(shí)施形式,在所述裝置的第二可能實(shí)施形式中,所述裝置包括統(tǒng)一層,所述統(tǒng)一層包括以下組中的至少一個(gè)統(tǒng)一對(duì)象:統(tǒng)一存儲(chǔ)對(duì)象、統(tǒng)一操作對(duì)象、統(tǒng)一隊(duì)列對(duì)象,而所述統(tǒng)一對(duì)象則用于所述api請(qǐng)求。

所述裝置創(chuàng)建存儲(chǔ)對(duì)象、操作對(duì)象和隊(duì)列對(duì)象的較高抽象層。通過(guò)使用api的低級(jí)語(yǔ)言,所述裝置自動(dòng)向不同的低級(jí)api實(shí)現(xiàn)為程序員提供單一接口的高級(jí)操作對(duì)象(例如,排序、過(guò)濾、添加)。

根據(jù)所述第一方面的前述第一或第二實(shí)施形式,在所述裝置的第三可能實(shí)施形式中,所述處理單元用于將一組操作命令中的一個(gè)操作命令與指示相應(yīng)api請(qǐng)求的簽名相關(guān)聯(lián)。

簽名表示提供了操作命令的抽象表示。簽名表示可以由不同的低級(jí)api有區(qū)別地實(shí)現(xiàn)。

根據(jù)所述第一方面的前述第一、第二或第三實(shí)施形式中的任一實(shí)施形式,在所述裝置的第四可能實(shí)施形式中,一組存儲(chǔ)對(duì)象中的每個(gè)存儲(chǔ)對(duì)象包括:公共部分,定義所述一組存儲(chǔ)對(duì)象中的各個(gè)成員共有的公用值類型及公共函數(shù);以及特定部分,唯一地定義至少一個(gè)特定值類型和至少一個(gè)api特定函數(shù)調(diào)用。

通用和特定部分提供的設(shè)計(jì)既統(tǒng)一了通用功能,又提供了api特定的低級(jí)定義。通用部分允許計(jì)算機(jī)程序執(zhí)行抽象高級(jí)存儲(chǔ)命令,而不需要低級(jí)實(shí)現(xiàn)細(xì)節(jié)。高級(jí)存儲(chǔ)命令自動(dòng)映射到低級(jí)命令,以在某個(gè)目標(biāo)設(shè)備上執(zhí)行。

根據(jù)所述第一方面的前述第一、第二、第三或第四實(shí)施形式中的任一實(shí)施形式,在所述裝置的第五可能實(shí)施形式中,所述處理單元用于使用所述一組api執(zhí)行器模塊中的每一個(gè)的相應(yīng)一組操作命令,基于多個(gè)統(tǒng)一執(zhí)行存儲(chǔ)對(duì)象與所述一組存儲(chǔ)對(duì)象之間的關(guān)聯(lián)以及多個(gè)統(tǒng)一執(zhí)行操作命令與所述一組操作命令之間的關(guān)聯(lián),來(lái)執(zhí)行多個(gè)子序列中的另一個(gè)。

從統(tǒng)一對(duì)象到本地api執(zhí)行器模塊對(duì)象的映射允許將高級(jí)抽象api請(qǐng)求選擇性地映射到不同的低級(jí)api指令。

根據(jù)所述第一方面的前述第五實(shí)施形式,在所述裝置的第六可能實(shí)施形式中,每個(gè)所述統(tǒng)一執(zhí)行存儲(chǔ)對(duì)象與所述一組不同的api執(zhí)行器模塊中的每一個(gè)的所述一組存儲(chǔ)對(duì)象中的一個(gè)成員相關(guān)聯(lián),并且每個(gè)所述統(tǒng)一執(zhí)行操作命令與所述一組不同的api執(zhí)行器模塊中的每一個(gè)的所述一組操作命令中的一個(gè)成員相關(guān)聯(lián)。

根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施形式,在所述裝置的第七可能實(shí)施形式中,所述處理單元用于:收集所述執(zhí)行環(huán)境的運(yùn)行時(shí)數(shù)據(jù),以使用所述運(yùn)行時(shí)數(shù)據(jù)將所述api執(zhí)行器模塊中的一個(gè)與所述多個(gè)處理器中的一個(gè)相關(guān)聯(lián)。

通過(guò)添加或撤銷與api執(zhí)行器模塊的關(guān)聯(lián),可以自動(dòng)實(shí)現(xiàn)執(zhí)行環(huán)境的更改,例如移除處理硬件或添加新的處理硬件。

根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施形式,在所述裝置的第八可能實(shí)施形式中,所述處理單元用于:根據(jù)從命令響應(yīng)時(shí)間、總體命令執(zhí)行時(shí)間和功耗中選擇的一個(gè)處理器特性,將所述api執(zhí)行器模塊中的一個(gè)與所述多個(gè)處理器中的一個(gè)相關(guān)聯(lián)。

不同的api可以操作具有不同性能級(jí)別的處理器。通過(guò)考慮由匹配的api產(chǎn)生的處理器特性,api執(zhí)行器模塊被映射到處理器以提高系統(tǒng)性能。

根據(jù)如上所述第一方面或者根據(jù)所述第一方面的任一前述實(shí)施形式,在所述裝置的第九可能實(shí)施形式中,所述處理單元用于將序列劃分成多個(gè)隊(duì)列;所述多個(gè)隊(duì)列中的每一個(gè)由所述一組不同的api執(zhí)行器模塊中的一個(gè)不同的api執(zhí)行器模塊處理。

用于處理=各個(gè)隊(duì)列的api執(zhí)行器模塊的選擇提高了系統(tǒng)性能,因?yàn)椴煌腶pi執(zhí)行器模塊可以處理具有不同性能級(jí)別的不同隊(duì)列。可以為每個(gè)隊(duì)列選擇性能最好的api執(zhí)行器模塊。

根據(jù)如上所述第一方面或者根據(jù)所述第一方面的任一前述實(shí)施形式,在所述裝置的第十可能實(shí)施形式中,所述處理單元用于在所述應(yīng)用的運(yùn)行時(shí)初始化事件處創(chuàng)建所述一組不同的api執(zhí)行器模塊。

運(yùn)行時(shí)初始化根據(jù)執(zhí)行環(huán)境中可用的現(xiàn)有處理基礎(chǔ)設(shè)施生成api執(zhí)行器模塊。api執(zhí)行器模塊根據(jù)可用處理器的變化而生成,變化是例如添加新處理器和/或移除處理器。初始化事件可能會(huì)觸發(fā)新的執(zhí)行器模塊使用不同的處理器更有效地處理與計(jì)算機(jī)程序相關(guān)的變化。

根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施形式,在所述裝置的第十一可能實(shí)施形式中,所述處理單元用于管理至少一個(gè)統(tǒng)一執(zhí)行層隊(duì)列中的序列。

所述裝置自動(dòng)劃分序列,并為序列的不同部分指定和使用不同的api執(zhí)行器模塊,而不需要程序員劃分序列。

在第十二可能實(shí)施形式中,提供了一種用于處理應(yīng)用編程接口(applicationprogramminginterface,api)請(qǐng)求的方法,所述方法用于對(duì)根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施形式的裝置進(jìn)行操作。

在第十三可能實(shí)施形式中,提供了一種計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在計(jì)算機(jī)上執(zhí)行時(shí)運(yùn)行前述方法。

除非另外限定,否則本文所使用的所有技術(shù)術(shù)語(yǔ)和/或科學(xué)術(shù)語(yǔ)均具有本發(fā)明所涉及的本領(lǐng)域的普通技術(shù)人員共同理解的相同意思。雖然類似于或等同于本文所描述的那些方法和材料可以使用在本發(fā)明的實(shí)施例的實(shí)踐中或測(cè)試中,但是下文描述了示例性方法和/或材料。在有沖突的情況下,以包括定義的專利說(shuō)明書為準(zhǔn)。此外,材料、方法和示例僅僅是示例性的,并不旨在有必要地進(jìn)行限制。

附圖說(shuō)明

此處僅作為示例,結(jié)合附圖描述了本發(fā)明的一些實(shí)施例?,F(xiàn)在具體結(jié)合附圖,需要強(qiáng)調(diào)的是所示的項(xiàng)目作為示例,為了說(shuō)明性地討論本發(fā)明的實(shí)施例。這樣,根據(jù)附圖說(shuō)明,如何實(shí)踐本發(fā)明實(shí)施例對(duì)本領(lǐng)域技術(shù)人員而言是顯而易見(jiàn)的。

在附圖中:

圖1是根據(jù)本發(fā)明一些實(shí)施例的處理api請(qǐng)求的方法的流程圖;

圖2是根據(jù)本發(fā)明一些實(shí)施例的包括處理api請(qǐng)求的裝置的系統(tǒng)的組件框圖;

圖3a是根據(jù)本發(fā)明一些實(shí)施例的圖2的裝置內(nèi)的附加可選模塊和/或?qū)ο蠼Y(jié)構(gòu)的框圖;

圖3b是根據(jù)本發(fā)明一些實(shí)施例的描繪存儲(chǔ)操作綁定命令的傳播的示意圖;

圖3c是根據(jù)本發(fā)明一些實(shí)施例的存儲(chǔ)對(duì)象的結(jié)構(gòu)的示意圖;

圖4是根據(jù)本發(fā)明一些實(shí)施例的用于識(shí)別執(zhí)行環(huán)境中的處理器并根據(jù)所識(shí)別的處理器生成api執(zhí)行器模塊的方法的流程圖;

圖5是根據(jù)本發(fā)明一些實(shí)施例的用于映射api執(zhí)行器模塊支持的操作的方法的流程圖;

圖6是根據(jù)本發(fā)明一些實(shí)施例的描繪api請(qǐng)求從執(zhí)行的計(jì)算機(jī)程序到用于在目標(biāo)設(shè)備和/或處理器上執(zhí)行的低級(jí)api指令的映射的示意圖;以及

圖7是描繪基于將接收的api請(qǐng)求映射到用于在執(zhí)行環(huán)境中的目標(biāo)設(shè)備上執(zhí)行的低級(jí)api,的本文所述模塊和/或?qū)ο笾g的數(shù)據(jù)流的示意圖,如本文所述。

具體實(shí)施方式

本發(fā)明在其一些實(shí)施例中涉及異構(gòu)計(jì)算,更具體而唯一地,涉及用于異構(gòu)計(jì)算應(yīng)用編程接口(applicationprogramminginterface,api)的系統(tǒng)和方法。

本發(fā)明一些實(shí)施例的一個(gè)方面涉及一種裝置,該裝置管理用于統(tǒng)一與由不同的多個(gè)api(每個(gè)api控制一個(gè)不同的處理器)控制的多個(gè)不同處理器的通信的層。該裝置自動(dòng)接收程序的api請(qǐng)求序列,并將基于高級(jí)接口的高級(jí)程序(或其部分,諸如程序的分割部分)中的api請(qǐng)求的子序列映射到不同的低級(jí)api。每個(gè)相應(yīng)的低級(jí)api操作一個(gè)或多個(gè)處理器以執(zhí)行映射的程序(或其分割部分)。這樣,高級(jí)程序在包括被組織為異構(gòu)計(jì)算系統(tǒng)的多個(gè)不同處理器的執(zhí)行環(huán)境中自動(dòng)執(zhí)行。高級(jí)程序不需要包括指定用于執(zhí)行的特定低級(jí)api和/或特定處理器的低級(jí)指令??梢赃x擇執(zhí)行的api來(lái)提高用于執(zhí)行程序的系統(tǒng)性能,因?yàn)椴煌腶pi和/或不同的處理器可以在不同的性能級(jí)別執(zhí)行相同的程序。

可選地,裝置控制一個(gè)或多個(gè)api執(zhí)行器模塊,以基于高級(jí)api請(qǐng)求(由程序或其部分發(fā)布)在一個(gè)或多個(gè)處理器上執(zhí)行一個(gè)或多個(gè)低級(jí)命令,這些處理器可以可選地根據(jù)指令集架構(gòu)(instructionsetarchitecture,isa)組織為不同設(shè)備。每個(gè)高級(jí)api請(qǐng)求可以被映射到一組多個(gè)低級(jí)api執(zhí)行器模塊中的一個(gè)。每個(gè)api執(zhí)行器模塊可選地基于公共isa來(lái)操作該組可用處理器中的某個(gè)處理器。可選地,處理器不相似,形成異構(gòu)系統(tǒng)。

api請(qǐng)求是可由計(jì)算機(jī)程序提供、由一個(gè)或多個(gè)處理器執(zhí)行、由一個(gè)或多個(gè)低級(jí)api操作的高級(jí)請(qǐng)求。裝置自動(dòng)指定用于執(zhí)行api請(qǐng)求的特定api執(zhí)行器模塊。這樣,程序可以使用高級(jí)api請(qǐng)求來(lái)編寫,而不定義低級(jí)api執(zhí)行器模塊來(lái)操作異構(gòu)執(zhí)行環(huán)境的處理器,和/或不定義哪個(gè)處理器執(zhí)行程序的哪個(gè)部分。裝置可以選擇api執(zhí)行器模塊以提高高級(jí)api請(qǐng)求的執(zhí)行性能。

可選地,該組不同api執(zhí)行器模塊基于執(zhí)行環(huán)境中的現(xiàn)有處理器,例如在檢測(cè)到執(zhí)行環(huán)境的處理器可用性發(fā)生變化的運(yùn)行時(shí)期期間,由裝置自動(dòng)生成。根據(jù)isa的不同,可以為不同的處理器(單個(gè)或多個(gè))生成不同的api執(zhí)行器模塊。

應(yīng)注意的是,本文描述的裝置可以實(shí)現(xiàn)為(硬件和/或軟件中的)程序模塊、系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。

在詳細(xì)說(shuō)明本發(fā)明的至少一個(gè)實(shí)施例之前,應(yīng)當(dāng)理解,本發(fā)明在其應(yīng)用中不一定限于以下描述所闡明的和/或在附圖和/或示例中示出的組件和/或方法的構(gòu)造和布置細(xì)節(jié)。本發(fā)明能夠以通過(guò)它實(shí)施例實(shí)現(xiàn)或以各種方式實(shí)踐或執(zhí)行。

本發(fā)明可以是一種系統(tǒng)、一種方法和/或一種計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可包括一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有在其上的計(jì)算機(jī)可讀程序指令,用于使處理器執(zhí)行本發(fā)明的各方面。

計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以為有形設(shè)備,有形設(shè)備可保留和存儲(chǔ)指令以供指令執(zhí)行設(shè)備使用。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以為,例如但不限于電子存儲(chǔ)設(shè)備、磁性存儲(chǔ)設(shè)備、光學(xué)存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或前述設(shè)備的任意合適組合。

本文描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到相應(yīng)的計(jì)算/處理設(shè)備或通過(guò)網(wǎng)絡(luò),例如互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無(wú)線網(wǎng)絡(luò),下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。

計(jì)算機(jī)可讀程序指令可作為獨(dú)立軟件包全部在用戶的計(jì)算機(jī)上、部分在用戶的計(jì)算機(jī)上執(zhí)行,以及部分在用戶的計(jì)算機(jī)上執(zhí)行且部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或全部在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一種場(chǎng)景中,遠(yuǎn)程計(jì)算機(jī)可通過(guò)任意類型的網(wǎng)絡(luò)連接到用戶的計(jì)算機(jī),這些類型的網(wǎng)絡(luò)包括局域網(wǎng)(localareanetwork,lan)或廣域網(wǎng)(wideareanetwork,wan),或者可以(例如使用互聯(lián)網(wǎng)服務(wù)提供商通過(guò)互聯(lián)網(wǎng))連接到外部計(jì)算機(jī)。在一些實(shí)施例中,包括可編程邏輯電路、現(xiàn)場(chǎng)可編程門陣列(field-programmablegatearrays,fpga)或可編程邏輯陣列(programmablelogicarrays,pla)等的電子電路可通過(guò)使用計(jì)算機(jī)可讀程序指令的狀態(tài)信息以對(duì)電子電路進(jìn)行個(gè)性化來(lái)執(zhí)行計(jì)算機(jī)可讀程序指令,以便執(zhí)行本發(fā)明的各方面。

在本文中,本發(fā)明的各方面參考根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖圖示和/或框圖進(jìn)行描述。將理解,流程圖圖示和/或框圖中的每個(gè)方框以及流程圖圖示和/或框圖中的方框的組合可以通過(guò)計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。

圖中的流程圖和框圖示出了根據(jù)本發(fā)明各實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施方式的架構(gòu)、功能和操作。在這一方面,流程圖或框圖中的每個(gè)方框可表示模塊、片段或部分指令,該部分指令包括用于實(shí)現(xiàn)指定邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。在一些替代性實(shí)施方式中,方框中提到的功能可不按照?qǐng)D中提到的順序發(fā)生。例如,相繼示出的兩個(gè)方框事實(shí)上可基本上同時(shí)執(zhí)行,或者這些方框有時(shí)可以以相反順序執(zhí)行,這取決于所涉及的功能。還應(yīng)注意的是,框圖和/或流程圖圖示的每個(gè)方框以及框圖和/或流程圖圖示中的方框的組合可通過(guò)執(zhí)行指定功能或動(dòng)作的專用基于硬件的系統(tǒng)或者執(zhí)行專用硬件和計(jì)算機(jī)指令組合來(lái)實(shí)現(xiàn)。

現(xiàn)在參考圖1,圖1是根據(jù)本發(fā)明一些實(shí)施例的用于控制api執(zhí)行器模塊以在一個(gè)或多個(gè)處理器上基于(可選地,計(jì)算機(jī)程序的)高級(jí)api請(qǐng)求執(zhí)行命令的方法。還參考圖2,圖2是系統(tǒng)的組件框圖,系統(tǒng)通過(guò)以下支持允許程序員以高級(jí)語(yǔ)言編寫源代碼而不考慮低級(jí)處理器實(shí)現(xiàn):自動(dòng)選擇api執(zhí)行器模塊并將高級(jí)程序(其包括高級(jí)api請(qǐng)求)映射到所選擇的api執(zhí)行器模塊以便由執(zhí)行環(huán)境的處理器進(jìn)行低級(jí)執(zhí)行。權(quán)利要求1的方法可以由圖2的裝置和/或系統(tǒng)執(zhí)行。

裝置通過(guò)基于高級(jí)api請(qǐng)求自動(dòng)選擇api執(zhí)行器模塊,而不是要求程序開(kāi)發(fā)人員使用多個(gè)api進(jìn)行操作,來(lái)消除來(lái)自人類程序開(kāi)發(fā)人員的使用不同api對(duì)不同異構(gòu)處理設(shè)備進(jìn)行編程的負(fù)擔(dān)。不同的api可以提供不同的功能,有時(shí)具有不同的語(yǔ)法,使得直接使用多個(gè)api(與本文所描述的api請(qǐng)求相反)進(jìn)行編程很困難、容易出錯(cuò)并且耗時(shí)。裝置允許程序員使用高級(jí)api請(qǐng)求專注于使用單個(gè)統(tǒng)一環(huán)境(而不是多個(gè)不同的api)進(jìn)行操作,然后裝置將其映射到可用的api執(zhí)行器模塊。在單個(gè)統(tǒng)一框架內(nèi),程序員具有由不同的api提供的多種不同的能力或行為(例如,支持各種版本的內(nèi)核)。

裝置200包括接口202以接收api請(qǐng)求204??梢詫pi請(qǐng)求204作為高級(jí)程序206的源代碼的一部分而包含,例如作為庫(kù),和/或作為集成在高級(jí)語(yǔ)言內(nèi)的子程序。計(jì)算機(jī)程序可以是完整的計(jì)算機(jī)程序、計(jì)算機(jī)程序的一部分和/或單個(gè)算法。計(jì)算機(jī)程序可以是高級(jí)源代碼格式、適合執(zhí)行的低級(jí)代碼格式或預(yù)編譯代碼。程序206可以在執(zhí)行環(huán)境214內(nèi)執(zhí)行。

可選地,源代碼以領(lǐng)域?qū)S谜Z(yǔ)言(domainspecificlanguage,dsl)編寫。dsl可以提供比其它編程語(yǔ)言,例如低級(jí)編程語(yǔ)言和/或非專門設(shè)計(jì)來(lái)處理與dsl相同的域中的問(wèn)題的編程語(yǔ)言,更高級(jí)別的數(shù)據(jù)類型抽象和/或抽象數(shù)據(jù)類型的更廣泛使用。dsl可以是預(yù)先存在的可用dsl或定制開(kāi)發(fā)的dsl。

裝置200包括處理單元208,處理單元208操作一組不同的api執(zhí)行器模塊210a-c,如本文所述。處理單元208控制一個(gè)或多個(gè)api執(zhí)行器模塊210a-c以基于api請(qǐng)求在執(zhí)行環(huán)境214的一個(gè)或多個(gè)處理器212a-c上執(zhí)行命令,如本文所述。注意的是,執(zhí)行器模塊的數(shù)量和處理器的數(shù)量可以大于2,選擇數(shù)量2是為了簡(jiǎn)單、清楚和說(shuō)明的目的。

處理器210a-c可以是不同的,可選地,使用不同的isa來(lái)操作。處理器210a-c可以具有不同的架構(gòu)設(shè)計(jì),例如中央處理器(centralprocessingunit,cpu)、圖形處理單元(graphicalprocessingunit,gpu)、用于與其它單元連接的處理器,和/或?qū)S糜布铀倨?例如,編碼器、解碼器和加密協(xié)同處理器)。在本文中,一個(gè)或多個(gè)處理器以及相關(guān)存儲(chǔ)器有時(shí)稱為設(shè)備。每個(gè)設(shè)備可以包括根據(jù)公共isa操作的多個(gè)處理器和關(guān)聯(lián)存儲(chǔ)器。本文所使用的術(shù)語(yǔ)處理器和設(shè)備有時(shí)可以互換。

每個(gè)api執(zhí)行器模塊被映射到一個(gè)處理器(或使用相同的isa進(jìn)行操作的單組處理器或一個(gè)設(shè)備),如本文所述。每個(gè)api執(zhí)行器模塊特定于一種api類型。每個(gè)api執(zhí)行器模塊可以被映射到支持執(zhí)行器模塊的api類型的處理器。

現(xiàn)在參考圖3a,圖3a是根據(jù)本發(fā)明一些實(shí)施例的圖2的裝置200內(nèi)的附加可選模塊和/或?qū)ο蠼Y(jié)構(gòu)的框圖。附加模塊為程序員編寫程序提供統(tǒng)一接口,并根據(jù)統(tǒng)一對(duì)象與api執(zhí)行器模塊對(duì)象之間的映射將該統(tǒng)一接口映射到api執(zhí)行器模塊。統(tǒng)一執(zhí)行層304和api執(zhí)行器模塊210a-c提供分層框架,用于在各種異構(gòu)計(jì)算api上執(zhí)行api請(qǐng)求的操作。對(duì)象提供高級(jí)抽象以將由計(jì)算機(jī)程序發(fā)出的api請(qǐng)求映射到低級(jí)api,以在執(zhí)行環(huán)境的處理器內(nèi)執(zhí)行。

程序206,其包含可選地根據(jù)統(tǒng)一api302定義的api請(qǐng)求,由裝置200的統(tǒng)一執(zhí)行層304接收。統(tǒng)一層304包括一個(gè)或多個(gè)統(tǒng)一對(duì)象:統(tǒng)一存儲(chǔ)對(duì)象306a、統(tǒng)一操作對(duì)象306b和統(tǒng)一隊(duì)列對(duì)象306c。每個(gè)統(tǒng)一對(duì)象適應(yīng)于api請(qǐng)求,如根據(jù)api請(qǐng)求所包括的命令生成,和/或與api請(qǐng)求相關(guān)聯(lián)。

設(shè)備200的每個(gè)api執(zhí)行器模塊210a-c包括映射到統(tǒng)一執(zhí)行層304的對(duì)應(yīng)對(duì)象306a-c的以下對(duì)象308a-c中的一個(gè)或多個(gè):存儲(chǔ)對(duì)象308a、操作對(duì)象308b和隊(duì)列對(duì)象308c。每個(gè)對(duì)象308a-c根據(jù)相應(yīng)的api執(zhí)行器模塊210a-c來(lái)定義,例如根據(jù)與api執(zhí)行器模塊對(duì)應(yīng)的api類型來(lái)包含低級(jí)指令。可選地,每個(gè)對(duì)象根據(jù)與api執(zhí)行器模塊對(duì)應(yīng)的預(yù)定義isa進(jìn)行調(diào)整,例如根據(jù)isa定義的操作來(lái)生成,和/或具有根據(jù)isa的低級(jí)定義。

在統(tǒng)一執(zhí)行層和api執(zhí)行器模塊處的存儲(chǔ)對(duì)象是目標(biāo)執(zhí)行環(huán)境中例如在每個(gè)設(shè)備(即,與一個(gè)或多個(gè)處理器相關(guān)聯(lián))內(nèi),可用的存儲(chǔ)器的高級(jí)抽象。存儲(chǔ)對(duì)象描述數(shù)據(jù)格式和類型,例如10000個(gè)浮點(diǎn)數(shù)向量,以及包含50x50個(gè)浮點(diǎn)數(shù)的矩陣。使用存儲(chǔ)對(duì)象執(zhí)行抽象存儲(chǔ)器管理,例如,內(nèi)存分配、存儲(chǔ)器釋放和無(wú)用信息收集。

在統(tǒng)一執(zhí)行層和api執(zhí)行器模塊處的操作對(duì)象是在目標(biāo)執(zhí)行環(huán)境中,例如在每個(gè)設(shè)備內(nèi),運(yùn)行的程序代碼(即,api請(qǐng)求)的高級(jí)抽象。操作對(duì)象定義一個(gè)特定的函數(shù),例如排序或卷積。抽象代碼管理細(xì)節(jié)使用操作對(duì)象執(zhí)行,例如編譯、執(zhí)行和優(yōu)化。

在統(tǒng)一執(zhí)行層和api執(zhí)行器模塊處的隊(duì)列對(duì)象是目標(biāo)執(zhí)行環(huán)境,例如每個(gè)設(shè)備內(nèi),的操作調(diào)度的高級(jí)抽象。抽象操作執(zhí)行使用隊(duì)列對(duì)象執(zhí)行,例如同步或異步執(zhí)行、協(xié)調(diào)和依賴。

每個(gè)api執(zhí)行器模塊210a-c基于1:1映射來(lái)控制對(duì)應(yīng)的設(shè)備312a-c。每個(gè)設(shè)備312a-c包括可選地使用公共isa操作的一個(gè)或多個(gè)處理器。例如,設(shè)備312a包括一個(gè)或多個(gè)cpu314a,設(shè)備312b包括一個(gè)或多個(gè)gpu314b,設(shè)備312c包括一個(gè)或多個(gè)現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray,fpga)314c。設(shè)備312a-c組合形成異構(gòu)執(zhí)行環(huán)境。

裝置200的處理單元208控制api執(zhí)行器模塊210a-c以在相應(yīng)設(shè)備312a-c上執(zhí)行(使用統(tǒng)一api302從程序206接收的)命令。使用設(shè)備312a-c的isa,通過(guò)相關(guān)api316a-c,例如供應(yīng)商提供的api和/或定制的api來(lái)獲得控制。基于由控制api執(zhí)行器模塊210a-c定義的對(duì)象308a-c來(lái)實(shí)現(xiàn)控制。

裝置創(chuàng)建存儲(chǔ)對(duì)象、操作對(duì)象和隊(duì)列對(duì)象的較高抽象層。通過(guò)使用api的低級(jí)語(yǔ)言,裝置自動(dòng)向不同的低級(jí)api實(shí)現(xiàn)為程序員提供單一接口的高級(jí)操作對(duì)象(例如,排序、過(guò)濾、添加)。

裝置自動(dòng)分配不同的對(duì)象,在不同對(duì)象與api執(zhí)行器模塊之間進(jìn)行映射,并通過(guò)api模塊使用不同的較低級(jí)的api特定對(duì)象對(duì)高級(jí)命令執(zhí)行操作。

對(duì)象被分配,在統(tǒng)一執(zhí)行層和api執(zhí)行器模塊之間映射,并用于對(duì)數(shù)據(jù)執(zhí)行操作,如本文所述。通常,具有n個(gè)設(shè)備和/或處理器的系統(tǒng),統(tǒng)一執(zhí)行層的每個(gè)統(tǒng)一對(duì)象被映射到指定的api執(zhí)行器模塊子集上的m<n個(gè)對(duì)應(yīng)鏡像對(duì)象。

可以通過(guò)api請(qǐng)求在統(tǒng)一執(zhí)行層304處創(chuàng)建統(tǒng)一對(duì)象306a-c。在通過(guò)api請(qǐng)求和/或通過(guò)創(chuàng)建統(tǒng)一對(duì)象觸發(fā)的相關(guān)api執(zhí)行器模塊處自動(dòng)創(chuàng)建一組相應(yīng)的對(duì)象。在所有可用的api執(zhí)行器模塊上自動(dòng)創(chuàng)建隊(duì)列對(duì)象。在支持所請(qǐng)求的操作的api執(zhí)行器模塊的每個(gè)子集上自動(dòng)創(chuàng)建操作對(duì)象,例如,如參考圖5所述。

現(xiàn)參考圖3b,圖3b是根據(jù)本發(fā)明一些實(shí)施例的描繪存儲(chǔ)器操作綁定命令的傳播的示意圖。綁定命令從統(tǒng)一執(zhí)行層304自動(dòng)傳播到支持該操作的api執(zhí)行器210a和210b。

當(dāng)收到綁定存儲(chǔ)器api請(qǐng)求時(shí),會(huì)創(chuàng)建存儲(chǔ)對(duì)象。例如,綁定存儲(chǔ)命令為:setmemoryobjectaasarg2ofoperationk。綁定存儲(chǔ)命令包含將存儲(chǔ)對(duì)象綁定到操作對(duì)象的指令。一個(gè)或多個(gè)存儲(chǔ)對(duì)象306a在統(tǒng)一執(zhí)行層304處自動(dòng)生成,并根據(jù)綁定存儲(chǔ)命令綁定到操作對(duì)象306b。

綁定命令從統(tǒng)一執(zhí)行層304傳播到支持綁定命令包含中的操作(通過(guò)箭頭330a-b表示)的api執(zhí)行器模塊。在每個(gè)相關(guān)的api執(zhí)行器模塊上創(chuàng)建存儲(chǔ)對(duì)象308a。傳播綁定命令會(huì)自動(dòng)在每個(gè)相關(guān)的api執(zhí)行器模塊(使用支持綁定命令的低級(jí)api進(jìn)行操作)處執(zhí)行存儲(chǔ)器操作綁定。

現(xiàn)參考圖3c,圖3c是據(jù)本發(fā)明一些實(shí)施例的圖3a的存儲(chǔ)對(duì)象的數(shù)據(jù)結(jié)構(gòu)的示意圖。

統(tǒng)一存儲(chǔ)對(duì)象306a存在于統(tǒng)一執(zhí)行層304內(nèi),如參考圖3a所論述。執(zhí)行器存儲(chǔ)對(duì)象318a對(duì)應(yīng)于,例如,api執(zhí)行器模塊210a的存儲(chǔ)對(duì)象。執(zhí)行器存儲(chǔ)對(duì)象318b對(duì)應(yīng)于,例如,api執(zhí)行器模塊210b的存儲(chǔ)對(duì)象。例如但是意在限制,api執(zhí)行器模塊210a操作api,api執(zhí)行器模塊210b操作opencltm(開(kāi)放運(yùn)算語(yǔ)言)api。

包含統(tǒng)一執(zhí)行層存儲(chǔ)對(duì)象和api執(zhí)行器模塊存儲(chǔ)對(duì)象的一組存儲(chǔ)對(duì)象中的每個(gè)存儲(chǔ)對(duì)象包括公共部分320和特定部分322。公共部分320對(duì)于所有存儲(chǔ)對(duì)象都相同,均位于統(tǒng)一執(zhí)行層和每個(gè)api執(zhí)行器模塊處。特定部分322是針對(duì)每個(gè)存儲(chǔ)對(duì)象在統(tǒng)一執(zhí)行層和每個(gè)api執(zhí)行器模塊處定制的。通用和特定部分提供的設(shè)計(jì)既統(tǒng)一了通用功能,又提供了api特定的低級(jí)定義。

公共部分320定義了該組存儲(chǔ)對(duì)象的各個(gè)存儲(chǔ)對(duì)象成員共有的公共值類型和/或公共函數(shù)。

特定部分322在統(tǒng)一執(zhí)行層和api執(zhí)行器模塊層處提供不同的功能。在統(tǒng)一執(zhí)行層處,特定部分包括到每個(gè)api執(zhí)行器模塊的可用相關(guān)存儲(chǔ)對(duì)象的映射,例如通過(guò)箭頭324a和324b表示的指針陣列,箭頭324a和324b將api執(zhí)行器模塊存儲(chǔ)對(duì)象318a和318b映射到統(tǒng)一存儲(chǔ)對(duì)象306a。在api執(zhí)行器模塊層處,特定部分包含api特定的附加數(shù)據(jù)。特定部分322唯一地定義特定值類型和/或api特定函數(shù)調(diào)用。

氣球326a和326b描繪了內(nèi)存分配命令的示例,內(nèi)存分配命令在不同層處以及在不同的api執(zhí)行器模塊之間具有不同的實(shí)現(xiàn)方式。氣球326a是統(tǒng)一存儲(chǔ)對(duì)象306a的分配命令的示例實(shí)現(xiàn)方式,包含在每個(gè)api執(zhí)行器模塊的每個(gè)存儲(chǔ)對(duì)象處調(diào)用低級(jí)內(nèi)存分配指令列表的高級(jí)指令。氣球326b是api執(zhí)行器模塊210a的存儲(chǔ)器模塊318a的分配命令的示例實(shí)現(xiàn)方式,包含在對(duì)應(yīng)設(shè)備和/或處理器處執(zhí)行內(nèi)存分配命令的低級(jí)設(shè)備和/或api特定命令。

通過(guò)這種方式,公共部分允許計(jì)算機(jī)程序執(zhí)行抽象高級(jí)存儲(chǔ)命令(程序員可用),而不需要明確定義的低級(jí)實(shí)現(xiàn)細(xì)節(jié)。高級(jí)存儲(chǔ)命令自動(dòng)映射到低級(jí)命令,以在自動(dòng)選定的目標(biāo)設(shè)備上執(zhí)行。

現(xiàn)返回圖1,可選地,在102,可選地由處理單元208識(shí)別執(zhí)行環(huán)境214中可用的處理器212a-c。所識(shí)別的處理器可選地不相似,具有不同的isa。使用公共isa控制的處理器可以組織在一起,例如組織在設(shè)備中。

可選地,在104,可選地由處理單元208創(chuàng)建一組不同的api執(zhí)行器模塊210a-c。每個(gè)api執(zhí)行器模塊210a-c可以包括一組操作命令,和/或一組用于處理器和/或設(shè)備之一的各自isa的存儲(chǔ)對(duì)象。

可選地,在106,迭代方框102和塊104。迭代生成新的api執(zhí)行器模塊、移除不相關(guān)的舊api執(zhí)行器模塊和/或更新現(xiàn)有api執(zhí)行器模塊。可以在初始化時(shí)、系統(tǒng)啟動(dòng)時(shí)、周期性地和/或當(dāng)檢測(cè)到執(zhí)行環(huán)境發(fā)生變化時(shí)執(zhí)行迭代?;蛘撸蛄硗?,在計(jì)算機(jī)程序的運(yùn)行時(shí)初始化事件期間,例如根據(jù)輸入的變化(例如,輸入數(shù)據(jù)的不同類型和/或大小),和/或根據(jù)產(chǎn)生的結(jié)果的變化(例如計(jì)算結(jié)果的時(shí)間不可接受)來(lái)創(chuàng)建所述一組不同的api執(zhí)行器模塊。初始化事件可能會(huì)觸發(fā)新的執(zhí)行器模塊使用不同的處理器更有效地處理與計(jì)算機(jī)程序相關(guān)的變化。運(yùn)行時(shí)初始化根據(jù)執(zhí)行環(huán)境中可用的現(xiàn)有處理基礎(chǔ)設(shè)施生成api執(zhí)行器模塊。api執(zhí)行器模塊根據(jù)可用處理器的變化而生成,變化是例如添加新處理器和/或移除處理器。

可選地,處理單元208收集執(zhí)行環(huán)境214的運(yùn)行時(shí)數(shù)據(jù)。運(yùn)行時(shí)數(shù)據(jù)可以用于將api執(zhí)行器模塊中的一個(gè)與處理器中的一個(gè)相關(guān)聯(lián),例如新關(guān)聯(lián)、移除關(guān)聯(lián)或改變現(xiàn)有關(guān)聯(lián)。通過(guò)添加或撤銷與api執(zhí)行器模塊的關(guān)聯(lián),可以自動(dòng)實(shí)現(xiàn)執(zhí)行環(huán)境的更改,例如移除處理硬件或添加新的處理硬件。

可選地,api執(zhí)行器模塊根據(jù)處理器特性,如命令響應(yīng)時(shí)間、總體命令執(zhí)行時(shí)間和功耗,與相應(yīng)的處理器相關(guān)聯(lián)。該關(guān)聯(lián)可以提高處理器特性的性能。不同的api可以操作具有不同性能級(jí)別的處理器。通過(guò)考慮由匹配的api產(chǎn)生的處理器特性,api執(zhí)行器模塊被映射到處理器以提高系統(tǒng)性能。

現(xiàn)參考圖4,圖4是根據(jù)本發(fā)明一些實(shí)施例的用于識(shí)別執(zhí)行環(huán)境中的處理器并根據(jù)所識(shí)別的處理器生成api執(zhí)行器模塊的方法的流程圖。圖4的方法可以由圖2和/或圖3的裝置200執(zhí)行,可選地由統(tǒng)一執(zhí)行層304和/或處理單元208執(zhí)行。

可選地,在402,從硬編碼的列表等中檢索、從文件加載、自動(dòng)生成和/或手動(dòng)提供裝置200支持的api執(zhí)行器類型。

在404,可選地通過(guò)由支持設(shè)備查找存儲(chǔ)在裝置200中或與裝置200通信的模塊,來(lái)掃描執(zhí)行環(huán)境以識(shí)別處理器。處理器根據(jù)所支持的api執(zhí)行器類型被識(shí)別為受支持的設(shè)備。所支持的設(shè)備可以存儲(chǔ)在與裝置200通信的受支持的設(shè)備儲(chǔ)存庫(kù)406中。

條目414是存儲(chǔ)在存儲(chǔ)庫(kù)406內(nèi)的識(shí)別出的受支持設(shè)備條目的示例。條目414可以包含公共部分和執(zhí)行器特定部分。公共部分在高級(jí)別抽象地定義設(shè)備(例如,包括支持的api)。執(zhí)行器特定部分定義設(shè)備的低級(jí)特征,以便由api執(zhí)行器模塊進(jìn)行操作。

可選地,在408,所識(shí)別的設(shè)備被指定為可用于處理api請(qǐng)求?;蛘?,例如使用分類器,或根據(jù)一組規(guī)則,如根據(jù)設(shè)備可用性、設(shè)備效率閾值、設(shè)備使用成本閾值或其它因素,指定所識(shí)別的設(shè)備的子集,例如以包括實(shí)際可用的設(shè)備和/或最適合的設(shè)備。

在410,為每個(gè)指定的設(shè)備自動(dòng)創(chuàng)建api執(zhí)行器模塊??梢允褂脕?lái)自存儲(chǔ)庫(kù)406的設(shè)備信息來(lái)初始化api執(zhí)行器模塊。所生成的api執(zhí)行器模塊可以存儲(chǔ)在執(zhí)行器存儲(chǔ)庫(kù)412中。

現(xiàn)參考圖5,圖5是根據(jù)本發(fā)明一些實(shí)施例的用于映射api執(zhí)行器模塊支持的操作(此處也稱為操作命令)的方法的流程圖。圖5的方法可以由圖2和/或圖3的裝置200執(zhí)行,可選地由統(tǒng)一執(zhí)行層304和/或處理單元208執(zhí)行。

可選地,在502,每個(gè)生成的api執(zhí)行器模塊包括一組操作存儲(chǔ)(本文也稱為操作命令集合),操作存儲(chǔ)是例如從文件、從統(tǒng)一執(zhí)行層304傳遞來(lái)的硬編碼、從遠(yuǎn)程服務(wù)器和從手動(dòng)生成的列表檢索的。

該組操作命令對(duì)應(yīng)于接收到的api請(qǐng)求。

可選地,在504,每個(gè)api執(zhí)行器模塊被并行或依次逐個(gè)地加載到裝置200的存儲(chǔ)器中。api執(zhí)行器模塊可以從執(zhí)行器存儲(chǔ)庫(kù)506加載。

可選地,在508,每個(gè)api執(zhí)行器模塊并行或逐個(gè)地將其各自的操作存儲(chǔ)加載到裝置200的存儲(chǔ)器中??梢詮墓膊僮鞔鎯?chǔ)存儲(chǔ)庫(kù)510獲取操作存儲(chǔ)。

可選地,在512,每個(gè)api執(zhí)行器模塊的每個(gè)操作存儲(chǔ)執(zhí)行初始化過(guò)程以嘗試初始化操作存儲(chǔ)內(nèi)的操作。初始化的示例包括:編譯、資源分配和內(nèi)存分配。成功初始化的和/或分配的操作被識(shí)別出。應(yīng)注意的是,某些操作的初始化可能會(huì)失敗(這些操作隨后被排除可用),例如,內(nèi)存不足、編譯資源不可用或其它錯(cuò)誤。

在514,一組成功初始化和/或分配的操作與相應(yīng)的api執(zhí)行器模塊相關(guān)聯(lián),可選地存儲(chǔ)在執(zhí)行器操作存儲(chǔ)庫(kù)516中。

可選地,操作存儲(chǔ)中的一組操作命令中的操作命令通過(guò)指示相應(yīng)api請(qǐng)求的簽名,可選地通過(guò)操作名稱和/或操作參數(shù),相關(guān)聯(lián)和/或識(shí)別。簽名表示提供了操作命令的抽象表示。不同的低級(jí)api可以有區(qū)別地實(shí)現(xiàn)相同的高級(jí)簽名表示。api請(qǐng)求可以根據(jù)簽名表示,例如使用由簽名定義的語(yǔ)法中的(一組操作命令中的)操作命令編寫的源代碼,來(lái)定義。

為每個(gè)操作和/或每個(gè)api執(zhí)行器模塊迭代方框508-514。

在518,對(duì)每個(gè)api執(zhí)行器模塊的可用操作進(jìn)行編譯,例如組織和/或總結(jié)。處理單元208和/或統(tǒng)一執(zhí)行層304可訪問(wèn)可用的操作,以決定如何將接收到的api請(qǐng)求映射到api執(zhí)行器模塊。

表520是存儲(chǔ)每個(gè)api執(zhí)行器類型的可用操作的數(shù)據(jù)結(jié)構(gòu)的示例。列522列出了可用操作的簽名。例如,api執(zhí)行器模塊a、b和c支持浮點(diǎn)數(shù)和整數(shù)的排序,而api執(zhí)行器模塊c和d支持整數(shù)的乘法運(yùn)算。

現(xiàn)參考圖6,圖6是根據(jù)本發(fā)明一些實(shí)施例的描繪高級(jí)api請(qǐng)求從執(zhí)行的計(jì)算機(jī)程序到用于在目標(biāo)設(shè)備和/或處理器上執(zhí)行的低級(jí)api指令的映射的示意圖。

行602中的塊描繪了應(yīng)用發(fā)出的創(chuàng)建存儲(chǔ)對(duì)象的api請(qǐng)求的映射。api請(qǐng)求映射到統(tǒng)一執(zhí)行層處的統(tǒng)一存儲(chǔ)對(duì)象,該存儲(chǔ)對(duì)象映射到可用的api執(zhí)行程序模塊處的兩個(gè)存儲(chǔ)對(duì)象。每個(gè)api執(zhí)行器模塊使用不同的低級(jí)api來(lái)操作目標(biāo)設(shè)備和/或處理器。

行604中的塊描繪了創(chuàng)建隊(duì)列的api請(qǐng)求的類似映射。

行606中的塊描繪了創(chuàng)建操作指令的api請(qǐng)求的類似映射。值得注意的是,統(tǒng)一執(zhí)行層處的統(tǒng)一操作對(duì)象映射到能夠執(zhí)行所請(qǐng)求的操作的api執(zhí)行器模塊,如與限定可用操作的低級(jí)命令的每個(gè)api執(zhí)行器模塊相關(guān)聯(lián)的低級(jí)操作存儲(chǔ)所定義。

現(xiàn)返回參考圖1,在108,裝置200的接口202接收一個(gè)或一系列api請(qǐng)求204。

api請(qǐng)求可以從在執(zhí)行環(huán)境214中執(zhí)行的計(jì)算機(jī)程序206(例如,應(yīng)用)接收??蛇x地,處理單元208管理一個(gè)或多個(gè)統(tǒng)一執(zhí)行層隊(duì)列對(duì)象306c中的序列。序列可以包括放置在統(tǒng)一隊(duì)列對(duì)象中的統(tǒng)一操作(來(lái)自可用的統(tǒng)一操作對(duì)象)。

可選地,處理單元208將接收到的序列劃分為多個(gè)隊(duì)列。或者,或另外,每個(gè)隊(duì)列的結(jié)尾由api請(qǐng)求定義。

每一個(gè)隊(duì)列可映射到一組生成的api執(zhí)行器模塊中的一個(gè)不同的api執(zhí)行器模塊并由該api執(zhí)行器模塊處理??梢愿鶕?jù)支持序列中的操作命令的api執(zhí)行器模塊來(lái)執(zhí)行映射。可以識(shí)別能夠執(zhí)行每個(gè)隊(duì)列中的所有操作的api執(zhí)行器模塊(以便能夠完成隊(duì)列內(nèi)的全套命令)。指定用于處理隊(duì)列的api執(zhí)行器模塊可以可選地根據(jù)決策模塊,例如分類器或一組規(guī)則,從所識(shí)別的集合(或從完整集合)中選擇。決策模塊可以例如根據(jù)設(shè)備上的對(duì)象可用性(例如,在存儲(chǔ)器可用性和/或隊(duì)列空間方面)、處理成本,運(yùn)行時(shí)統(tǒng)計(jì)信息和/或其它度量來(lái)做出決定。

用于處理各個(gè)隊(duì)列的api執(zhí)行器模塊的選擇提高了系統(tǒng)性能,因?yàn)椴煌腶pi執(zhí)行器模塊可以處理具有不同性能級(jí)別的不同隊(duì)列。可以為每個(gè)隊(duì)列選擇性能最好的api執(zhí)行器模塊。裝置自動(dòng)劃分序列,并為序列的不同部分指定和使用不同的api執(zhí)行器模塊,而未必需要程序員劃分序列。

在110,目標(biāo)api執(zhí)行器模塊執(zhí)行api請(qǐng)求序列的隊(duì)列。api執(zhí)行器模塊將隊(duì)列中的命令映射到基于低級(jí)api的指令中,這些指令在對(duì)應(yīng)目標(biāo)處理器上操作。從統(tǒng)一對(duì)象到本地api執(zhí)行器模塊對(duì)象的映射允許將高級(jí)抽象api請(qǐng)求選擇性地映射到不同的低級(jí)api指令。

處理單元208使用一組指定的api執(zhí)行器模塊中的每一個(gè)的各組操作命令來(lái)執(zhí)行各個(gè)子序列。如果適用,子序列可以并行地、依次按順序地和/或不按順序地執(zhí)行??蛇x地,例如當(dāng)子序列包括高級(jí)內(nèi)存命令,根據(jù)統(tǒng)一執(zhí)行層的統(tǒng)一執(zhí)行存儲(chǔ)對(duì)象與各個(gè)相應(yīng)api執(zhí)行器模塊的一組存儲(chǔ)對(duì)象之間的關(guān)聯(lián),來(lái)指導(dǎo)在各個(gè)相應(yīng)的api執(zhí)行器模塊處執(zhí)行各個(gè)子序列?;蛘呋蛄硗猓绠?dāng)子序列包括高級(jí)操作命令時(shí),根據(jù)統(tǒng)一執(zhí)行層的統(tǒng)一執(zhí)行操作命令與各個(gè)相應(yīng)的api執(zhí)行器模塊的一組操作命令之間的關(guān)聯(lián)來(lái)指導(dǎo)執(zhí)行。綁定命令可以根據(jù)操作與存儲(chǔ)對(duì)象之間傳播的綁定來(lái)執(zhí)行,如本文所述。

統(tǒng)一執(zhí)行存儲(chǔ)對(duì)象與該組不同的api執(zhí)行器模塊中的每一個(gè)的一組存儲(chǔ)對(duì)象中的成員相關(guān)聯(lián)。每個(gè)統(tǒng)一執(zhí)行操作命令與該組不同的api執(zhí)行器模塊中的每一個(gè)的一組操作命令中的成員相關(guān)聯(lián)。

所述一組指定的api執(zhí)行器模塊中的每一個(gè)的相應(yīng)一組操作命令和/或一組存儲(chǔ)對(duì)象用于指示不同處理器中的一個(gè)來(lái)執(zhí)行api請(qǐng)求序列的每個(gè)子序列。api執(zhí)行器模塊以對(duì)應(yīng)api的語(yǔ)法來(lái)生成低級(jí)命令,低級(jí)命令用于指示對(duì)應(yīng)的處理器。

現(xiàn)參考圖7,圖7是描繪用于將接收的api請(qǐng)求的序列映射到用于指示執(zhí)行環(huán)境中的目標(biāo)設(shè)備上的執(zhí)行的低級(jí)api的模塊和/或?qū)ο笾g的數(shù)據(jù)流的示例的示意圖,如本文所述。

在702,在執(zhí)行環(huán)境中執(zhí)行的計(jì)算機(jī)程序(例如,應(yīng)用程序)向統(tǒng)一執(zhí)行層的一個(gè)或多個(gè)統(tǒng)一隊(duì)列提供api請(qǐng)求序列。api請(qǐng)求包括根據(jù)子序列組織的一系列操作。每個(gè)子序列的結(jié)尾可以由應(yīng)用定義,和/或由統(tǒng)一執(zhí)行層自動(dòng)定義。

在704,統(tǒng)一執(zhí)行層可以將調(diào)度標(biāo)記應(yīng)用于統(tǒng)一隊(duì)列中的操作以識(shí)別子序列。

如本文所述,每個(gè)子序列由統(tǒng)一執(zhí)行層映射到api執(zhí)行器模塊之一。

如本文所述,將綁定到子序列中的操作的統(tǒng)一存儲(chǔ)對(duì)象映射或復(fù)制到指定的api執(zhí)行器模塊的存儲(chǔ)對(duì)象。

在706,將每個(gè)映射的子序列提供(例如,復(fù)制)給對(duì)應(yīng)的指定api執(zhí)行器模塊的本地執(zhí)行器隊(duì)列。來(lái)自統(tǒng)一層的統(tǒng)一存儲(chǔ)對(duì)象的數(shù)據(jù)可以被提供(例如,復(fù)制)給每個(gè)對(duì)應(yīng)的指定api執(zhí)行器模塊的存儲(chǔ)對(duì)象。

在708,指定的api執(zhí)行器模塊使用其關(guān)聯(lián)的操作存儲(chǔ)來(lái)執(zhí)行執(zhí)行器隊(duì)列中的操作。api執(zhí)行器模塊可以調(diào)用操作存儲(chǔ),從而傳遞本地隊(duì)列中的操作和任何已綁定的存儲(chǔ)對(duì)象。

在710,存儲(chǔ)在本地操作存儲(chǔ)中的操作代碼訪問(wèn)api運(yùn)行時(shí)環(huán)境以執(zhí)行相應(yīng)設(shè)備上的代碼。在設(shè)備上生成并執(zhí)行低級(jí)api定義的指令。

對(duì)本發(fā)明各個(gè)實(shí)施例的描述只是為了說(shuō)明的目的,而這些描述并不旨在窮舉或限于所公開(kāi)的實(shí)施例。在不脫離所描述的實(shí)施例的范圍和精神的情況下,本領(lǐng)域技術(shù)人員可以清楚理解許多修改和變化。相比于市場(chǎng)上可找到的技術(shù),選擇此處使用的術(shù)語(yǔ)可最好地解釋本實(shí)施例的原理、實(shí)際應(yīng)用或技術(shù)進(jìn)步,或使本領(lǐng)域其他技術(shù)人員理解此處公開(kāi)的實(shí)施例。

預(yù)期在從本申請(qǐng)開(kāi)始走向成熟的專利的生命周期中,將會(huì)開(kāi)發(fā)出許多相關(guān)處理器和應(yīng)用編程接口,術(shù)語(yǔ)中間表示、處理器和api的范圍旨在包括所有這類先驗(yàn)新技術(shù)。在從該應(yīng)用成熟的專利期間,將開(kāi)發(fā)許多相關(guān)處理器和應(yīng)用編程接口,并且術(shù)語(yǔ)處理器和api的范圍旨在將所有這些新技術(shù)包括在內(nèi)。

本文所用的術(shù)語(yǔ)“約”是指±10%。

術(shù)語(yǔ)“包括”以及“有”表示“包括但不限于”。這個(gè)術(shù)語(yǔ)包括了術(shù)語(yǔ)“由……組成”以及“本質(zhì)上由……組成”。

短語(yǔ)“基本上由……組成”是指構(gòu)造或方法可包括額外的材料和/或步驟,但前提是額外的材料和/或步驟不會(huì)實(shí)質(zhì)上改變所要求保護(hù)的構(gòu)造或方法的基本和新穎特征。

除非上下文中另有明確說(shuō)明,此處使用的單數(shù)形式“一個(gè)”和“所述”包括復(fù)數(shù)含義。例如,術(shù)語(yǔ)“一個(gè)復(fù)合物”或“至少一個(gè)復(fù)合物”可以包括多個(gè)復(fù)合物,包括其混合物。

此處使用的詞“示例性的”表示“作為一個(gè)例子、示例或說(shuō)明”。任何“示例性的”實(shí)施例并不一定理解為優(yōu)先于或優(yōu)越于其它實(shí)施例,和/或并不排除其它實(shí)施例特點(diǎn)的結(jié)合。

此處使用的詞語(yǔ)“可選地”表示“在一些實(shí)施例中提供且在其它實(shí)施例中沒(méi)有提供”。本發(fā)明的任意特定的實(shí)施例可以包括多個(gè)“可選的”特征,除非這些特征相互矛盾。

在整個(gè)本申請(qǐng)案中,本發(fā)明的各種實(shí)施例可以范圍格式呈現(xiàn)。應(yīng)理解,范圍格式的描述僅為了方便和簡(jiǎn)潔起見(jiàn),并且不應(yīng)該被解釋為對(duì)本發(fā)明范圍的固定限制。因此,對(duì)范圍的描述應(yīng)被認(rèn)為是已經(jīng)具體地公開(kāi)所有可能的子范圍以及所述范圍內(nèi)的個(gè)別數(shù)值。例如,對(duì)例如從1到6的范圍的描述應(yīng)被認(rèn)為是已經(jīng)具體地公開(kāi)子范圍,例如從1到3、從1到4、從1到5、從2到4、從2到6、從3到6等,以及所述范圍內(nèi)的個(gè)別數(shù)字,例如1、2、3、4、5和6。不管范圍的寬度如何,這都適用。

當(dāng)此處指出一個(gè)數(shù)字范圍時(shí),表示包括了在指出的這個(gè)范圍內(nèi)的任意所列舉的數(shù)字(分?jǐn)?shù)或整數(shù))。短語(yǔ)“在第一個(gè)所指示的數(shù)和第二個(gè)所指示的數(shù)范圍內(nèi)”以及“從第一個(gè)所指示的數(shù)到第二個(gè)所指示的數(shù)范圍內(nèi)”和在這里互換使用,表示包括第一個(gè)和第二個(gè)所指示的數(shù)以及二者之間所有的分?jǐn)?shù)和整數(shù)。

單個(gè)實(shí)施例也可以提供某些特征的組合,這些特征在各個(gè)實(shí)施例正文中有簡(jiǎn)短的描述。相反地,本發(fā)明的各個(gè)特征在單個(gè)實(shí)施例的正文中有簡(jiǎn)短的描述,也可以分別提供這些特征或任何適合的子組合或者作為本發(fā)明所述的任何合適的其它實(shí)施例。不可認(rèn)為各個(gè)實(shí)施例的正文中描述的某些特征是這些實(shí)施例的必要特征,除非沒(méi)有這些元素,該實(shí)施例無(wú)效。

此處,本說(shuō)明書中提及的所有出版物、專利和專利說(shuō)明書都通過(guò)引用本說(shuō)明書結(jié)合在本說(shuō)明書中,同樣,每個(gè)單獨(dú)的出版物、專利或?qū)@f(shuō)明書也具體且單獨(dú)地結(jié)合在此。此外,對(duì)本申請(qǐng)的任何參考的引用或識(shí)別不可當(dāng)做是允許這樣的參考在現(xiàn)有技術(shù)中優(yōu)先于本發(fā)明。就使用節(jié)標(biāo)題而言,不應(yīng)該將節(jié)標(biāo)題理解成必要的限定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
汤阴县| 福贡县| 彭州市| 肃北| 乌海市| 新绛县| 云浮市| 武陟县| 砚山县| 永吉县| 云浮市| 保定市| 吉首市| 开化县| 察雅县| 成武县| 平江县| 桦南县| 民勤县| 青龙| 琼海市| 武穴市| 岳西县| 肥乡县| 乌海市| 蓝田县| 宝应县| 措美县| 峨眉山市| 赫章县| 邢台市| 保靖县| 仪陇县| 乳山市| 长泰县| 金昌市| 嘉峪关市| 龙江县| 新田县| 广丰县| 凉山|