• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    提升高性能計算程序性能可移植性的領(lǐng)域特定語言①

    2020-03-31 12:17:06文淵博孫廣中陳云霽
    高技術(shù)通訊 2020年2期
    關(guān)鍵詞:函數(shù)調(diào)用編譯器膠水

    李 韋 文淵博 孫廣中 陳云霽

    (*中國科學(xué)技術(shù)大學(xué)計算機科學(xué)與技術(shù)學(xué)院 合肥 230026) (**計算機體系結(jié)構(gòu)國家重點實驗室(中國科學(xué)院計算技術(shù)研究所) 北京 100190) (***上海寒武紀信息科技有限公司 上海 201203)

    0 引 言

    過去的幾十年,在高性能計算(high-performance computing,HPC)社區(qū)的軟件開發(fā)工作中,誕生了許多廣泛使用的高性能函數(shù)庫,這些函數(shù)庫或針對計算進行優(yōu)化,如基本線性代數(shù)例程(basic linear algebra subprograms,BLAS)[1-3]、高擴展線性代數(shù)庫(scalable LAPACK,ScaLAPACK)[4]、西方最快傅立葉變換(fastest Fourier transforms in the West,F(xiàn)FTW)[5];或提供等特定場景中的基本原語,如信息傳遞接口(message passing interface,MPI)。同時,使用編譯制導(dǎo)語句進行編程,提高程序并行度也已成為高性能應(yīng)用開發(fā)中的常用技術(shù),例如開放并行處理(open multi-processing,OpenMP)[6]和開源加速器(open accelerators,OpenACC)[7]。使用標準化的庫函數(shù)以及編譯制導(dǎo)語句的一個重要原因是:使用它們進行編程,可以提高所編寫應(yīng)用程序的性能可移植性。使用庫函數(shù)和編譯制導(dǎo)語句,程序員不必過分糾結(jié)底層實現(xiàn),而相同的代碼也可以更為輕松移植到新硬件架構(gòu)上。同時,當標準庫的開發(fā)人員為所需移植的目標架構(gòu)提供優(yōu)化版本時,應(yīng)用程序在硬件架構(gòu)上的性能也會同步得到提高。

    盡管在許多應(yīng)用程序中廣泛使用了高度優(yōu)化的函數(shù)庫,但是將所有的庫“鏈接”到一個應(yīng)用程序中的過程仍然存在問題。其原因在于不同函數(shù)調(diào)用之間通常需要使用手寫代碼(即膠水代碼),在將應(yīng)用程序的輸入或者函數(shù)調(diào)用的輸出作為輸入傳遞給另一個函數(shù)調(diào)用之前,進行一些類似于更改數(shù)據(jù)布局格式或分配存儲空間的額外操作,以實現(xiàn)數(shù)據(jù)預(yù)處理。膠水代碼常會阻礙將應(yīng)用程序代碼移植到新的架構(gòu)上,原因在于它們大多是針對硬件架構(gòu)進行編寫的,也同樣需要針對新的硬件架構(gòu)和應(yīng)用程序進行特定的優(yōu)化,并且膠水代碼中可能使用了硬件架構(gòu)特定的指令。例如,如果使用矩陣向量乘法實現(xiàn)定制化矩陣乘法,因為循環(huán)的存在,應(yīng)用程序有了更多的訪存和指令跳轉(zhuǎn),當其被移植到對訪存帶寬更為敏感的硬件平臺上時,性能瓶頸會被進一步放大。再例如,在支持高級向量擴展指令集(advanced vector extensions,AVX)指令的處理器上,會使用單指令流多數(shù)據(jù)流(single instruction multiple data,SIMD)指令進行向量化加速,而這樣的程序無法運行到不支持AVX指令的處理器上。因此,膠水代碼的存在使得高性能計算程序性能可移植性降低。

    有許多關(guān)注于特定領(lǐng)域內(nèi)程序性能的優(yōu)化工作。SPIRAL[8]作為面向數(shù)字信號處理領(lǐng)域的調(diào)優(yōu)系統(tǒng),提供了從高層次的數(shù)學(xué)算法描述到低層次的代碼實現(xiàn)的映射,能夠自動生成給定硬件平臺的算法的高性能實現(xiàn)。Halide[9]是專為圖像處理領(lǐng)域設(shè)計的編程語言,它的核心思路是將算法描述和計算過程分離,程序員可以靈活的使用循環(huán)展開、向量化等方法手動嘗試不同的調(diào)度算法來得到最好的性能。Chen等人[10]針對于深度學(xué)習(xí)應(yīng)用,提出TVM優(yōu)化框架,通過AutoTVM的方式用機器學(xué)習(xí)的方法去優(yōu)化程序空間的代價估計函數(shù),在龐大的參數(shù)空間之中預(yù)測最優(yōu)的優(yōu)化方式,從而將深度學(xué)習(xí)靈活、高效地部署在不同的硬件平臺之上。

    本文針對于高性能計算應(yīng)用,描述了與編譯器優(yōu)化[11,12]相關(guān)的工作,對高性能庫函數(shù)調(diào)用中存在的語義信息進行了分析,在編譯時對應(yīng)用程序進行優(yōu)化。對使用了大量膠水代碼的高性能應(yīng)用程序,本文嘗試用更為高效的庫函數(shù)替代膠水代碼與原始的庫函數(shù)調(diào)用,并增加更多的編譯制導(dǎo)語句,使整個應(yīng)用在不同平臺上的整體性能得到提升。

    本文描述了一種抽象的關(guān)于高性能函數(shù)庫的領(lǐng)域特定語言,以及支持它的原型編譯器實現(xiàn)。這種源代碼到源代碼的編譯器,首先將庫函數(shù)調(diào)用轉(zhuǎn)換為關(guān)于庫函數(shù)的領(lǐng)域特定語言,之后針對生成的領(lǐng)域特定語言進行分析和優(yōu)化,最后將優(yōu)化后的領(lǐng)域特定語言重新翻譯為更為高效的C代碼。這種設(shè)計,實現(xiàn)了對原始C代碼的性能優(yōu)化。針對需要移植的應(yīng)用和目標硬件,優(yōu)化領(lǐng)域特定語言到C代碼的翻譯過程,就可以使高性能計算的應(yīng)用程序具有更好的性能可移植性。本文以簡單的矩陣乘算法以及復(fù)雜的空時自適應(yīng)處理(space-time adaptive processing,STAP)[13-15]算法為應(yīng)用示例,展示了移植到不同的硬件平臺的具體實現(xiàn)。實驗結(jié)果表明,該領(lǐng)域特定語言以及編譯器可以顯著提高應(yīng)用程序在不同硬件平臺上的性能表現(xiàn)。

    1 研究動機

    在調(diào)用高性能函數(shù)庫的過程中,需要增加許多膠水代碼,其作用多數(shù)功能為數(shù)據(jù)重排、數(shù)據(jù)補齊等。圖1以一段基于FFTW函數(shù)庫編寫的應(yīng)用程序為例,展示了需要實際解決的問題和需要完成的優(yōu)化。

    圖1中的代碼片段取自一個真實應(yīng)用,其描述了多次調(diào)用FFTW庫函數(shù)執(zhí)行多個一維快速傅里葉變換(FFT),接著用一段手寫代碼將多個FFT的輸出轉(zhuǎn)換為不同的布局格式。這里的膠水代碼具體是指外圍調(diào)用FFT的循環(huán)(第2個代碼塊)以及執(zhí)行數(shù)據(jù)重排的循環(huán)(第3個代碼塊)。

    圖1 快速傅里葉變換原始代碼和膠水代碼

    首先,針對第1個代碼塊中的函數(shù)fftw_plan_dft_1d進行分析。該函數(shù)的作用是計算大小為N_DOP的一維FFT。FFT本身是一個原位操作,因為輸入指針和輸出指針都指向相同的內(nèi)存地址(由第2個和第3個參數(shù)可得)。

    圖1中的第2個代碼塊,按照代碼塊1得到的plan_fft進行運算。函數(shù)fftw_execute_dft表示,在不同的輸入/輸出數(shù)組(array)上執(zhí)行多個FFT。輸入/輸出地址使用包圍fftw_execute_dft的兩層循環(huán)進行索引,而這些循環(huán)代碼即上文所述膠水代碼。對開發(fā)以及維護程序員來說,明晰這些膠水代碼實際進行的操作,是能否進行后續(xù)開發(fā)維護的關(guān)鍵點。

    最后一個代碼塊是膠水代碼的另一個例子。在庫函數(shù)調(diào)用后,需要執(zhí)行數(shù)據(jù)重排。更具體的,圖中第3個代碼塊中,循環(huán)包圍著一個簡單數(shù)據(jù)拷貝,即輸入基地址為datacube_pulse_major_padded,輸出基地址為doppler_data_cube的數(shù)據(jù)重排。由于不同硬件架構(gòu)的基礎(chǔ)內(nèi)存排列方式可能不同,導(dǎo)致這些循環(huán)必須以高效且不同的方式進行實現(xiàn)(硬件的特點,例如內(nèi)存交織,對齊方式等),以在不同平臺上實現(xiàn)良好性能。

    針對圖1中的代碼邏輯,實際上可以使用FFTW函數(shù)庫中更為高效的fftwf_plan_guru_dft函數(shù)對其進行優(yōu)化和改寫。如果將循環(huán)和數(shù)據(jù)重排融合到單一的庫函數(shù)調(diào)用中,如圖2所示,首先,膠水代碼大量減少,將計算執(zhí)行和訪存處理重疊起來隱藏了部分時間開銷;最后,同樣因為膠水代碼的減少,程序訪存壓力得到緩解,提升程序運行性能、降低應(yīng)用程序運行能耗(如圖3所示)。圖3為在Haswell架構(gòu)處理器(Intel Xeon E5-4667V3,40 MB L3 Cache,16核,32線程)的服務(wù)器上的測試性能對比,從圖中可以看出,相對于圖1中的代碼,融合優(yōu)化后的圖2中的代碼,在性能、能耗與能耗延遲積3個方面都有顯著的性能優(yōu)化。更重要的是,由于膠水代碼被替換為了對標準庫(此情況下為FFTW guru)的單一庫函數(shù)調(diào)用,使得優(yōu)化重構(gòu)后的代碼具有更好的性能可移植性,即程序員不用再根據(jù)硬件平臺基礎(chǔ)架構(gòu)做類似于優(yōu)化循環(huán)以及內(nèi)存拷貝的手動優(yōu)化。

    圖2 對膠水代碼融合優(yōu)化后的版本

    圖3 融合膠水代碼和庫函數(shù)調(diào)用,性能提高、能耗降低、能耗延遲積降低

    綜上分析,高性能計算程序中調(diào)用的函數(shù)通常來自高性能函數(shù)庫,例如BLAS和FFTW。在調(diào)用多個庫函數(shù)編寫高性能計算應(yīng)用時,需要編寫大量膠水代碼以保證應(yīng)用程序功能與性能。而膠水代碼的存在,導(dǎo)致應(yīng)用程序維護困難,程序訪存量增加,最終導(dǎo)致應(yīng)用程序性能可移植性變差。針對膠水代碼進行優(yōu)化,減少不必要的循環(huán)和內(nèi)存拷貝,使用更為高效的函數(shù)調(diào)用替換原始函數(shù)調(diào)用以及膠水代碼以優(yōu)化程序,可以使得應(yīng)用程序更充分利用高性能函數(shù)庫所提供的優(yōu)化,使應(yīng)用程序具有更好的性能可移植性。

    2 DSL語言和編譯器

    針對高性能計算程序在調(diào)用高性能計算函數(shù)庫的過程中,需要插入大量進行循環(huán)和數(shù)據(jù)重排的膠水代碼,以至應(yīng)用程序性能可移植性差的問題,本文構(gòu)建了一個原型Source-To-Source編譯器。它能將基于高性能函數(shù)庫的程序解析為一種作為中間表示的領(lǐng)域特定語言,然后對中間表示進行分析優(yōu)化,最終得到使用更高效的庫函數(shù)替代循環(huán)、數(shù)據(jù)拷貝和原始的庫函數(shù)調(diào)用的C代碼。對于無法通過該方法進行優(yōu)化的循環(huán),該編譯器嘗試使用OpenMP或OpenACC(取決于目標架構(gòu))來插入編譯制導(dǎo)語句。圖4為該編譯器框架圖。

    圖4 編譯器架構(gòu)示意圖

    在Source-To-Source 編譯器實現(xiàn)中,本文先定義了一個改編自The Spiral Language[16]的通用的領(lǐng)域特定語言(domain-specific language,DSL)表示。在原始代碼重構(gòu)和移植的過程中,原有的C代碼被編譯器前端翻譯為關(guān)于庫的領(lǐng)域特定語言。隨后使用了一系列在 DSL 之上的循環(huán)展開、循環(huán)交換、循環(huán)自動向量化等的優(yōu)化,從而得到更好的訪存局部性和并行化加速。同時制定了可擴展的模板匹配規(guī)則,用更高效的高性能庫函數(shù)對應(yīng)的 DSL 原語替換中間DSL表示。在編譯器后端代碼生成模塊中,將優(yōu)化后的DSL翻譯成優(yōu)化后的C代碼。對于不能用高性能計算庫函數(shù)優(yōu)化,但可以進行并行化加速的代碼,插入編譯制導(dǎo)語句,通過OpenMP等并行加速庫優(yōu)化用戶的原始程序。

    2.1 DSL語言表示和編譯器前端

    DSL 語言的設(shè)計目標是盡可能充分的表達原始 C 代碼中的數(shù)據(jù)分布描述與數(shù)學(xué)運算表示,同時能夠滿足后續(xù)優(yōu)化的需求。圖5提供了用巴科斯-諾爾范式描述的 DSL 語言的形式化語法。

    圖5 DSL 形式化語義描述

    DSL 有最基本的數(shù)學(xué)運算表示功能。它能表達一些常數(shù),比如 2、3/7、2.33、π,也能表達一些簡單的數(shù)學(xué)函數(shù)運算,如 exp(2) 、sin(π/2)等。特殊的,對于在高性能計算領(lǐng)域中比較常見的向量或者矩陣運算,DSL拓展了一些如vector(a0,…,an-1)之類的原語,從而高效地表示數(shù)學(xué)運算。

    DSL還包括一些高性能計算庫函數(shù)原語,它們與以FFTW及BLAS為代表的常用高性能庫中的函數(shù)調(diào)用存在對應(yīng)關(guān)系,從而方便編譯器后端代碼生成模塊的一對一轉(zhuǎn)換。例如,圖1中的函數(shù)fftw_plan_dft_1d由如下原語表示:

    此外,本文抽象了一些符號與運算符,用來精確表示DSL語言中數(shù)學(xué)計算的行為。在如下的符號運算符例子中:

    基于上述原語介紹與擴展,實現(xiàn)了基于 GAP 4[17]的編譯器前端,完成從原始C代碼到DSL中間表示的轉(zhuǎn)換工作。GAP 4是在離散代數(shù)領(lǐng)域中使用廣泛的語言系統(tǒng),它提供了基本的描述復(fù)雜代數(shù)符號、函數(shù)的數(shù)據(jù)結(jié)構(gòu),且方便擴展。通過上述編譯器前端,能夠?qū)D1中的代碼片段翻譯為如下的DSL表示:

    (1)

    2.2 優(yōu)化及代碼生成

    基于DSL的代數(shù)表達能力,應(yīng)用集合基本知識對上面的表達式進行化簡和重排,可以得到下面的表達式:

    (IN_CHAN?(IN_RANGE?

    (2)

    對于重點優(yōu)化路徑,制定了可靈活擴展的模板匹配規(guī)則,完成庫函數(shù)調(diào)用之間的優(yōu)化。

    例如,通過FFTW guru接口(guru-interface)的模板匹配搜索,式(2)所表示的計算可以被等效替換。這樣能夠在代碼生成時使用單個FFTW guru接口調(diào)用優(yōu)化圖1中代碼片段的膠水代碼和FFT函數(shù)調(diào)用。

    對比圖1和圖3可以看出,化簡和重排后的方案將局部數(shù)據(jù)重排緊接在調(diào)用FFT計算之后,不僅可以將計算執(zhí)行和訪存處理重疊起來隱藏部分時間開銷,還可以利用數(shù)據(jù)的局部性來提升訪存效率。

    從理論上可以大致獲知,原先算法時間復(fù)雜度為O(n3+n2),即O(n3),經(jīng)過表達式優(yōu)化后,算法時間復(fù)雜度可以被降低到O(n)。假設(shè)原先的運算中,計算時間為tc,訪存時間為tm。在經(jīng)過計算、訪存優(yōu)化后,訪存時間為tc′,且有tc′<=tc,計算訪存總時間為max(tc′,tm)??梢缘玫降睦碚摷铀俦葹?tm+tc)/(max(tc′,tm))。當tm=n·tc時,將其代入式(2),可以獲得的加速比至少為(n+1)/n。

    3 應(yīng)用優(yōu)化示例

    為了證明本文所提出解決方法的可行性,本文分別以較為簡單的矩陣乘算法以及一種重要的雷達系統(tǒng)處理算法,space time adaptive processing(STAP)算法作為應(yīng)用示例來介紹。

    3.1 矩陣乘算法優(yōu)化示例

    簡單的矩陣乘是科學(xué)計算中最為常用的計算。矩陣乘算法有3種可行的實現(xiàn)方式:矢量-矢量運算(Level 1)、矩陣-矢量運算(Level 2)、矩陣-矩陣運算(Level 3)。這3種實現(xiàn)方式會分別調(diào)用BLAS、ScaLAPACK中的axpy、gemv以及gemm函數(shù)。使用axpy和gemv運算拼接矩陣運算時,需要使用多重循環(huán)以拼接完整的矩陣乘。圖6展示了最為簡單和典型的算法優(yōu)化思想。

    圖6 使用gemm替換用戶編寫的gemv

    用戶所編寫的應(yīng)用程序中,為了實現(xiàn)較為靈活的功能,使用了矩陣-向量乘法,而非矩陣-矩陣乘法。在編譯器將原始C代碼翻譯成中間表示后,會對中間表示進行依賴分析,盡可能使用更為高效的矩陣-矩陣乘法代替原始的矩陣-向量乘法。

    3.2 STAP算法優(yōu)化示例

    STAP算法由4個階段組成: 多普勒處理(Doppler processing,DP)、協(xié)方差矩陣構(gòu)造(covariance matrix construction,CMC)、計算自適應(yīng)權(quán)重(computing adaptive weights,CAW),以及應(yīng)用自適應(yīng)加權(quán)(applying adaptive weighting,AAW)。在不同階段之間,當進行FFT相關(guān)運算,或者BLAS、ScaLAPACK中的線性代數(shù)運算,則需要進行數(shù)據(jù)重排、對齊或數(shù)據(jù)拷貝。

    接下來對優(yōu)化過程進行展開描述。圖7以圖示的形式重點表現(xiàn)該編譯器的關(guān)鍵優(yōu)化內(nèi)容和核心思想。整個計算過程主要的3個優(yōu)化點如下。

    (1)將數(shù)據(jù)布局與庫函數(shù)調(diào)用合并。DP階段如圖7(a)所示,其對應(yīng)原始代碼如圖1所示。在該階段的原始運算過程中,中間的FFT函數(shù)前后存在大量的膠水代碼(用于數(shù)據(jù)重排和對齊的循環(huán))。嘗試合并一系列一維FFT后的膠水代碼,并替換為圖3中所示的代碼。

    (2)用矩陣乘法取代外積。在CMC階段,每個協(xié)方差矩陣是由累加多個外積(outer-products)得到的,如圖7(b)所示,而每個外積均由多個從數(shù)據(jù)立方(datacube)中提出的快照向量(snapshot vectors)計算得到。編譯器將提取快照向量的過程用一個rank為0的FFTW-guru接口替代。除此之外,多個外積也可以被一個單獨的矩陣乘法替代(rank為k),如圖8所示。

    圖7 FFT和BLAS運算后/前存在膠水代碼

    圖8 CMC階段優(yōu)化

    (3)跨階段優(yōu)化。在AAW階段,該編譯器識別提取了相同的快照矢量。由此,上述快照矢量可被復(fù)用,不再進行數(shù)據(jù)提取。

    通過上述優(yōu)化,將原先的膠水代碼所執(zhí)行的數(shù)據(jù)重排以及循環(huán)調(diào)用等過程進行了一個更高層次的抽象,變?yōu)榱艘粋€高級函數(shù)調(diào)用。

    4 實驗平臺與性能分析

    針對第3節(jié)提到的矩陣乘算法和STAP算法,本文在3種不同平臺上進行了實現(xiàn)。這些平臺包括:

    (1) Haswell平臺:通用多核處理器(Intel Haswell),Intel Xeon E5-4667V3,40 MB L3 Cache,16核,32線程。

    (2) Xeon Phi平臺:多核協(xié)處理器(Intel Xeon Phi),Intel Xeon Phi Processor 7210,32 MB L2 Cache,64核,64線程。

    (3) 異構(gòu)高峰值加速器:一種集成了更多運算器,同時存儲端使用3D堆疊DRAM[18]的研究架構(gòu),其結(jié)構(gòu)類似于FFT加速器[19,20]、數(shù)據(jù)重塑單元[21]、Dot Product硬件。相比Haswell平臺和Xeon Phi平臺,其具有更高的硬件峰值算力。

    針對Haswell平臺和Xeon Phi平臺,算法實現(xiàn)直接調(diào)用了公開實現(xiàn)的高性能函數(shù)庫,例如FFTW、Intel MKL[22]。而在異構(gòu)高峰值加速器上,實現(xiàn)了可能調(diào)用的原始以及優(yōu)化接口以供性能對比,例如FFTW-guru、gemv、gemm等。進行性能對比的3種實現(xiàn)分別為:(1)未優(yōu)化版本,具有顯式循環(huán)、 數(shù)據(jù)拷貝和庫函數(shù)調(diào)用的原始C代碼;(2)編譯優(yōu)化版本,使用更高效的庫函數(shù)優(yōu)化循環(huán)、內(nèi)存拷貝后的C代碼;(3)編譯優(yōu)化+并行優(yōu)化版本,在編譯優(yōu)化版本的基礎(chǔ)上添加供OpenMP/OpenACC識別的編譯制導(dǎo)語句以利用并行加速庫進行優(yōu)化的版本。

    4.1 矩陣乘算法性能分析

    矩陣乘的原始代碼為一份使用gemv函數(shù)加for循環(huán)的C代碼。經(jīng)過編譯器優(yōu)化后,自動將原始代碼轉(zhuǎn)為中間表示,最后再將中間表示翻譯為直接使用gemm函數(shù)實現(xiàn)矩陣乘的C代碼。

    圖9展示了在3種硬件平臺上,分別僅進行編譯優(yōu)化性能對比,橫坐標為優(yōu)化方式,縱坐標為優(yōu)化后相比原始版本的加速比。

    圖9 矩陣乘應(yīng)用程序在3個不同平臺上的性能比較

    首先,可以看出,3種硬件平臺上,經(jīng)過編譯優(yōu)化的C代碼執(zhí)行效率相比原始C代碼都有超過20倍的提升。其次,在Xeon Phi平臺和異構(gòu)高峰值加速器上,使用編譯優(yōu)化后的加速比,相比Haswell要更好,這種現(xiàn)象的原因是3者的訪存帶寬幾乎一致,但后兩者有更高的硬件計算峰值,當減少訪存后,硬件效率提升更為明顯。最后,在Haswell和Xeon Phi平臺上,是否開啟編譯器中的并行優(yōu)化,沒有明顯的性能提升,這種現(xiàn)象的原因是矩陣乘是一個較為簡單的例子,編譯優(yōu)化所作的工作與并行優(yōu)化所做工作基本類似,所以增加并行優(yōu)化效果不佳。

    4.2 STAP算法性能分析

    針對STAP算法的一種原始實現(xiàn),使用3組來自PNNL PERFECT Benchmark集合[23]的輸入數(shù)據(jù),即大(large)、中(medium)、小(small),分別測試原始代碼,進行編譯優(yōu)化的代碼以及同時進行編譯優(yōu)化、并行優(yōu)化的代碼。

    圖10顯示了不同平臺上的性能,橫坐標為3種硬件上不同的數(shù)據(jù)集,縱坐標為優(yōu)化后的性能與未優(yōu)化版本的加速比。首先,在Haswell和Xeon Phi硬件平臺上測試3種數(shù)據(jù)集,僅僅進行編譯優(yōu)化后,優(yōu)化版本相比原始版本有加速,但不夠明顯,最高可以取得的加速比是在Xeon Phi硬件上對小數(shù)據(jù)集進行測試得到的1.39倍加速。這種現(xiàn)象的原因是整個應(yīng)用中所調(diào)用的函數(shù),可以被編譯器識別優(yōu)化的較少。其次,同時使用編譯優(yōu)化和并行優(yōu)化后,加速效果較為明顯。在Xeon Phi硬件和小數(shù)據(jù)集上可以取得4.89倍加速,而在異構(gòu)高峰值加速器上,可以取得8.21倍加速。這種現(xiàn)象的出現(xiàn)是因為原始實現(xiàn)中存在較多可以并行的循環(huán)代碼。

    綜合在簡單矩陣乘和STAP算法兩種應(yīng)用上原型編譯器的表現(xiàn),可以得到的結(jié)論是:在簡單應(yīng)用中,本文所實現(xiàn)的原型編譯器,可以通過優(yōu)化代碼實現(xiàn)的方式,顯著提升應(yīng)用性能。而在復(fù)雜的應(yīng)用中,該原型編譯器,可以通過優(yōu)化代碼實現(xiàn)和插入編譯制導(dǎo)語句,使復(fù)雜應(yīng)用不再需要進行繁雜的手工優(yōu)化。因此,本文提出的中間表示和編譯器,可以解決因為膠水代碼而產(chǎn)生的高性能計算程序性能可移植性欠佳的問題。

    圖10 STAP應(yīng)用程序在3個不同平臺上的性能比較

    5 結(jié) 論

    許多HPC應(yīng)用程序是直接基于標準化庫和編譯制導(dǎo)語句實現(xiàn)的。由于將多個不同的庫函數(shù)調(diào)用與應(yīng)用進行鏈接的膠水代碼的存在,高性能計算應(yīng)用程序性能可移植性(即在不同平臺上保持高性能)依然是一個不小的挑戰(zhàn)。通常,圍繞庫函數(shù)調(diào)用的膠水代碼會提供可以進行優(yōu)化的上下文信息。利用這些膠水代碼提供的上下文信息,本文定義和引入了一種作為中間表示的領(lǐng)域特定語言,最終使用更高效的函數(shù)調(diào)用替代膠水代碼和原始的庫函數(shù)調(diào)用,或根據(jù)并行硬件架構(gòu)本身,自動插入供OpenMP或OpenACC的識別編譯制導(dǎo)語句,完成對應(yīng)用程序的優(yōu)化。這種方法使得程序員不再需要針對不同硬件平臺,對應(yīng)用程序代碼進行復(fù)雜的手工優(yōu)化。本文以簡單的矩陣乘算法和較為復(fù)雜的STAP算法優(yōu)化過程展示了實際的優(yōu)化效果。實驗結(jié)果表明,根據(jù)應(yīng)用程序原始代碼的編寫以及硬件架構(gòu)的不同,原型編譯器可以取得不同的優(yōu)化效果。而對于真實應(yīng)用,在通用處理器硬件架構(gòu)上,經(jīng)過優(yōu)化的代碼相比原始代碼可以取得最高4.89倍的加速比;在類似異構(gòu)高峰值加速器的實驗性硬件架構(gòu)上,本文所描述的工作可以取得最高加速8.21倍。

    猜你喜歡
    函數(shù)調(diào)用編譯器膠水
    神奇的膠水
    基于C語言的數(shù)學(xué)菜單的設(shè)計與實現(xiàn)
    Thanksgiving Day Card
    基于相異編譯器的安全計算機平臺交叉編譯環(huán)境設(shè)計
    基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
    探討C++編程中避免代碼冗余的技巧
    Unity3D項目腳本優(yōu)化分析與研究
    中國新通信(2017年1期)2017-03-08 03:12:21
    牛奶變膠水
    修補夢想的膠水
    通用NC代碼編譯器的設(shè)計與實現(xiàn)
    十分钟在线观看高清视频www| www.999成人在线观看| 久久精品国产亚洲av高清一级| 在线观看日韩欧美| 欧美亚洲日本最大视频资源| 99热这里只有精品一区 | 国产男靠女视频免费网站| 怎么达到女性高潮| 久久久久久久久免费视频了| √禁漫天堂资源中文www| 久久久久久亚洲精品国产蜜桃av| 亚洲人成电影免费在线| 1024视频免费在线观看| 久久久久久久精品吃奶| av有码第一页| 久久久久久国产a免费观看| 国产蜜桃级精品一区二区三区| 亚洲中文字幕一区二区三区有码在线看 | 黑人操中国人逼视频| 精品国产乱子伦一区二区三区| 久久九九热精品免费| 91国产中文字幕| 两个人视频免费观看高清| 久久久久久久午夜电影| 一进一出好大好爽视频| 一级a爱片免费观看的视频| 国产成人欧美| 午夜两性在线视频| 国产精品一区二区精品视频观看| 搞女人的毛片| 欧美性长视频在线观看| 亚洲国产精品久久男人天堂| 欧美丝袜亚洲另类 | 精品久久蜜臀av无| 亚洲成国产人片在线观看| 别揉我奶头~嗯~啊~动态视频| 欧美性猛交黑人性爽| 99热只有精品国产| 男女床上黄色一级片免费看| 久久精品夜夜夜夜夜久久蜜豆 | 精品日产1卡2卡| 久久亚洲真实| 嫁个100分男人电影在线观看| 国产精品 国内视频| 亚洲中文av在线| 啦啦啦免费观看视频1| 婷婷亚洲欧美| 精品久久久久久久久久免费视频| 国产精品 国内视频| 国产爱豆传媒在线观看 | 18美女黄网站色大片免费观看| 日韩欧美一区二区三区在线观看| 亚洲中文字幕日韩| 精品国产国语对白av| 久久人妻av系列| 可以在线观看的亚洲视频| 搡老妇女老女人老熟妇| 一级a爱视频在线免费观看| 女性生殖器流出的白浆| 久久久久久久久中文| 国产成人av教育| 香蕉丝袜av| 999久久久国产精品视频| 一级黄色大片毛片| 搞女人的毛片| 欧美精品亚洲一区二区| 制服人妻中文乱码| 欧美成人一区二区免费高清观看 | 超碰成人久久| 色综合婷婷激情| 欧美最黄视频在线播放免费| 精品久久久久久久久久久久久 | 亚洲av片天天在线观看| 日韩大尺度精品在线看网址| 国产精品 欧美亚洲| 啪啪无遮挡十八禁网站| 久久精品国产亚洲av香蕉五月| 久久国产精品影院| 国内精品久久久久精免费| 日韩一卡2卡3卡4卡2021年| 男人舔女人的私密视频| 人妻丰满熟妇av一区二区三区| 日韩高清综合在线| 久久天躁狠狠躁夜夜2o2o| 天天添夜夜摸| 欧美zozozo另类| 嫁个100分男人电影在线观看| 午夜福利在线观看吧| 成人亚洲精品一区在线观看| 久久中文看片网| 99在线人妻在线中文字幕| 色播亚洲综合网| 久久天躁狠狠躁夜夜2o2o| 99riav亚洲国产免费| 国产精品久久视频播放| 中亚洲国语对白在线视频| 一本久久中文字幕| 欧美成人一区二区免费高清观看 | 欧美色欧美亚洲另类二区| 俺也久久电影网| 一个人观看的视频www高清免费观看 | 国产精品电影一区二区三区| 国产精品美女特级片免费视频播放器 | 亚洲全国av大片| 两个人看的免费小视频| 在线观看免费日韩欧美大片| 久久精品人妻少妇| 成年版毛片免费区| 亚洲国产日韩欧美精品在线观看 | 一级片免费观看大全| 1024视频免费在线观看| 女性生殖器流出的白浆| 国产亚洲精品久久久久5区| 18禁美女被吸乳视频| 性色av乱码一区二区三区2| 少妇裸体淫交视频免费看高清 | 午夜a级毛片| 亚洲国产欧洲综合997久久, | 黑人操中国人逼视频| av片东京热男人的天堂| 极品教师在线免费播放| 高清毛片免费观看视频网站| 国产成人欧美在线观看| 黄色片一级片一级黄色片| 成人18禁在线播放| 成人18禁高潮啪啪吃奶动态图| 欧美乱色亚洲激情| 人人妻人人澡欧美一区二区| 草草在线视频免费看| 性色av乱码一区二区三区2| 国内精品久久久久久久电影| 欧美一级a爱片免费观看看 | 正在播放国产对白刺激| 亚洲在线自拍视频| 国产激情欧美一区二区| 99久久99久久久精品蜜桃| 国产aⅴ精品一区二区三区波| 国产单亲对白刺激| 欧美色欧美亚洲另类二区| 欧洲精品卡2卡3卡4卡5卡区| 国产高清videossex| 久久久久久亚洲精品国产蜜桃av| 黄频高清免费视频| 女性生殖器流出的白浆| 免费av毛片视频| 波多野结衣高清作品| 久久中文看片网| 久久精品国产亚洲av香蕉五月| 国产野战对白在线观看| 国产精品亚洲一级av第二区| www.熟女人妻精品国产| 日韩有码中文字幕| 最近在线观看免费完整版| 欧美色视频一区免费| bbb黄色大片| 伦理电影免费视频| 一级毛片女人18水好多| 国产人伦9x9x在线观看| 欧美一级a爱片免费观看看 | 国产区一区二久久| 国内久久婷婷六月综合欲色啪| 人成视频在线观看免费观看| 亚洲国产精品成人综合色| 久久天躁狠狠躁夜夜2o2o| 嫁个100分男人电影在线观看| x7x7x7水蜜桃| 桃色一区二区三区在线观看| 久久久久久亚洲精品国产蜜桃av| 视频在线观看一区二区三区| 一级片免费观看大全| 久9热在线精品视频| 久久久久久久午夜电影| 亚洲国产看品久久| 黄色女人牲交| 99精品欧美一区二区三区四区| 国产精品二区激情视频| 两个人免费观看高清视频| 丰满的人妻完整版| 亚洲中文av在线| 丝袜美腿诱惑在线| 亚洲五月天丁香| 夜夜爽天天搞| 黄片大片在线免费观看| 麻豆av在线久日| 日韩高清综合在线| 99久久国产精品久久久| 日韩大码丰满熟妇| av福利片在线| 国内精品久久久久久久电影| 成年免费大片在线观看| 可以在线观看的亚洲视频| 久99久视频精品免费| 亚洲精品久久国产高清桃花| 亚洲精品国产精品久久久不卡| 久久久久亚洲av毛片大全| 久久国产亚洲av麻豆专区| 国产亚洲精品综合一区在线观看 | 最近最新中文字幕大全电影3 | 一级毛片高清免费大全| 亚洲av中文字字幕乱码综合 | 亚洲精品一区av在线观看| 自线自在国产av| 亚洲人成网站在线播放欧美日韩| 国产精品亚洲一级av第二区| 白带黄色成豆腐渣| 麻豆久久精品国产亚洲av| 国产精品综合久久久久久久免费| 亚洲三区欧美一区| 久久婷婷成人综合色麻豆| 久久久久国产精品人妻aⅴ院| 99国产精品一区二区三区| 亚洲天堂国产精品一区在线| 久久伊人香网站| xxx96com| 成人一区二区视频在线观看| 国产区一区二久久| 制服诱惑二区| 国产成人av教育| 久久草成人影院| 非洲黑人性xxxx精品又粗又长| 欧美乱妇无乱码| 国产国语露脸激情在线看| 这个男人来自地球电影免费观看| 老鸭窝网址在线观看| 久久久水蜜桃国产精品网| 亚洲精品久久成人aⅴ小说| 精品国产超薄肉色丝袜足j| 国产精品综合久久久久久久免费| 亚洲专区中文字幕在线| 久久久久国产精品人妻aⅴ院| 观看免费一级毛片| 国产成人av激情在线播放| 免费一级毛片在线播放高清视频| 美女扒开内裤让男人捅视频| 小蜜桃在线观看免费完整版高清| 亚洲精品一卡2卡三卡4卡5卡| 国产乱人视频| 有码 亚洲区| 亚洲av免费高清在线观看| 亚洲国产色片| 观看免费一级毛片| 亚洲精品一卡2卡三卡4卡5卡| 日韩精品青青久久久久久| 免费电影在线观看免费观看| 国产精品日韩av在线免费观看| 一本久久中文字幕| 桃色一区二区三区在线观看| 中文字幕精品亚洲无线码一区| 一级黄片播放器| 成年女人毛片免费观看观看9| 亚洲av中文字字幕乱码综合| 91在线观看av| 婷婷亚洲欧美| 国产精品无大码| 久久久久久大精品| 亚洲精品国产av成人精品 | 看片在线看免费视频| 在线播放无遮挡| 波野结衣二区三区在线| 一个人看视频在线观看www免费| 久久精品国产亚洲av天美| 成人欧美大片| 午夜福利18| 亚洲七黄色美女视频| 成人av在线播放网站| 午夜福利成人在线免费观看| 精品久久久久久成人av| 国产精品电影一区二区三区| 日本-黄色视频高清免费观看| 免费不卡的大黄色大毛片视频在线观看 | 国产高潮美女av| 久久久久久久午夜电影| 欧美xxxx黑人xx丫x性爽| 国产日本99.免费观看| 日本一本二区三区精品| 国产精品一区二区三区四区免费观看 | 国产一区二区三区av在线 | 嫩草影院精品99| 欧美色欧美亚洲另类二区| 一本精品99久久精品77| 日本熟妇午夜| 亚洲欧美日韩无卡精品| 天堂动漫精品| 亚洲五月天丁香| 欧美色欧美亚洲另类二区| 亚洲欧美清纯卡通| 性欧美人与动物交配| 尤物成人国产欧美一区二区三区| 免费看av在线观看网站| 亚洲av成人精品一区久久| 久久久久久久久中文| 国产伦在线观看视频一区| 国产视频一区二区在线看| 内射极品少妇av片p| 变态另类成人亚洲欧美熟女| 午夜福利高清视频| 国产成人91sexporn| 久久久精品欧美日韩精品| 中国国产av一级| 久久九九热精品免费| 国产亚洲欧美98| 国产av麻豆久久久久久久| 国产高清视频在线播放一区| 亚洲自偷自拍三级| 一本久久中文字幕| 十八禁国产超污无遮挡网站| 国产熟女欧美一区二区| 亚洲av美国av| 毛片女人毛片| av在线老鸭窝| 国产精品一区二区性色av| 一进一出好大好爽视频| 午夜亚洲福利在线播放| 男人的好看免费观看在线视频| 中文字幕免费在线视频6| 成人综合一区亚洲| 亚洲专区国产一区二区| av中文乱码字幕在线| 男女做爰动态图高潮gif福利片| 亚洲av美国av| 国产白丝娇喘喷水9色精品| 波野结衣二区三区在线| 日韩av不卡免费在线播放| 国产成人91sexporn| 岛国在线免费视频观看| 久久精品夜色国产| 91狼人影院| 欧美bdsm另类| av在线天堂中文字幕| av女优亚洲男人天堂| 欧美高清性xxxxhd video| 欧美高清成人免费视频www| 99国产极品粉嫩在线观看| 哪里可以看免费的av片| 亚洲精品国产成人久久av| 亚洲自偷自拍三级| 国产黄a三级三级三级人| 精品久久久久久久久亚洲| 婷婷精品国产亚洲av在线| 自拍偷自拍亚洲精品老妇| 高清午夜精品一区二区三区 | 久久精品夜夜夜夜夜久久蜜豆| 免费在线观看影片大全网站| 99视频精品全部免费 在线| 小蜜桃在线观看免费完整版高清| 日韩欧美精品免费久久| 亚洲aⅴ乱码一区二区在线播放| 国产精品精品国产色婷婷| 久久久久久大精品| 99riav亚洲国产免费| 国产美女午夜福利| 国产精品永久免费网站| 人妻丰满熟妇av一区二区三区| 18+在线观看网站| 亚洲国产精品久久男人天堂| 精品国内亚洲2022精品成人| 成人欧美大片| 国产黄片美女视频| 国产精品久久久久久久电影| 亚洲精品日韩在线中文字幕 | 亚洲国产精品国产精品| 校园春色视频在线观看| 亚洲欧美成人精品一区二区| 女同久久另类99精品国产91| 国产欧美日韩精品亚洲av| 免费看av在线观看网站| 看黄色毛片网站| 12—13女人毛片做爰片一| 久久久成人免费电影| 久久综合国产亚洲精品| 俺也久久电影网| 可以在线观看毛片的网站| 人人妻人人澡人人爽人人夜夜 | 亚洲国产色片| av专区在线播放| www日本黄色视频网| 性色avwww在线观看| 亚洲丝袜综合中文字幕| 国产女主播在线喷水免费视频网站 | 黄色一级大片看看| 成人国产麻豆网| 成人性生交大片免费视频hd| 在线播放无遮挡| avwww免费| 1024手机看黄色片| 精品少妇黑人巨大在线播放 | 1024手机看黄色片| 人妻丰满熟妇av一区二区三区| av天堂中文字幕网| 亚洲精品日韩av片在线观看| 日韩中字成人| 美女cb高潮喷水在线观看| 黄色欧美视频在线观看| 日韩一本色道免费dvd| 激情 狠狠 欧美| 免费黄网站久久成人精品| 最近视频中文字幕2019在线8| 九九久久精品国产亚洲av麻豆| av国产免费在线观看| 丰满人妻一区二区三区视频av| 日本欧美国产在线视频| 啦啦啦韩国在线观看视频| 成人毛片a级毛片在线播放| 我要看日韩黄色一级片| 亚洲不卡免费看| 欧美+亚洲+日韩+国产| 亚洲无线在线观看| 亚洲久久久久久中文字幕| 不卡视频在线观看欧美| 精品国产三级普通话版| 亚洲av第一区精品v没综合| 精品久久久久久成人av| 国产高清不卡午夜福利| 草草在线视频免费看| 国产精品久久久久久av不卡| 久久午夜福利片| 国产在线精品亚洲第一网站| 91久久精品电影网| 美女内射精品一级片tv| 老女人水多毛片| 身体一侧抽搐| 亚洲无线在线观看| 国产v大片淫在线免费观看| 亚洲人成网站在线播放欧美日韩| 亚洲精品国产成人久久av| 99热这里只有精品一区| 身体一侧抽搐| 搡老妇女老女人老熟妇| 欧美潮喷喷水| 久久这里只有精品中国| 麻豆成人午夜福利视频| 欧美高清成人免费视频www| 国产一区二区三区av在线 | 91午夜精品亚洲一区二区三区| 亚洲国产精品成人综合色| 午夜免费男女啪啪视频观看 | 亚洲四区av| 一个人看视频在线观看www免费| 热99在线观看视频| 99久国产av精品国产电影| 淫妇啪啪啪对白视频| 日韩人妻高清精品专区| 男女之事视频高清在线观看| 国产久久久一区二区三区| 身体一侧抽搐| 亚洲aⅴ乱码一区二区在线播放| 一级毛片aaaaaa免费看小| 亚洲精品日韩av片在线观看| 国产精品嫩草影院av在线观看| 91在线观看av| 丰满人妻一区二区三区视频av| 亚洲精品久久国产高清桃花| 国产精品一区二区免费欧美| 午夜福利在线观看免费完整高清在 | 精品久久久久久久久久免费视频| 成熟少妇高潮喷水视频| 成人欧美大片| 又粗又爽又猛毛片免费看| 男女边吃奶边做爰视频| 中文字幕精品亚洲无线码一区| 久久久久久久亚洲中文字幕| 小说图片视频综合网站| 人人妻,人人澡人人爽秒播| 国产av不卡久久| 久久精品国产亚洲网站| 啦啦啦观看免费观看视频高清| 日韩成人伦理影院| 亚洲av中文av极速乱| 97超视频在线观看视频| 91久久精品国产一区二区成人| 国内精品宾馆在线| 精品国内亚洲2022精品成人| 亚洲欧美日韩无卡精品| 欧美成人一区二区免费高清观看| 黄色欧美视频在线观看| 22中文网久久字幕| or卡值多少钱| 国产综合懂色| 亚洲精品日韩av片在线观看| 欧美激情在线99| 大又大粗又爽又黄少妇毛片口| 国产男靠女视频免费网站| 欧美成人a在线观看| 国产又黄又爽又无遮挡在线| 高清午夜精品一区二区三区 | 麻豆国产97在线/欧美| 国产aⅴ精品一区二区三区波| 精品国产三级普通话版| 狂野欧美白嫩少妇大欣赏| 身体一侧抽搐| 亚洲最大成人手机在线| 国产高清不卡午夜福利| 99九九线精品视频在线观看视频| 最近最新中文字幕大全电影3| 久久精品久久久久久噜噜老黄 | 欧美又色又爽又黄视频| 美女内射精品一级片tv| 日日摸夜夜添夜夜添av毛片| 国产精品免费一区二区三区在线| 国产精品一二三区在线看| 精品熟女少妇av免费看| 国产高清有码在线观看视频| 久久久久久久亚洲中文字幕| 不卡一级毛片| 一边摸一边抽搐一进一小说| 欧美日本视频| 免费电影在线观看免费观看| 秋霞在线观看毛片| 精品一区二区三区人妻视频| 一区二区三区四区激情视频 | 国产麻豆成人av免费视频| 中文资源天堂在线| 精品乱码久久久久久99久播| 欧美中文日本在线观看视频| 日本-黄色视频高清免费观看| av在线天堂中文字幕| 国产色爽女视频免费观看| 久久国产乱子免费精品| 别揉我奶头~嗯~啊~动态视频| 一个人看的www免费观看视频| 亚洲av一区综合| 日韩成人伦理影院| 变态另类丝袜制服| 色尼玛亚洲综合影院| 一级黄色大片毛片| 在线免费观看的www视频| 国模一区二区三区四区视频| 亚洲不卡免费看| 成人av一区二区三区在线看| 免费不卡的大黄色大毛片视频在线观看 | 国产一区二区在线av高清观看| 国产精品日韩av在线免费观看| 春色校园在线视频观看| 欧美另类亚洲清纯唯美| 两性午夜刺激爽爽歪歪视频在线观看| 国产精品无大码| 亚洲欧美日韩卡通动漫| 1024手机看黄色片| 看黄色毛片网站| 男女下面进入的视频免费午夜| 少妇猛男粗大的猛烈进出视频 | 99久国产av精品国产电影| 九九爱精品视频在线观看| 全区人妻精品视频| 日韩强制内射视频| 欧美国产日韩亚洲一区| .国产精品久久| 国产高清视频在线观看网站| 美女cb高潮喷水在线观看| 色5月婷婷丁香| 淫秽高清视频在线观看| 一级毛片aaaaaa免费看小| 久久中文看片网| 国产精品一区二区免费欧美| 男女做爰动态图高潮gif福利片| 久久精品国产99精品国产亚洲性色| 亚洲中文字幕一区二区三区有码在线看| 午夜福利在线观看吧| 欧美不卡视频在线免费观看| 两个人视频免费观看高清| 天天一区二区日本电影三级| 嫩草影院精品99| 色5月婷婷丁香| 观看美女的网站| 国产毛片a区久久久久| 亚洲av第一区精品v没综合| 不卡视频在线观看欧美| 欧美一区二区亚洲| 久久鲁丝午夜福利片| 18禁在线播放成人免费| 看黄色毛片网站| 久久久精品欧美日韩精品| 国产在线男女| av在线天堂中文字幕| 亚洲av中文字字幕乱码综合| 色吧在线观看| 人妻丰满熟妇av一区二区三区| 在线免费观看的www视频| 99久久成人亚洲精品观看| avwww免费| 亚洲欧美精品综合久久99| 精华霜和精华液先用哪个| 韩国av在线不卡| 亚洲精品亚洲一区二区| 一级毛片我不卡| 白带黄色成豆腐渣| 日韩欧美免费精品| 国产欧美日韩精品一区二区| 久久久久久久久大av| 成人鲁丝片一二三区免费| 免费看a级黄色片| 少妇人妻精品综合一区二区 | 别揉我奶头~嗯~啊~动态视频| 亚洲成人av在线免费| 69人妻影院| 国产探花极品一区二区| 综合色av麻豆| 亚洲性久久影院| 免费观看人在逋| 亚洲性久久影院| 超碰av人人做人人爽久久| 久久久久久久久中文| 国产国拍精品亚洲av在线观看| 亚洲图色成人| 婷婷色综合大香蕉| 免费看日本二区| 日韩精品有码人妻一区| 色av中文字幕| 国产高清激情床上av| 亚洲av电影不卡..在线观看| 2021天堂中文幕一二区在线观| 三级毛片av免费| 亚洲自拍偷在线| 别揉我奶头 嗯啊视频| 亚洲美女视频黄频|