本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種用于選擇程序?qū)嵤┓绞降南到y(tǒng)和方法。
背景技術(shù):
本發(fā)明在其一些實(shí)施例中涉及用于高級計(jì)算機(jī)程序代碼的優(yōu)化編譯的系統(tǒng)和方法,更具體地但非唯一地,涉及用于高級計(jì)算機(jī)程序代碼的運(yùn)行時(shí)優(yōu)化的系統(tǒng)和方法。
由于程序設(shè)計(jì)員的工作效率和績效較高,所以高級語言對于源代碼的編寫變得越來越重要。編譯器將高級語言形式的抽象數(shù)據(jù)結(jié)構(gòu)映射到目標(biāo)機(jī)可執(zhí)行指令形式的低級數(shù)據(jù)實(shí)施方式。編譯器執(zhí)行優(yōu)化,力圖提高目標(biāo)機(jī)可執(zhí)行指令的性能。
在從高級源代碼為目標(biāo)執(zhí)行環(huán)境生成高性能機(jī)器可執(zhí)行代碼的過程中尋求更多的改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種用于選擇同構(gòu)專業(yè)化以在執(zhí)行環(huán)境中執(zhí)行的裝置、系統(tǒng)、計(jì)算機(jī)程序產(chǎn)品和方法。
前述和其它目標(biāo)通過獨(dú)立權(quán)利要求的特征來實(shí)現(xiàn)。其它實(shí)施形式從從屬權(quán)利要求、描述內(nèi)容和附圖中顯而易見。
根據(jù)第一方面,提供了一種用于選擇多種同構(gòu)專業(yè)化中的一種同構(gòu)專業(yè)化的裝置,包括:數(shù)據(jù)接口,用于接收供程序處理的輸入值;以及選擇模塊,用于:從多種同構(gòu)專業(yè)化中選擇所述程序的一種同構(gòu)專業(yè)化以對所述輸入值進(jìn)行處理,所述選擇基于所述多種同構(gòu)專業(yè)化中的每種同構(gòu)專業(yè)化的性能指標(biāo),其中,每種同構(gòu)專業(yè)化在執(zhí)行環(huán)境中有不同的實(shí)施方式,并且每種同構(gòu)專業(yè)化在處理所述輸入值時(shí)產(chǎn)生相同的結(jié)果;以及提供表明所述選定的同構(gòu)專業(yè)化的消息。
同構(gòu)專業(yè)化的選擇基于實(shí)際接收到的輸入而動態(tài)執(zhí)行,而不是一種先驗(yàn)靜態(tài)選擇,這可能導(dǎo)致選擇一種不同的同構(gòu)專業(yè)化用于程序執(zhí)行并提高性能。當(dāng)提供了不同值時(shí),可為同一輸入選擇不同的同構(gòu)專業(yè)化。同構(gòu)數(shù)據(jù)類型和同構(gòu)表示可通過一種通用方式應(yīng)用到抽象數(shù)據(jù)結(jié)構(gòu),從而支持程序設(shè)計(jì)員專注于編寫高級代碼而無需考慮執(zhí)行實(shí)施方式。
根據(jù)所述第一方面,在所述裝置的第一可能實(shí)施方式中,所述輸入值是多種同構(gòu)數(shù)據(jù)類型中的第一數(shù)據(jù)類型;每種所述同構(gòu)數(shù)據(jù)類型存儲相等的值并且可與其它所述同構(gòu)數(shù)據(jù)類型互換;每種同構(gòu)專業(yè)化基于所述輸入值的抽象數(shù)據(jù)類型中的一種對應(yīng)同構(gòu)數(shù)據(jù)類型。
數(shù)據(jù)類型和對應(yīng)的同構(gòu)專業(yè)化的不同實(shí)施方式不限于固有定義。應(yīng)用程序設(shè)計(jì)員等可改變、定制和設(shè)計(jì)同構(gòu)數(shù)據(jù)類型。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第二可能實(shí)施形式中,所述裝置還包括轉(zhuǎn)換矩陣,用于:基于所述選定的同構(gòu)專業(yè)化將所述輸入值的第一數(shù)據(jù)類型轉(zhuǎn)換為第二數(shù)據(jù)類型,以便通過所述選定的同構(gòu)專業(yè)化處理所述輸入值。
輸入數(shù)據(jù)的數(shù)據(jù)類型實(shí)施方式不限制同構(gòu)專業(yè)化的選擇。(在程序?qū)崟r(shí)執(zhí)行期間)執(zhí)行輸入數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換,以通過支持使用可用的同構(gòu)專業(yè)化來提高性能。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第三可能實(shí)施形式中,所述選擇模塊還用于:針對所述輸入值計(jì)算抽象指標(biāo)的抽象指標(biāo)值,所述抽象指標(biāo)針對所述輸入值的多種同構(gòu)數(shù)據(jù)類型中的每種同構(gòu)數(shù)據(jù)類型具有相同的抽象指標(biāo)值;以及訪問性能數(shù)據(jù)集,以基于與所述計(jì)算出的抽象指標(biāo)值和所述輸入值的第一數(shù)據(jù)類型的相關(guān)性來選擇所述同構(gòu)專業(yè)化。
抽象指標(biāo)支持訪問性能數(shù)據(jù)集以在不受限于輸入的數(shù)據(jù)類型實(shí)施方式的情況下選擇最佳同構(gòu)專業(yè)化。
根據(jù)所述第一方面的所述第三實(shí)施形式,在所述裝置的第四可能實(shí)施形式中,所述抽象指標(biāo)被劃分為覆蓋所述抽象指標(biāo)的可能值的多個(gè)不重疊級別;所述選擇模塊還用于:計(jì)算用于將所述計(jì)算出的抽象指標(biāo)映射到所述多個(gè)級別中的一個(gè)級別的分級函數(shù);以及訪問所述性能數(shù)據(jù)集以基于與所述級別和所述第一數(shù)據(jù)類型的相關(guān)性來選擇所述同構(gòu)專業(yè)化。
根據(jù)所述第一方面的所述第三或第四實(shí)施形式,在所述裝置的第五可能實(shí)施形式中,所述選擇模塊還用于:接收用于計(jì)算所述抽象指標(biāo)值的函數(shù)的多種專業(yè)化,所述函數(shù)的所述多種專業(yè)化中的每種專業(yè)化基于所述同構(gòu)數(shù)據(jù)類型中的一種不同的數(shù)據(jù)類型;以及通過應(yīng)用與所述第一數(shù)據(jù)類型對應(yīng)的所述函數(shù)的所述多種專業(yè)化的一個(gè)函數(shù),計(jì)算所述抽象指標(biāo)值。
根據(jù)所述第一方面的所述第三、第四或第五實(shí)施形式,在所述裝置的第六可能實(shí)施形式中,所述裝置還包括用于生成所述性能數(shù)據(jù)集的模擬模塊,所述模擬模塊用于:為所述程序輸入定義抽象指標(biāo),所述抽象指標(biāo)針對所述程序輸入的多種同構(gòu)數(shù)據(jù)類型中的每種同構(gòu)數(shù)據(jù)類型具有相同的抽象指標(biāo)值,所述抽象指標(biāo)被劃分為覆蓋所述抽象指標(biāo)的可能值的多個(gè)不重疊級別;接收一組測試數(shù)據(jù),所述測試數(shù)據(jù)的每個(gè)成員實(shí)施為所述多種同構(gòu)數(shù)據(jù)類型中的對應(yīng)數(shù)據(jù)類型;以及通過將在所述執(zhí)行環(huán)境中處理所述測試數(shù)據(jù)的所述成員時(shí)具有最佳性能指標(biāo)的同構(gòu)專業(yè)化與所述成員的級別以及所述成員的數(shù)據(jù)類型關(guān)聯(lián),來生成所述性能數(shù)據(jù)集。
性能數(shù)據(jù)集基于基準(zhǔn)測試,基準(zhǔn)測試可支持用來表示可用實(shí)際數(shù)據(jù)的全頻譜的測試數(shù)據(jù)的小子集。
根據(jù)所述第一方面的所述第六實(shí)施形式,在所述裝置的第七可能實(shí)施形式中,所述模擬模塊用于:針對所述一組測試數(shù)據(jù)中的每個(gè)成員:基于計(jì)算出的抽象指標(biāo)從所述多個(gè)級別中指定一個(gè)級別,將所述成員的所述對應(yīng)數(shù)據(jù)類型轉(zhuǎn)換為所述多種同構(gòu)數(shù)據(jù)類型中的每種其它同構(gòu)數(shù)據(jù)類型,通過使用每種對應(yīng)的同構(gòu)專業(yè)化進(jìn)行處理來為具有所述多種同構(gòu)專業(yè)化的各個(gè)實(shí)例的所述成員計(jì)算性能指標(biāo),以及從所述多種同構(gòu)專業(yè)化中選擇具有最佳性能指標(biāo)的同構(gòu)專業(yè)化。
性能數(shù)據(jù)集通過以下操作生成:測量數(shù)據(jù)輸入與同構(gòu)專業(yè)化的每種可能組合的性能,并選擇最佳結(jié)果。性能數(shù)據(jù)集考慮了將輸入的數(shù)據(jù)類型轉(zhuǎn)換為其它數(shù)據(jù)類型的可能性,以支持在必要時(shí)選擇其它同構(gòu)專業(yè)化來實(shí)現(xiàn)更好的性能。
根據(jù)所述第一方面的所述第六或第七實(shí)施形式,在所述裝置的第八可能實(shí)施形式中,選擇所述測試數(shù)據(jù)的值以表示實(shí)際的預(yù)期輸入數(shù)據(jù),選擇所述測試數(shù)據(jù)值的所述對應(yīng)數(shù)據(jù)類型以表示典型的預(yù)期數(shù)據(jù)類型。
測試數(shù)據(jù)可基于場景,反映同一目標(biāo)執(zhí)行環(huán)境下的實(shí)際數(shù)據(jù)輸入和實(shí)際性能。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第九可能實(shí)施形式中,所述選擇模塊還用于執(zhí)行所述同構(gòu)專業(yè)化的所述選擇以在運(yùn)行時(shí)處理所述輸入值。
對于數(shù)據(jù)自動提供的情況(例如,聯(lián)機(jī)和/或非交互),實(shí)時(shí)執(zhí)行運(yùn)行時(shí)選擇。實(shí)時(shí)執(zhí)行為實(shí)際提供的數(shù)據(jù)選擇同構(gòu)專業(yè)化。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第十可能實(shí)施形式中,所述性能指標(biāo)是從包含以下成員的組中選擇的一個(gè)成員:處理時(shí)間,以及內(nèi)存需求。
可選擇性能指標(biāo)來反映在指定同構(gòu)專業(yè)化時(shí)最重要的系統(tǒng)參數(shù)。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第十一可能實(shí)施形式中,所述裝置包括同構(gòu)專業(yè)化模塊,用于:接收以高級編程語言編寫的所述程序的源代碼,所述源代碼包括所述輸入值的抽象數(shù)據(jù)類型;接收針對所述抽象數(shù)據(jù)類型的多種同構(gòu)數(shù)據(jù)類型;以及針對所述多種同構(gòu)數(shù)據(jù)類型中的每種同構(gòu)數(shù)據(jù)類型,基于所述源代碼以低級語言生成一種對應(yīng)的同構(gòu)專業(yè)化。
同構(gòu)專業(yè)化基于所定義的同構(gòu)數(shù)據(jù)類型自動生成。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第十二可能實(shí)施形式中,將所述選擇模塊應(yīng)用于提供給所述程序的程序輸入的各個(gè)實(shí)例,所述程序在所述執(zhí)行環(huán)境中執(zhí)行。
在為同一程序輸入的不同實(shí)例提供了不同的數(shù)據(jù)類型時(shí),可選擇不同的同構(gòu)專業(yè)化。
根據(jù)如上所述第一方面或根據(jù)所述第一方面的任一前述實(shí)施方式,在所述裝置的第十三可能實(shí)施形式中,提供了一種用于選擇多種同構(gòu)專業(yè)化中的一種同構(gòu)專業(yè)化的方法,包括:接收供程序處理的輸入值;從多種同構(gòu)專業(yè)化中選擇所述程序的一種同構(gòu)專業(yè)化以對所述輸入值進(jìn)行處理,所述選擇基于所述多種同構(gòu)專業(yè)化中的處理所述輸入值的每種同構(gòu)專業(yè)化的性能指標(biāo),其中,每種同構(gòu)專業(yè)化在執(zhí)行環(huán)境中有不同的實(shí)施方式,并且每種同構(gòu)專業(yè)化在處理所述輸入值時(shí)產(chǎn)生相同的結(jié)果;以及提供表明所述選定的同構(gòu)專業(yè)化的消息,其中所述方法尤其適用于操作根據(jù)前述實(shí)時(shí)方式之一的裝置。
根據(jù)所述第一方面的前述實(shí)施形式,在所述裝置的第十四可能實(shí)施形式中,提供了一種計(jì)算機(jī)程序,當(dāng)在計(jì)算機(jī)上執(zhí)行時(shí),所述計(jì)算機(jī)程序執(zhí)行前述方法。
除非另外限定,否則本文所使用的所有技術(shù)術(shù)語和/或科學(xué)術(shù)語均具有本發(fā)明所涉及的本領(lǐng)域的普通技術(shù)人員共同理解的相同意思。雖然類似于或等同于本文所描述的那些方法和材料可以使用在本發(fā)明的實(shí)施例的實(shí)踐中或測試中,但是以下描述了示例性方法和/或材料。在有沖突的情況下,以包括定義的專利說明書為準(zhǔn)。此外,材料、方法和示例僅僅是示例性的并不旨在有必要地進(jìn)行限制。
附圖說明
此處僅作為示例,結(jié)合附圖描述了本發(fā)明的一些實(shí)施例。現(xiàn)在具體結(jié)合附圖,需要強(qiáng)調(diào)的是所示的項(xiàng)目作為示例,為了說明性地討論本發(fā)明的實(shí)施例。這樣,根據(jù)附圖說明,如何實(shí)踐本發(fā)明實(shí)施例對本領(lǐng)域技術(shù)人員而言是顯而易見的。
在附圖中:
圖1是根據(jù)本發(fā)明一些實(shí)施例的用于基于最佳性能指標(biāo)為計(jì)算機(jī)程序的輸入選擇同構(gòu)專業(yè)化的方法的流程圖;
圖2是根據(jù)本發(fā)明一些實(shí)施例的包括適用于基于最佳性能指標(biāo)為計(jì)算機(jī)程序的輸入選擇同構(gòu)專業(yè)化的裝置的系統(tǒng)的組件方框圖;
圖3是根據(jù)本發(fā)明一些實(shí)施例的用于自動生成同構(gòu)專業(yè)化的方法的流程圖;
圖4a至4b是根據(jù)本發(fā)明一些實(shí)施例的描繪數(shù)據(jù)類型的替代性同構(gòu)表示的示意圖;
圖5是根據(jù)本發(fā)明一些實(shí)施例的用于基于抽象數(shù)據(jù)類型和相關(guān)同構(gòu)數(shù)據(jù)表示來自動生成同構(gòu)專業(yè)化的方法的流程圖;
圖6是根據(jù)本發(fā)明一些實(shí)施例的描繪同構(gòu)專業(yè)化的生成的圖形表示;
圖7是根據(jù)本發(fā)明一些實(shí)施例的描繪在使用不同的同構(gòu)數(shù)據(jù)類型進(jìn)行處理時(shí)具有不同的性能指標(biāo)的輸入抽象指標(biāo)的數(shù)據(jù)集;
圖8是根據(jù)本發(fā)明一些實(shí)施例的用于生成性能數(shù)據(jù)集的方法的流程圖;
圖9是根據(jù)本發(fā)明一些實(shí)施例的基于圖2的系統(tǒng)的和/或用于執(zhí)行圖1的方法的系統(tǒng)架構(gòu)的一個(gè)示例的方框圖。
具體實(shí)施方式
本發(fā)明在其一些實(shí)施例中涉及用于高級計(jì)算機(jī)程序代碼的優(yōu)化編譯的系統(tǒng)和方法,更具體地但非唯一地,涉及用于高級計(jì)算機(jī)程序代碼的運(yùn)行時(shí)優(yōu)化的系統(tǒng)和方法。
本發(fā)明一些實(shí)施例的一個(gè)方面涉及選擇模塊,其執(zhí)行多種同構(gòu)專業(yè)化中的一種同構(gòu)專業(yè)化的運(yùn)行時(shí)選擇以處理計(jì)算機(jī)程序的輸入數(shù)據(jù)值??蛇x地,同構(gòu)專業(yè)化基于測試數(shù)據(jù)的模擬性能的性能數(shù)據(jù)集選擇,測試數(shù)據(jù)使用輸入的不同可能數(shù)據(jù)類型表示來模擬可能的輸入值。數(shù)據(jù)集包含每種不同的數(shù)據(jù)類型在目標(biāo)執(zhí)行環(huán)境內(nèi)通過對應(yīng)的同構(gòu)專業(yè)化實(shí)施方式進(jìn)行處理后的執(zhí)行結(jié)果,可選地基于基準(zhǔn)測試。每種不同的同構(gòu)專業(yè)化針對同一測試值的不同數(shù)據(jù)類型提供相同的結(jié)果值,但是處于不同的性能水平。選擇模塊基于最佳性能水平(例如,最高或最低性能指標(biāo)值)為在運(yùn)行時(shí)收到的輸入值選擇同構(gòu)專業(yè)化實(shí)施方式,以在執(zhí)行環(huán)境內(nèi)實(shí)現(xiàn)最佳和/或改進(jìn)的性能。選擇模塊可在裝置內(nèi)、系統(tǒng)內(nèi)實(shí)施,可實(shí)施為計(jì)算機(jī)程序產(chǎn)品,和/或可在系統(tǒng)內(nèi)實(shí)施,如本文所述。
可選地,選定的同構(gòu)專業(yè)化實(shí)施方式處理與所收到的輸入數(shù)據(jù)值的原始數(shù)據(jù)類型表示不同的數(shù)據(jù)類型表示。輸入數(shù)據(jù)值的原始數(shù)據(jù)類型(基于對應(yīng)的選定同構(gòu)專業(yè)化)被轉(zhuǎn)換為存儲同一輸入數(shù)據(jù)值的新選定數(shù)據(jù)類型,以便通過選定的同構(gòu)專業(yè)化進(jìn)行處理。
可選地,性能數(shù)據(jù)集基于在執(zhí)行環(huán)境中評估的測試數(shù)據(jù)項(xiàng)自動生成。測試數(shù)據(jù)的每個(gè)成員被轉(zhuǎn)換為每種其它可用的同構(gòu)數(shù)據(jù)類型,但存儲同一測試值。測試成員的每個(gè)同構(gòu)數(shù)據(jù)類型版本通過對應(yīng)的同構(gòu)專業(yè)化進(jìn)行處理。針對每個(gè)處理實(shí)例計(jì)算性能指標(biāo)。指定最佳性能同構(gòu)專業(yè)化實(shí)施方式(例如,相對于其它性能指標(biāo)值的最高或最低性能指標(biāo)值)并將其存儲在性能數(shù)據(jù)集內(nèi),與測試數(shù)據(jù)的對應(yīng)值和測試數(shù)據(jù)的對應(yīng)原始(即,轉(zhuǎn)換前)數(shù)據(jù)類型相關(guān)。
可選地,基于針對輸入數(shù)據(jù)計(jì)算出的抽象指標(biāo)值來訪問性能數(shù)據(jù)集。抽象指標(biāo)針對可用于表示輸入數(shù)據(jù)的同構(gòu)數(shù)據(jù)類型表示的每種數(shù)據(jù)類型具有相同的值。指定與抽象指標(biāo)值和輸入數(shù)據(jù)的數(shù)據(jù)類型表示這兩者都相關(guān)的性能數(shù)據(jù)集的同構(gòu)專業(yè)化以供執(zhí)行。
可選地,同構(gòu)專業(yè)化是從數(shù)據(jù)集中的與最接近于實(shí)際輸入值的測試值相關(guān)的一組同構(gòu)專業(yè)化中進(jìn)行選擇。
在詳細(xì)說明本發(fā)明的至少一項(xiàng)實(shí)施例之前,應(yīng)該理解,本發(fā)明的應(yīng)用不一定限于下文描述中陳述的和/或附圖和/或示例中說明的組件和/或方法的構(gòu)造和布置細(xì)節(jié)。本發(fā)明能夠用于其它實(shí)施例或者能夠以各種方式實(shí)踐或執(zhí)行。
本發(fā)明可以是一種系統(tǒng)、一種方法和/或一種計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可包括一種計(jì)算機(jī)可讀存儲介質(zhì)(或媒體),其上存儲有計(jì)算機(jī)可讀程序指令,用于使處理器執(zhí)行本發(fā)明的各方面。
計(jì)算機(jī)可讀存儲介質(zhì)可以是有形設(shè)備,該有形設(shè)備可保留和存儲指令以供指令執(zhí)行設(shè)備使用。計(jì)算機(jī)可讀存儲介質(zhì)可以是,例如但不限于電子存儲設(shè)備、磁性存儲設(shè)備、光學(xué)存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或前述存儲設(shè)備的任意合適組合。
本文描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲介質(zhì)下載到相應(yīng)的計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò),例如互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)絡(luò)下載到外部計(jì)算機(jī)或外部存儲設(shè)備。
計(jì)算機(jī)可讀程序指令可作為獨(dú)立軟件包全部在用戶的計(jì)算機(jī)上執(zhí)行、部分在用戶的計(jì)算機(jī)上執(zhí)行、部分在用戶的計(jì)算機(jī)上且部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或全部在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一場景中,遠(yuǎn)程計(jì)算機(jī)可通過任意類型的網(wǎng)絡(luò)連接到用戶的計(jì)算機(jī),這些類型的網(wǎng)絡(luò)包括局域網(wǎng)(localareanetwork,lan)或廣域網(wǎng)(wideareanetwork,wan),或者可以(例如使用互聯(lián)網(wǎng)服務(wù)提供商通過互聯(lián)網(wǎng))連接到外部計(jì)算機(jī)。在一些實(shí)施例中,包括可編程邏輯電路、現(xiàn)場可編程門陣列(field-programmablegatearray,fpga)或可編程邏輯陣列(programmablelogicarray,pla)等的電子電路可使用計(jì)算機(jī)可讀程序指令的狀態(tài)信息對電子電路進(jìn)行個(gè)性化,從而執(zhí)行計(jì)算機(jī)可讀程序指令,以便執(zhí)行本發(fā)明的各方面。
本發(fā)明的各方面在本文中結(jié)合根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖圖示和/或方框圖進(jìn)行描述。將理解,流程圖圖示和/或方框圖中的每個(gè)方框以及流程圖圖示和/或方框圖中的方框的組合可以通過計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
圖中的流程圖和方框圖圖示了根據(jù)本發(fā)明各實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)施方式的架構(gòu)、功能和操作。在這一方面,流程圖或方框圖中的每個(gè)方框可表示一個(gè)模塊、片段或一部分指令,這部分指令包括用于實(shí)現(xiàn)指定邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令。在一些替代性實(shí)施方式中,方框中提到的功能可不按照圖中提到的順序發(fā)生。例如,相繼示出的兩個(gè)方框,事實(shí)上可以基本上同時(shí)執(zhí)行,或者這些方框有時(shí)可以按相反的順序執(zhí)行,取決于所涉及的功能。還應(yīng)注意的是,方框圖和/或流程圖圖示的每個(gè)方框以及方框圖和/或流程圖圖示中的方框的組合可通過執(zhí)行指定功能或動作或執(zhí)行專用硬件和計(jì)算機(jī)指令組合的基于硬件的專用系統(tǒng)來實(shí)現(xiàn)。
現(xiàn)參考圖1,圖1是根據(jù)本發(fā)明一些實(shí)施例的用于基于給定輸入數(shù)據(jù)和最佳性能指標(biāo)選擇計(jì)算機(jī)程序的同構(gòu)專業(yè)化的方法的流程圖。還參考圖2,圖2是根據(jù)本發(fā)明一些實(shí)施例的通過基于輸入數(shù)據(jù)和最佳性能指標(biāo)自動選擇同構(gòu)專業(yè)化來支持程序設(shè)計(jì)員在不考慮低級實(shí)施方式的情況下以高級語言編寫源代碼的系統(tǒng)的組件方框圖。圖1的方法可通過圖2的裝置和/或系統(tǒng)執(zhí)行。該方法和/或系統(tǒng)基于在程序運(yùn)行時(shí)提供的數(shù)據(jù)輸入訪問性能數(shù)據(jù)集,以選擇用于處理輸入的同構(gòu)專業(yè)化。
同構(gòu)專業(yè)化的選擇基于實(shí)際收到的輸入在運(yùn)行時(shí)執(zhí)行,而不是一種先驗(yàn)靜態(tài)選擇,這可能導(dǎo)致選擇一種不同的同構(gòu)專業(yè)化用于程序執(zhí)行并提高性能。當(dāng)提供了不同值時(shí),可為同一輸入選擇不同的同構(gòu)專業(yè)化。同構(gòu)數(shù)據(jù)類型和同構(gòu)表示可通過一種通用方式應(yīng)用到抽象數(shù)據(jù)結(jié)構(gòu),從而支持程序設(shè)計(jì)員專注于編寫高級代碼而無需考慮執(zhí)行實(shí)施方式。
對于數(shù)據(jù)自動提供的情況(例如,聯(lián)機(jī)和/或非交互),實(shí)時(shí)執(zhí)行運(yùn)行時(shí)選擇。實(shí)時(shí)執(zhí)行為實(shí)際提供的數(shù)據(jù)選擇同構(gòu)專業(yè)化。
可選地,在102處,基于計(jì)算機(jī)程序,可選地基于計(jì)算機(jī)程序的源代碼或程序的其它高級表示,生成多種同構(gòu)專業(yè)化。同構(gòu)專業(yè)化可由同構(gòu)專業(yè)化模塊208生成和/或由外部模塊生成并提供給裝置200,同構(gòu)專業(yè)化模塊208包含在裝置200內(nèi)或與裝置200通信。
計(jì)算機(jī)程序可以是一個(gè)完整的計(jì)算機(jī)程序、一個(gè)計(jì)算機(jī)程序的一部分,和/或單個(gè)算法。高級表示可以是使用原始編程語言的原始源代碼、部分編譯的代碼(例如,從原始源代碼到中間表示)或編譯代碼(例如,其可反向編譯)。
現(xiàn)參考圖3,圖3是根據(jù)本發(fā)明一些實(shí)施例的用于自動生成同構(gòu)專業(yè)化的方法的流程圖。同構(gòu)專業(yè)化模塊208用于執(zhí)行圖3的方法。將相同的初始高級代碼(例如,源代碼)編譯為多種不同的同構(gòu)專業(yè)化(每個(gè)同構(gòu)專業(yè)化都使用低級語言,以在執(zhí)行環(huán)境220內(nèi)執(zhí)行)。
在302處,接收高級代碼,可選地接收源代碼。源代碼以高級編程語言編寫,包含程序輸入的抽象數(shù)據(jù)類型。抽象數(shù)據(jù)類型的示例包括:矩陣、向量和圖形。抽象數(shù)據(jù)類型充當(dāng)應(yīng)用程序設(shè)計(jì)員的高級接口。
可選地,高級源代碼以領(lǐng)域?qū)S谜Z言(domainspecificlanguage,dsl)編寫。抽象數(shù)據(jù)類型可表示領(lǐng)域?qū)S脤ο蠛?或領(lǐng)域?qū)S贸橄蟆?/p>
源代碼可使用臺式電腦等用戶界面進(jìn)行編寫,和/或可從存儲在存儲器上的文件中獲取、從外部源獲取和/或通過反向編譯從編譯程序獲取。
輸入的抽象數(shù)據(jù)結(jié)構(gòu)在數(shù)學(xué)上可表示為s。源代碼可表示為d,其是對s的抽象算法,產(chǎn)生的結(jié)果是類型r。為清晰起見,將r表示為具體數(shù)據(jù)類型(即,其具有一種定義的低級實(shí)施方式,不像源代碼定義的那樣抽象)。在數(shù)學(xué)上,關(guān)系可定義為:
d:s=>r
在304處,接收針對每種輸入抽象數(shù)據(jù)類型的多個(gè)同構(gòu)數(shù)據(jù)類型表示。同構(gòu)數(shù)據(jù)類型可由應(yīng)用程序設(shè)計(jì)員手動定義、從外部源(例如,文件)獲取和/或可預(yù)先定義(例如,由項(xiàng)目經(jīng)理集中預(yù)先定義)。
抽象數(shù)據(jù)類型可(例如,通過編譯器)映射到任何一種同構(gòu)數(shù)據(jù)類型。每種同構(gòu)數(shù)據(jù)類型存儲輸入的相等值,并且可與任何其它同構(gòu)數(shù)據(jù)類型互換。每種同構(gòu)數(shù)據(jù)類型是具體的,具有已定義的低級實(shí)施方式,可選地作為低級語言內(nèi)的機(jī)器指令。在程序執(zhí)行期間,同構(gòu)數(shù)據(jù)類型的所有實(shí)施方式對于同一輸入值產(chǎn)生相同的結(jié)果。但是使用每種同構(gòu)數(shù)據(jù)類型的性能可能不同。
數(shù)據(jù)類型和對應(yīng)的同構(gòu)專業(yè)化的不同實(shí)施方式不限于固有定義。應(yīng)用程序設(shè)計(jì)員等可改變、定制和設(shè)計(jì)同構(gòu)數(shù)據(jù)類型。
現(xiàn)參考圖4a和4b,它們是根據(jù)本發(fā)明一些實(shí)施例的描繪抽象數(shù)據(jù)類型的同構(gòu)數(shù)據(jù)類型表示的示例的示意圖。
圖4a描繪了抽象數(shù)據(jù)類型矩陣的同構(gòu)表示402。密集矩陣404a、扁平稀疏矩陣404b和稀疏矩陣404c都是矩陣的不同數(shù)據(jù)類型表示。
圖4b描繪了抽象數(shù)據(jù)類型圖形的同構(gòu)表示406。鄰接矩陣408a、扁平鄰接表408b和鄰接表408c都是圖形的不同數(shù)據(jù)類型表示。
返回參考圖3,方框304在數(shù)學(xué)上可表示為:對于作為算法d的輸入的抽象數(shù)據(jù)類型s,定義一組同構(gòu)數(shù)據(jù)類型表示{s1,…,sk}。每個(gè)表示可基于與程序輸入的每種可能的預(yù)期數(shù)據(jù)類型格式的一一對應(yīng)關(guān)系。
在306處,針對每種指定的同構(gòu)數(shù)據(jù)類型,自動生成對應(yīng)的同構(gòu)專業(yè)化。同構(gòu)專業(yè)化使用低級語言來實(shí)施,例如根據(jù)每種較低級同構(gòu)數(shù)據(jù)類型通過相同高級源代碼的多次編譯來實(shí)施。低級語言基于其定義的數(shù)據(jù)類型提供抽象高級數(shù)據(jù)類型的具體實(shí)施方式。可存在一種或多種可能的低級實(shí)施方式。每種同構(gòu)專業(yè)化基于輸入值的抽象數(shù)據(jù)類型的對應(yīng)同構(gòu)數(shù)據(jù)類型。
針對算法d生成的同構(gòu)專業(yè)化在數(shù)學(xué)上可表示為{d1,..dk}。d的不同專業(yè)化對于同一程序輸入值都產(chǎn)生相同的結(jié)果r,這在數(shù)學(xué)上表示為di:si=>r。
現(xiàn)參考圖5,圖5是根據(jù)本發(fā)明一些實(shí)施例的用于基于抽象數(shù)據(jù)類型和相關(guān)同構(gòu)數(shù)據(jù)表示來自動生成同構(gòu)專業(yè)化的方法的流程圖。同構(gòu)專業(yè)化由同構(gòu)專業(yè)化模塊208基于所定義的同構(gòu)數(shù)據(jù)類型自動生成。
同構(gòu)專業(yè)化模塊208接收計(jì)算機(jī)程序506的高級代碼,該計(jì)算機(jī)程序基于抽象數(shù)據(jù)類型矩陣504的程序輸入。程序506包括將矩陣乘以一個(gè)向量以生成結(jié)果向量508的指令。在所描繪的示例中,矩陣504具有兩個(gè)已定義的可能同構(gòu)數(shù)據(jù)類型表示,即密集矩陣510a和稀疏矩陣510b。
同構(gòu)專業(yè)化模塊208針對每種同構(gòu)數(shù)據(jù)類型實(shí)施方式為各自的同構(gòu)專業(yè)化自動生成低級代碼。同構(gòu)專業(yè)化512a包括用于密集矩陣乘法的低級代碼。同構(gòu)專業(yè)化512b包括用于稀疏矩陣乘法的低級代碼。
同構(gòu)專業(yè)化512a基于密集矩陣510a到低級語言的應(yīng)用編程接口array[array[double]]514a的映射生成。將高級算法矩陣乘以向量506編譯為低級語言516a。從對應(yīng)的低級算法516a生成結(jié)果向量518a。
類似地,同構(gòu)專業(yè)化512b基于稀疏矩陣510b到低級語言的應(yīng)用編程接口array[array[(int,double)]]514b的映射生成。將高級算法矩陣乘以向量506編譯為低級語言516b。從對應(yīng)的低級算法516b生成結(jié)果向量518b。
現(xiàn)返回參考圖3,可選地,在308處,可選地由同構(gòu)專業(yè)化模塊208,基于所生成的同構(gòu)數(shù)據(jù)類型表示來生成轉(zhuǎn)換模塊212。轉(zhuǎn)換模塊212將其中一種同構(gòu)數(shù)據(jù)類型轉(zhuǎn)換為其它同構(gòu)數(shù)據(jù)類型。如下文詳述,當(dāng)輸入以選定的同構(gòu)專業(yè)化不支持的一種數(shù)據(jù)類型接收時(shí),轉(zhuǎn)換模塊將輸入的數(shù)據(jù)類型轉(zhuǎn)換為與選定的同構(gòu)專業(yè)化對應(yīng)的另一種數(shù)據(jù)類型,從而允許選定的同構(gòu)專業(yè)化處理輸入。
轉(zhuǎn)換模塊212可實(shí)施為矩陣等轉(zhuǎn)換數(shù)據(jù)集、轉(zhuǎn)換函數(shù)和/或一組映射等。
轉(zhuǎn)換數(shù)據(jù)集在數(shù)學(xué)上可表示為{cij}。數(shù)據(jù)集可基于每種同構(gòu)數(shù)據(jù)類型與抽象數(shù)據(jù)類型之間的映射關(guān)系生成。可為每種抽象數(shù)據(jù)類型定義同構(gòu),表示為isosi。每個(gè)同構(gòu)通過以下函數(shù)表示:
iso.from:s=>si
iso.to:si=>s
同構(gòu)-同構(gòu)的數(shù)據(jù)類型映射提供了一種用于在一種同構(gòu)數(shù)據(jù)類型與另一種同構(gòu)數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換的方法。通過應(yīng)用轉(zhuǎn)換方法,可將同構(gòu)數(shù)據(jù)類型格式si的程序輸入值轉(zhuǎn)換為同構(gòu)數(shù)據(jù)類型格式sj,這是已定義函數(shù)的疊加:
針對所有現(xiàn)有數(shù)據(jù)類型格式的轉(zhuǎn)換器形成轉(zhuǎn)換數(shù)據(jù)集:c={cij}。注意的是,任何i的cii都是相同的轉(zhuǎn)換器。
現(xiàn)返回參考圖1和圖2,不同的同構(gòu)專業(yè)化通過不同的方式處理程序輸入數(shù)據(jù)。不同的處理實(shí)施方式產(chǎn)生不同的性能。例如,通過設(shè)置值為一(1)的對應(yīng)矩陣單元,執(zhí)行將新邊緣添加到表示為同構(gòu)數(shù)據(jù)類型鄰接矩陣的抽象數(shù)據(jù)類型圖形。新邊緣的添加可使用幾個(gè)低級指令快速、高效地執(zhí)行。相比之下,當(dāng)圖形表示為扁平鄰接表同構(gòu)數(shù)據(jù)類型時(shí),執(zhí)行添加新邊緣的同一高級操作比在低級語言下更復(fù)雜。將新單元插入到陣列中,這使用相對更多的低級指令來執(zhí)行,因此需要更長的時(shí)間,需要更多資源,并且隨后顯示出相對較低的性能。該示例描繪了程序在執(zhí)行期間的性能與同構(gòu)數(shù)據(jù)類型的選擇以及用于程序輸入的相關(guān)同構(gòu)專業(yè)化有關(guān)。
現(xiàn)參考圖6,圖6是根據(jù)本發(fā)明一些實(shí)施例的描繪同構(gòu)專業(yè)化的生成的圖形表示。該示例針對兩個(gè)程序輸入的情況描繪同構(gòu)專業(yè)化的生成。生成同構(gòu)專業(yè)化用來表示每個(gè)程序輸入的同構(gòu)數(shù)據(jù)類型的可能組合。
同構(gòu)專業(yè)化針對代碼生成,該代碼包括用于在表示為矩陣604抽象數(shù)據(jù)類型的第一輸入與表示為向量606抽象數(shù)據(jù)類型的第二輸入之間執(zhí)行乘法602的代碼。
為矩陣604和向量606指定同構(gòu)數(shù)據(jù)類型。為抽象數(shù)據(jù)類型矩陣604指定同構(gòu)數(shù)據(jù)類型密集矩陣608a和稀疏矩陣608。為向量606指定同構(gòu)數(shù)據(jù)類型密集向量610a和稀疏向量610b。
用于執(zhí)行乘法602的同構(gòu)專業(yè)化612a至612d基于生成的同構(gòu)數(shù)據(jù)類型的組合以低級語言自動生成。同構(gòu)專業(yè)化612a基于同構(gòu)數(shù)據(jù)類型密集矩陣608a乘以同構(gòu)數(shù)據(jù)類型密集向量610a。同構(gòu)專業(yè)化612b基于稀疏矩陣608b乘以密集向量610a。同構(gòu)專業(yè)化612c基于密集矩陣608a乘以稀疏向量610b。同構(gòu)專業(yè)化612d基于稀疏矩陣608b乘以稀疏向量610b。
在104處,接收供計(jì)算機(jī)程序處理的輸入值206。輸入值206可由裝置200的選擇模塊202通過與執(zhí)行計(jì)算機(jī)程序的執(zhí)行環(huán)境220通信的數(shù)據(jù)接口204接收。
輸入值實(shí)施為由同構(gòu)數(shù)據(jù)類型定義的其中一種數(shù)據(jù)類型。
在106處,針對收到的輸入值,可選地通過指標(biāo)函數(shù),計(jì)算抽象指標(biāo)的抽象指標(biāo)值?;谟?jì)算出的抽象指標(biāo)值,可選地通過分級函數(shù),指定對應(yīng)的級別。指標(biāo)函數(shù)可預(yù)先指定,例如,由應(yīng)用程序設(shè)計(jì)員定義,或者從中央單元獲取。
抽象指標(biāo)值和相關(guān)級別可由選擇模塊202計(jì)算,或者由編程來執(zhí)行計(jì)算的另一模塊計(jì)算。
抽象指標(biāo)支持訪問性能數(shù)據(jù)集以在不受限于輸入的數(shù)據(jù)類型實(shí)施方式的情況下選擇最佳同構(gòu)專業(yè)化。
抽象指標(biāo)不依賴于輸入的特定數(shù)據(jù)類型實(shí)施方式。抽象指標(biāo)對于與輸入值的抽象數(shù)據(jù)類型相關(guān)聯(lián)的每種已定義同構(gòu)數(shù)據(jù)類型具有相同的抽象指標(biāo)值。例如,針對矩陣抽象數(shù)據(jù)類型定義抽象指標(biāo)稀疏性(即,非零元素的數(shù)量與元素的總數(shù)量之比)。針對所有矩陣同構(gòu)數(shù)據(jù)類型計(jì)算同一稀疏性值。例如,當(dāng)矩陣實(shí)施為密集矩陣或稀疏矩陣時(shí),針對輸入計(jì)算出稀疏性50%。
當(dāng)使用同一抽象指標(biāo)值評估每種同構(gòu)數(shù)據(jù)類型時(shí),可基于針對不同同構(gòu)數(shù)據(jù)類型獲取的不同性能指標(biāo)來選擇抽象指標(biāo)以如本文所述進(jìn)行使用。
現(xiàn)參考圖7,圖7是根據(jù)本發(fā)明一些實(shí)施例的描繪在使用不同的同構(gòu)數(shù)據(jù)類型進(jìn)行處理時(shí)具有不同的性能指標(biāo)的程序輸入的抽象指標(biāo)的數(shù)據(jù)集。
數(shù)據(jù)集描繪為表702,其描繪例如參照圖6描述的矩陣抽象數(shù)據(jù)類型乘以向量抽象數(shù)據(jù)類型的性能。列706表示針對矩陣計(jì)算的不同稀疏性值。列708表示針對向量計(jì)算的不同稀疏性值。列710a至710d表示同構(gòu)數(shù)據(jù)類型的不同組合的處理時(shí)間(例如,單位為毫秒):密集矩陣*密集向量、密集矩陣*稀疏向量、稀疏矩陣*密集向量、稀疏矩陣*稀疏向量。如表702所描繪,同構(gòu)數(shù)據(jù)類型的不同組合導(dǎo)致不同的執(zhí)行時(shí)間。
可選地,用于計(jì)算抽象指標(biāo)值的指標(biāo)函數(shù)的多種同構(gòu)專業(yè)化可例如由同構(gòu)專業(yè)化模塊208以與參照圖3的方框306描述的方法類似的方式自動生成??舍槍斎氲某橄髷?shù)據(jù)類型定義高級抽象指標(biāo)函數(shù),例如,通過非零元素的數(shù)量與元素的總數(shù)量之比來計(jì)算矩陣抽象數(shù)據(jù)類型的稀疏性。不同的同構(gòu)專業(yè)化基于不同的同構(gòu)數(shù)據(jù)類型自動生成。例如,對于稀疏矩陣實(shí)施方式和對于密集矩陣實(shí)施方式,稀疏性的計(jì)算有區(qū)別地執(zhí)行。
可選地,基于計(jì)算出的抽象指標(biāo)值指定級別。將抽象指標(biāo)劃分為覆蓋抽象指標(biāo)的可能值的多個(gè)不重疊級別。劃分可以是均等的。或者,劃分可以不均等,例如,根據(jù)輸入值的預(yù)期分布,和/或根據(jù)預(yù)期的性能差異。例如,稀疏性可劃分為以下級別:0-10%、10%-50%、50%-90%、90%-100%。劃分可基于例如指示低稀疏性(0-10%)和/或高稀疏性(90%-100%)實(shí)施方式可能導(dǎo)致與中等稀疏性(10%-50%、50-%90%)不同的執(zhí)行結(jié)果的預(yù)期(或模擬結(jié)果)。級別可手動定義,或者基于相似性能的分組自動選擇。分級函數(shù)(例如,裝置200的函數(shù)、選擇模塊202的函數(shù),或單獨(dú)模塊)將計(jì)算出的抽象指標(biāo)值映射到其中一個(gè)指定級別。分級函數(shù)可基于已定義級別和抽象指標(biāo)自動生成。
通過應(yīng)用與輸入的數(shù)據(jù)類型對應(yīng)的指標(biāo)函數(shù)的對應(yīng)同構(gòu)專業(yè)化,針對收到的輸入計(jì)算抽象指標(biāo)值。抽象指標(biāo)值的級別通過將分級函數(shù)應(yīng)用到計(jì)算出的抽象指標(biāo)值來指定。
計(jì)算抽象指標(biāo)值的指標(biāo)函數(shù)在數(shù)學(xué)上可表示為:
其中,f表示指標(biāo)函數(shù),s表示輸入的抽象數(shù)據(jù)類型,
分級函數(shù)在數(shù)學(xué)上可表示為:
g(mx,{m1,…,ml})=>cx
其中,g表示分級函數(shù),cl表示用于指定抽象指標(biāo)的級別{cl1,…,cll},cx表示指定的級別。在非平凡的情況下,分級結(jié)果取決于抽象指標(biāo)的已定義級別,使得分級函數(shù)接收級別(或它們的指標(biāo))作為參數(shù),表示為mx,{m1,…,ml}。
對于實(shí)施為數(shù)據(jù)類型sj的輸入數(shù)據(jù)值x,可基于數(shù)學(xué)關(guān)系式mx=fj(x)計(jì)算抽象指標(biāo)值。
其中,mx表示輸入的抽象指標(biāo)值,fj表示與數(shù)據(jù)類型sj對應(yīng)的指標(biāo)函數(shù)的同構(gòu)專業(yè)化。
可基于以下數(shù)學(xué)關(guān)系式計(jì)算級別:
clx=g(mx)
其中,clx表示與抽象指標(biāo)值對應(yīng)的級別,g(mx)表示應(yīng)用到抽象指標(biāo)值的分級函數(shù)。
在108處,選擇模塊202訪問性能數(shù)據(jù)集210以從多種同構(gòu)專業(yè)化中選擇一種用于處理程序輸入的同構(gòu)專業(yè)化。同構(gòu)專業(yè)化基于針對處理測試數(shù)據(jù)的每種同構(gòu)專業(yè)化計(jì)算出的最佳性能指標(biāo)從性能數(shù)據(jù)集210中選擇,可選地具有與輸入值接近的值。
如本文所論述,每種同構(gòu)專業(yè)化在執(zhí)行環(huán)境220中有一種不同的低級實(shí)施方式。同構(gòu)專業(yè)化的每種實(shí)施方式在處理同一程序輸入時(shí)產(chǎn)生相同的結(jié)果。同構(gòu)專業(yè)化之間的差異在于在執(zhí)行環(huán)境220中的性能不同,差異通過計(jì)算出的性能標(biāo)準(zhǔn)來表示。
現(xiàn)返回參考圖7,針對示例進(jìn)行描述。同構(gòu)數(shù)據(jù)類型(和對應(yīng)的同構(gòu)專業(yè)化)為輸入數(shù)據(jù)的處理提供最佳(例如,最高或最低)性能有難度或者無法僅從抽象指標(biāo)值預(yù)測。例如,行704描繪了具有50%稀疏性的矩陣乘以具有50%稀疏性的向量的情況。用于處理稀疏矩陣*密集向量這一組合的同構(gòu)專業(yè)化的選擇比用于處理稀疏矩陣*稀疏向量這一組合的同構(gòu)專業(yè)化的效率大約高5倍。這樣,性能數(shù)據(jù)集用于基于基準(zhǔn)測試,而不是例如僅依賴于抽象指標(biāo)值,選擇用于處理輸入的特定同構(gòu)專業(yè)化。
性能數(shù)據(jù)集基于輸入值的計(jì)算出的抽象指標(biāo)值的相關(guān)性進(jìn)行訪問,可選地基于抽象指標(biāo)值的指定級別。例如,參考圖7,針對矩陣和向量計(jì)算稀疏性。指定的行具有最接近抽象指標(biāo)值的級別的組合。例如,當(dāng)輸入針對矩陣的稀疏性是54%,針對向量的稀疏性是42%時(shí),指定50%50%行704??蛇x擇具有最佳性能指標(biāo)的專業(yè)化,在這種情況下是列710c,稀疏矩陣密集向量具有最低處理時(shí)間187。當(dāng)指定專業(yè)化使用的數(shù)據(jù)類型與輸入的數(shù)據(jù)類型不同時(shí),可將輸入數(shù)據(jù)類型轉(zhuǎn)換為指定專業(yè)化的數(shù)據(jù)類型,如本文參照方框110等所詳述。
可選地,性能數(shù)據(jù)集基于輸入值的抽象指標(biāo)值的指定級別的相關(guān)性和輸入值的數(shù)據(jù)類型進(jìn)行訪問,如下文中的示例所示。
根據(jù)數(shù)學(xué)關(guān)系式,dopt表示d的選定的最佳同構(gòu)專業(yè)化,其中基于性能數(shù)據(jù)集的選擇可表示為opt=pt(clx,j),如下文所述。
現(xiàn)參考圖8,圖8是根據(jù)本發(fā)明一些實(shí)施例的用于生成性能數(shù)據(jù)集的方法的流程圖。性能數(shù)據(jù)集針對測試數(shù)據(jù)的每個(gè)成員執(zhí)行每種同構(gòu)專業(yè)化實(shí)施方式。數(shù)據(jù)類型與實(shí)施的同構(gòu)專業(yè)化不對應(yīng)的測試數(shù)據(jù)項(xiàng)相應(yīng)地進(jìn)行轉(zhuǎn)換。指定針對輸入的抽象指標(biāo)值(或級別)以及針對輸入的數(shù)據(jù)類型具有最佳性能的同構(gòu)專業(yè)化,并將其存儲在性能數(shù)據(jù)集內(nèi)。性能數(shù)據(jù)集210由模擬模塊214生成。
性能數(shù)據(jù)集基于基準(zhǔn)測試,基準(zhǔn)測試可支持用來表示可用實(shí)際數(shù)據(jù)的全頻譜的測試數(shù)據(jù)的小子集。
性能數(shù)據(jù)集通過以下操作生成:測量數(shù)據(jù)輸入與同構(gòu)專業(yè)化的每種可能組合的性能,并選擇最佳結(jié)果。性能數(shù)據(jù)集考慮了將輸入的數(shù)據(jù)類型轉(zhuǎn)換為其它數(shù)據(jù)類型的可能性,以支持在必要時(shí)選擇其它同構(gòu)專業(yè)化來實(shí)現(xiàn)更好的性能。
在802處,接收一組測試數(shù)據(jù)216。測試數(shù)據(jù)的每個(gè)成員表示為已定義同構(gòu)數(shù)據(jù)類型中的一種數(shù)據(jù)類型。選擇每個(gè)測試數(shù)據(jù)的值來表示實(shí)際的預(yù)期輸入數(shù)據(jù)??蛇x擇該組測試數(shù)據(jù)以獲取表示可能輸入值的基準(zhǔn)測試。
可選地,選擇測試樣本以按照抽象指標(biāo)表示輸入數(shù)據(jù)級別的典型預(yù)期表示。例如,對于在其中模擬密集和稀疏矩陣數(shù)據(jù)類型的算法處理矩陣,選擇測試樣本以表示預(yù)期的稀疏矩陣和密集矩陣數(shù)據(jù)類型表示,與輸入的數(shù)據(jù)類型無關(guān)。例如,輸入包括少量非零元素這一種情況(例如,以表示典型的稀疏矩陣情況)以及大量非零元素的另一種情況(例如,以表示典型的密集矩陣情況),不考慮輸入的數(shù)據(jù)類型表示。
或者,以任何已定義數(shù)據(jù)類型來表示測試樣本。注意的是,同一性能表值獨(dú)立于測試成員數(shù)據(jù)類型生成,因?yàn)闇y試成員被從其初始數(shù)據(jù)類型轉(zhuǎn)換為每種其它已定義數(shù)據(jù)類型,如本文所述。
測試數(shù)據(jù)可基于場景,反映同一目標(biāo)執(zhí)行環(huán)境下的實(shí)際數(shù)據(jù)輸入和實(shí)際性能。
該組測試樣本在數(shù)學(xué)上可表示為t={t1,…,tl},其中每個(gè)成員ti以與同構(gòu)表示sp(i)之一對應(yīng)的數(shù)據(jù)類型進(jìn)行表示。
在804處,定義程序輸入的抽象指標(biāo)。所定義的抽象指標(biāo)作為如參照方框106描述的抽象指標(biāo)值計(jì)算的基礎(chǔ)。將指定的抽象指標(biāo)劃分為覆蓋抽象指標(biāo)的可能值的不重疊級別。這些級別作為如參照方框106描述的所計(jì)算出的抽象指標(biāo)值的級別指定的基礎(chǔ),例如通過分級函數(shù)進(jìn)行的分級。
在806處,基于從測試值計(jì)算出的抽象指標(biāo)為每個(gè)測試成員指定級別??墒褂弥笜?biāo)函數(shù)的對應(yīng)同構(gòu)專業(yè)化為測試成員計(jì)算抽象指標(biāo)值。
為測試成員計(jì)算抽象指標(biāo)值在數(shù)學(xué)上可表示為:mi=fp(i)(ti),其中ti是測試成員,fp是與測試成員的數(shù)據(jù)類型對應(yīng)的指標(biāo)函數(shù)f的同構(gòu)專業(yè)化。
為針對所有測試成員計(jì)算出的一組抽象指標(biāo)值{m1,…,ml}中的每個(gè)成員指定抽象指標(biāo)空間
在808處,將正在處理的測試成員的數(shù)據(jù)類型轉(zhuǎn)換為每種其它同構(gòu)數(shù)據(jù)類型。轉(zhuǎn)換由轉(zhuǎn)換模塊212執(zhí)行。
在810處,通過使用對應(yīng)的同構(gòu)專業(yè)化執(zhí)行同構(gòu)數(shù)據(jù)類型,為(同一測試成員的)同構(gòu)數(shù)據(jù)類型的每個(gè)實(shí)例計(jì)算性能指標(biāo)。執(zhí)行在目標(biāo)執(zhí)行環(huán)境220中進(jìn)行,其中具有輸入206的計(jì)算機(jī)程序在目標(biāo)執(zhí)行環(huán)境220中執(zhí)行。性能指標(biāo)的示例包括處理時(shí)間和/或內(nèi)存需求。
可選擇性能指標(biāo)來反映在指定同構(gòu)專業(yè)化時(shí)最重要的系統(tǒng)參數(shù)。
在812處,為各個(gè)測試成員指定具有最佳性能指標(biāo)的同構(gòu)專業(yè)化。指定的同構(gòu)專業(yè)化存儲在性能數(shù)據(jù)集內(nèi),該性能數(shù)據(jù)集與測試成員的級別相關(guān),和/或與達(dá)到最佳性能指標(biāo)的測試成員的數(shù)據(jù)類型相關(guān)。測試成員的數(shù)據(jù)類型可以是轉(zhuǎn)換后的數(shù)據(jù)類型(即,從原始數(shù)據(jù)類型轉(zhuǎn)換成的另一種數(shù)據(jù)類型)或原始數(shù)據(jù)類型。注意的是,如本文所論述,測試成員的原始數(shù)據(jù)類型被轉(zhuǎn)換為所有其它數(shù)據(jù)類型,每種數(shù)據(jù)類型通過所有同構(gòu)專業(yè)化來模擬,以便為每一對(即,測試樣本級別和數(shù)據(jù)類型格式)選擇達(dá)到最佳性能指標(biāo)的同構(gòu)專業(yè)化。注意的是,指定的同構(gòu)專業(yè)化不依賴于測試樣本的原始數(shù)據(jù)類型。
在814處,針對該組測試數(shù)據(jù)中的每個(gè)成員重復(fù)方框806、808、810和812中的一個(gè)或多個(gè)。
通過測試數(shù)據(jù)成員的迭代在數(shù)學(xué)上可通過以下偽代碼表示:
對于以數(shù)據(jù)類型格式sp(i)實(shí)施的每個(gè)樣本ti,將測試成員轉(zhuǎn)換為其它同構(gòu)數(shù)據(jù)類型。對于指定為編號j的每種同構(gòu)數(shù)據(jù)類型格式,將測試樣本數(shù)據(jù)類型ti轉(zhuǎn)換為數(shù)據(jù)類型格式sj。指定d的具有最佳性能的同構(gòu)專業(yè)化(即,bestnumber)以及對應(yīng)的轉(zhuǎn)換器(如偽代碼的內(nèi)環(huán)所指示)。性能數(shù)據(jù)集實(shí)施為表格,表格單元與分配給bestnumber的輸入數(shù)據(jù)類型和級別對應(yīng)。
在816處,基于評估的測試數(shù)據(jù)生成性能數(shù)據(jù)集。
實(shí)施為表格(即,pt)的一個(gè)示例性能數(shù)據(jù)集表示為下文的表1。對于收到的實(shí)施為數(shù)據(jù)類型sj且指定為級別cli的輸入,當(dāng)所收到的輸入的數(shù)據(jù)類型被轉(zhuǎn)換為數(shù)據(jù)類型spt(i,j)且使用同構(gòu)專業(yè)化dpt(i,j)時(shí),可獲得最佳性能。例如,當(dāng)所收到的輸入實(shí)施為數(shù)據(jù)類型s1且指定為cl2時(shí),所收到的輸入被轉(zhuǎn)換為與同構(gòu)專業(yè)化3對應(yīng)的數(shù)據(jù)類型,并使用同構(gòu)專業(yè)化3執(zhí)行。
表1:生成的性能數(shù)據(jù)集的示例
現(xiàn)返回參考圖1,可選地,在110處,當(dāng)與指定的同構(gòu)專業(yè)化相關(guān)聯(lián)的數(shù)據(jù)類型與所收到的輸入的數(shù)據(jù)類型實(shí)施方式不同時(shí),將輸入的數(shù)據(jù)類型轉(zhuǎn)換為與指定的同構(gòu)專業(yè)化相關(guān)聯(lián)的數(shù)據(jù)類型。轉(zhuǎn)換由轉(zhuǎn)換模塊212執(zhí)行。
輸入數(shù)據(jù)的數(shù)據(jù)類型實(shí)施方式不限制同構(gòu)專業(yè)化的選擇。(在程序?qū)崟r(shí)執(zhí)行期間)執(zhí)行輸入數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換,以通過支持使用可用的同構(gòu)專業(yè)化來提高性能。
在112處,生成表明選定的同構(gòu)專業(yè)化218的消息,并可選地向執(zhí)行環(huán)境220提供該消息?;蛘撸蛄硗?,向執(zhí)行環(huán)境220提供選定的同構(gòu)專業(yè)化218的低級代碼,用于執(zhí)行輸入206。
可選地,在114處,針對程序輸入的每個(gè)實(shí)例重復(fù)方框104至112。在為同一程序輸入的不同實(shí)例提供不同數(shù)據(jù)類型和/或不同值時(shí),可選擇不同的同構(gòu)專業(yè)化。選擇模塊202可基于在執(zhí)行環(huán)境220中程序的運(yùn)行時(shí)提供的輸入來動態(tài)執(zhí)行最佳同構(gòu)專業(yè)化的選擇。
注意的是,生成同構(gòu)專業(yè)化的方框102,和/或生成性能表(如參照圖8所述),和/或生成轉(zhuǎn)換數(shù)據(jù)集(如參照圖3的方框308所述),可在程序執(zhí)行之前生成。性能數(shù)據(jù)集可在程序執(zhí)行期間隨著實(shí)際收到的數(shù)據(jù)和執(zhí)行結(jié)果等進(jìn)行更新。
現(xiàn)參考圖9,圖9是根據(jù)本發(fā)明一些實(shí)施例的基于圖2的系統(tǒng)的和/或用于執(zhí)行圖1的方法的處理系統(tǒng)架構(gòu)902的一個(gè)示例。架構(gòu)902包含用于生成同構(gòu)專業(yè)化和轉(zhuǎn)換數(shù)據(jù)集的元件、模擬環(huán)境912和執(zhí)行環(huán)境920。
數(shù)據(jù),例如已定義的同構(gòu)數(shù)據(jù)類型以及計(jì)算機(jī)程序的高級代碼,通過通用接口904提供給處理系統(tǒng)架構(gòu)902。同構(gòu)專家906為計(jì)算機(jī)程序生成同構(gòu)專業(yè)化,如本文所述。同構(gòu)專業(yè)化存儲在同構(gòu)專業(yè)化存儲庫908中。同構(gòu)專家906生成轉(zhuǎn)換矩陣910,以在與生成的同構(gòu)專業(yè)化相關(guān)的數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換,如本文所述。
微基準(zhǔn)測試程序916接收模擬數(shù)據(jù)914、同構(gòu)專業(yè)化908和轉(zhuǎn)換矩陣910以生成性能表918,如本文所述。微基準(zhǔn)測試程序916、模擬數(shù)據(jù)914和性能表918組織為模擬環(huán)境912,其可在收到實(shí)際數(shù)據(jù)之前執(zhí)行,和/或執(zhí)行以隨著實(shí)際數(shù)據(jù)的結(jié)果來更新性能表。
選擇器924接收輸入數(shù)據(jù)922(用于執(zhí)行計(jì)算機(jī)程序),并訪問性能表918以根據(jù)計(jì)算出的抽象指標(biāo)值和相關(guān)級別選擇最佳同構(gòu)專業(yè)化,如本文所述。調(diào)用器926使用轉(zhuǎn)換矩陣910轉(zhuǎn)換輸入數(shù)據(jù)922(當(dāng)輸入數(shù)據(jù)922的數(shù)據(jù)類型不同于與選定同構(gòu)專業(yè)化相關(guān)的數(shù)據(jù)類型時(shí)),并使用選定的同構(gòu)專業(yè)化來執(zhí)行輸入數(shù)據(jù)922,以獲得結(jié)果928。選擇器924和調(diào)用器926組織在執(zhí)行環(huán)境920內(nèi)。執(zhí)行環(huán)境920用于新實(shí)際輸入數(shù)據(jù)922的每個(gè)實(shí)例。
現(xiàn)描述本文描述的應(yīng)用到算法的系統(tǒng)和方法的示例。該示例涉及一種程序,該程序包括矩陣抽象數(shù)據(jù)類型乘以密集向量數(shù)據(jù)類型的乘法。抽象矩陣數(shù)據(jù)類型表示為m。密集向量數(shù)據(jù)類型表示為dv。源代碼表示為矩陣-密集向量乘法(matrix-densevectormultiplication,mdvm)。該算法在數(shù)學(xué)上表示為mdvm:(m,dv)=>dv。
在102處,基于同構(gòu)數(shù)據(jù)類型密集矩陣(表示為dm)和稀疏矩陣(表示為sm),定義矩陣抽象數(shù)據(jù)結(jié)構(gòu)的兩個(gè)同構(gòu)表示。
兩種對應(yīng)的同構(gòu)專業(yè)化是密集矩陣密集向量乘法(densematrixdensevectormultiplication,dmdvm)和稀疏矩陣密集向量乘法(sparsematrixdensevectormultiplication,smdvm),在數(shù)學(xué)上表示為:
dmdvm:(dm,dv)=>dv
smdvm:(sm,dv)=>dv
轉(zhuǎn)換數(shù)據(jù)集基于這兩個(gè)表示實(shí)施為包含4個(gè)元素(即,2x2)的轉(zhuǎn)換矩陣。轉(zhuǎn)換矩陣元素中的兩個(gè)是相同的轉(zhuǎn)換器。剩下的兩個(gè)非平凡轉(zhuǎn)換器用于從稀疏矩陣數(shù)據(jù)類型轉(zhuǎn)換為密集矩陣數(shù)據(jù)類型,以及從密集矩陣轉(zhuǎn)換為稀疏矩陣。
轉(zhuǎn)換矩陣表示為:
在104處,接收一個(gè)nxn帶狀矩陣作為輸入,該帶狀矩陣在主對角線上和兩個(gè)鄰近余對角線上包含1。輸入實(shí)施為密集矩陣數(shù)據(jù)類型。輸入表示為:
在106處,為收到的輸入計(jì)算抽象指標(biāo)值和對應(yīng)級別。
指標(biāo)函數(shù)f計(jì)算所收到的輸入矩陣的稀疏性(即,零矩陣元素的數(shù)量除以矩陣元素的總數(shù)量),表示為
同構(gòu)專家模塊生成f的兩種同構(gòu)專業(yè)化,一種針對密集矩陣數(shù)據(jù)類型(即,fd),一種針對稀疏矩陣數(shù)據(jù)類型(即,fs):
使用fs計(jì)算抽象指標(biāo)值:
mx=fs(x)=1-(3n-2)/n2
使用分級函數(shù)g,其選擇抽象指標(biāo)值較接近的級別,來計(jì)算級別clx,表示為:
clx=g(mx,{m1,m2})=if(|mx-m1|<|mx-m2|)then(cl1)else(cl2)
當(dāng)輸入矩陣的n較大時(shí),mx接近1,這評估出相比m2更接近m1。因此,指定的級別是第一級別,表示為clx=cl1。
在108處,訪問實(shí)施為表格的性能數(shù)據(jù)集以選擇最佳同構(gòu)專業(yè)化,以便用于執(zhí)行收到的矩陣。
生成的性能表如下:
所收到的輸入矩陣x是密集矩陣數(shù)據(jù)類型,計(jì)算出的級別是cl1,因此訪問性能表單元格(cl1,密集矩陣)(即,與cl1和密集矩陣兩者都相關(guān)的同構(gòu)專業(yè)化)以將smdvm指定為最佳同構(gòu)專業(yè)化。
在110處,將所收到的輸入矩陣x轉(zhuǎn)換為稀疏矩陣數(shù)據(jù)類型,以便保持與選定同構(gòu)專業(yè)化smdvm的執(zhí)行兼容性。
在112處,生成的消息包含具有轉(zhuǎn)換器cds的同構(gòu)專業(yè)化smdvm以應(yīng)用于輸入矩陣(x)?;蛘撸趹?yīng)用轉(zhuǎn)換器cds對x進(jìn)行轉(zhuǎn)換之后執(zhí)行smdvm。
消息和/或執(zhí)行函數(shù)可表示為:
smdvm(cds(x))。
現(xiàn)參照圖8描述性能表的生成。
在802處,接收測試數(shù)據(jù)。接收兩個(gè)樣本,一個(gè)是稀疏矩陣數(shù)據(jù)類型,一個(gè)是密集矩陣數(shù)據(jù)類型。測試集表示為t={t1,t2}。
t1是稀疏矩陣數(shù)據(jù)類型的大小為nxn的單位矩陣
t2是密集矩陣數(shù)據(jù)類型的大小為nxn的全部以1填充的矩陣
在804處,如上所述定義抽象指標(biāo)。
注意的是,總共執(zhí)行8次試驗(yàn)來生成用于填充性能表的數(shù)據(jù)。
在806處,針對每個(gè)測試樣本迭代計(jì)算抽象指標(biāo)值。首先針對t1:
m1=fs(t1)=1-1/n
在808處,通過應(yīng)用轉(zhuǎn)換矩陣將t1轉(zhuǎn)換為另一種同構(gòu)數(shù)據(jù)類型,即,轉(zhuǎn)換為密集矩陣數(shù)據(jù)類型:t1d=csd(t1)。t1s表示原始的未轉(zhuǎn)換稀疏矩陣數(shù)據(jù)類型,即,t1s=t1,因?yàn)閠1已經(jīng)是稀疏矩陣數(shù)據(jù)類型。
在810處,通過應(yīng)用與每種數(shù)據(jù)類型相關(guān)聯(lián)的同構(gòu)專業(yè)化為t1測試樣本計(jì)算性能指標(biāo)。對于轉(zhuǎn)換后的密集矩陣數(shù)據(jù)類型,執(zhí)行的同構(gòu)專業(yè)化表示為:
dmdvm(t1d)
smdvm(cds(t1d))
對于原始的稀疏矩陣數(shù)據(jù)類型,執(zhí)行的同構(gòu)專業(yè)化表示為:
dmdvm(csd(t1s))
smdvm(t1s)
在812處,為測試樣本t1選擇密集矩陣和稀疏矩陣數(shù)據(jù)類型中的每一種的最佳同構(gòu)專業(yè)化。確定密集矩陣格式的最佳同構(gòu)專業(yè)化并以單元格(cl1,密集矩陣)的形式存儲在性能表pt中。確定稀疏矩陣格式的最佳同構(gòu)專業(yè)化并以單元格(cl1,稀疏矩陣)的形式存儲在性能表pt中。
在814處,針對測試樣本t2重復(fù)方框806至812。
在806處,計(jì)算抽象指標(biāo)值:m2=fd(t2)=0。
在808處,t2d表示原始的未轉(zhuǎn)換密集矩陣數(shù)據(jù)類型,即,t2d=t2,因?yàn)閠2已經(jīng)是密集矩陣數(shù)據(jù)類型。通過應(yīng)用轉(zhuǎn)換矩陣將t2轉(zhuǎn)換為另一種同構(gòu)數(shù)據(jù)類型,即,轉(zhuǎn)換為稀疏矩陣數(shù)據(jù)類型格式:t2s=cds(t2)。
在810處,通過應(yīng)用與每種數(shù)據(jù)類型相關(guān)聯(lián)的同構(gòu)專業(yè)化為t2測試樣本計(jì)算性能指標(biāo)。對于原始的密集矩陣數(shù)據(jù)類型,執(zhí)行的同構(gòu)專業(yè)化表示為:
dmdvm(t2d)
smdvm(cds(t2d))
對于轉(zhuǎn)換后的稀疏矩陣數(shù)據(jù)類型,執(zhí)行的同構(gòu)專業(yè)化表示為:
dmdvm(csd(t2s))
smdvm(t2s)
在812處,為測試樣本t2選擇密集矩陣和稀疏矩陣數(shù)據(jù)類型中的每一種的最佳同構(gòu)專業(yè)化。確定密集矩陣數(shù)據(jù)類型的最佳同構(gòu)專業(yè)化并以單元格(cl2,密集矩陣)的形式存儲在性能表pt中。確定稀疏矩陣數(shù)據(jù)類型的最佳同構(gòu)專業(yè)化并以單元格(cl2,稀疏矩陣)的形式存儲在性能表pt中。
在816處,通過合并來自樣本t1和t2的數(shù)據(jù)來生成性能表。所生成的性能表已在上文論述。
本發(fā)明各實(shí)施例的描述已出于說明目的提出,但并非旨在詳盡無遺或限于所公開的實(shí)施例。對于本領(lǐng)域普通技術(shù)人員來說,許多修改和變體將是顯而易見的,不脫離所描述的實(shí)施例的范圍和精神。選擇本文使用的術(shù)語是為了最好地說明實(shí)施例的原則、實(shí)際應(yīng)用或相對于在市場中發(fā)現(xiàn)的技術(shù)的技術(shù)改進(jìn),或者是為了使具有本領(lǐng)域普通技術(shù)的其他人員能夠理解本文公開的實(shí)施例。
預(yù)期在從本申請開始走向成熟的專利的生命周期中,將會開發(fā)出許多相關(guān)系統(tǒng)、方法、裝置和計(jì)算機(jī)程序產(chǎn)品,術(shù)語同構(gòu)數(shù)據(jù)類型和同構(gòu)專業(yè)化的范圍旨在包括所有這類先驗(yàn)新技術(shù)。
本文使用的術(shù)語“約”是指±10%。
術(shù)語“包括”和“有”表示“包括但不限于”。這個(gè)術(shù)語包括了術(shù)語“由…組成”以及“本質(zhì)上由…組成”。
短語“本質(zhì)上由…組成”是指構(gòu)造或方法可包括額外的材料和/或步驟,但前提是額外的材料和/或步驟不會實(shí)質(zhì)上改變所要求保護(hù)的構(gòu)造或方法的基本和新穎特性。
本文使用的單數(shù)形式“一個(gè)”和“所述”包括復(fù)數(shù)含義,除非上下文中另有明確說明。例如,術(shù)語“一個(gè)化合物”或“至少一個(gè)化合物”可包括多個(gè)化合物,包含其混合物。
此處使用的詞“示例性的”表示“作為一個(gè)示例、實(shí)例或說明”。任何“示例性的”實(shí)施例并不一定理解為優(yōu)先于或優(yōu)越于其它實(shí)施例和/或并不一定排除其它實(shí)施例的特征的并入。
此處使用的詞語“可選地”表示“在一些實(shí)施例中提供且在其他實(shí)施例中沒有提供”。本發(fā)明的任意特定的實(shí)施例可以包括多個(gè)“可選的”特征,除非這些特征相互矛盾。
在本申請中,本發(fā)明各實(shí)施例可通過范圍格式提出。應(yīng)理解,以范圍格式進(jìn)行的描述僅僅是為了方便和簡潔,不應(yīng)理解為對本發(fā)明的范圍的僵化限制。相應(yīng)地,范圍的描述應(yīng)視為已具體公開了所有可能的子范圍以及該范圍內(nèi)的各個(gè)數(shù)值。例如,范圍的描述,例如從1至6,應(yīng)視為已具體公開了子范圍,例如從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ù))。短語“在第一個(gè)所指示的數(shù)和第二個(gè)所指示的數(shù)范圍內(nèi)”以及“從第一個(gè)所指示的數(shù)到第二個(gè)所指示的數(shù)范圍內(nèi)”和在這里互換使用,表示包括第一個(gè)和第二個(gè)所指示的數(shù)以及二者之間所有的分?jǐn)?shù)和整數(shù)。
單個(gè)實(shí)施例也可以提供某些特征的組合,這些特征在各個(gè)實(shí)施例正文中有簡短的描述。相反地,本發(fā)明的各個(gè)特征在單個(gè)實(shí)施例的正文中有簡短的描述,也可以分別提供這些特征或任何適合的子組合或者作為本發(fā)明所述的任何合適的其他實(shí)施例。不可認(rèn)為各個(gè)實(shí)施例的正文中描述的某些特征是這些實(shí)施例的必要特征,除非沒有這些元素,該實(shí)施例無效。
此處,本說明書中提及的所有出版物、專利和專利說明書都通過引用本說明書結(jié)合在本說明書中,同樣,每個(gè)單獨(dú)的出版物、專利或?qū)@f明書也具體且單獨(dú)地結(jié)合在此。此外,對本申請的任何參考的引用或識別不可當(dāng)做是允許這樣的參考在現(xiàn)有技術(shù)中優(yōu)先于本發(fā)明。就使用節(jié)標(biāo)題而言,不應(yīng)該將節(jié)標(biāo)題理解成必要的限定。