• <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)
    久久午夜亚洲精品久久| 啪啪无遮挡十八禁网站| 琪琪午夜伦伦电影理论片6080| 久久久久亚洲av毛片大全| 老司机在亚洲福利影院| 久久国产亚洲av麻豆专区| 久久人妻av系列| 亚洲avbb在线观看| 国产麻豆成人av免费视频| 69av精品久久久久久| 亚洲精品国产精品久久久不卡| 精品国产美女av久久久久小说| 亚洲国产精品999在线| 97碰自拍视频| 国产亚洲精品久久久久久毛片| 亚洲av五月六月丁香网| 欧美乱色亚洲激情| 50天的宝宝边吃奶边哭怎么回事| 老司机午夜福利在线观看视频| 久久精品成人免费网站| 亚洲aⅴ乱码一区二区在线播放 | 巨乳人妻的诱惑在线观看| 午夜两性在线视频| 一本大道久久a久久精品| 中文字幕av电影在线播放| 在线播放国产精品三级| 亚洲一码二码三码区别大吗| 18禁国产床啪视频网站| 日本三级黄在线观看| 国产欧美日韩精品亚洲av| 啦啦啦韩国在线观看视频| 最近最新中文字幕大全电影3 | 一边摸一边抽搐一进一小说| 女性被躁到高潮视频| 可以在线观看毛片的网站| 亚洲国产精品久久男人天堂| 欧美一级毛片孕妇| 在线看三级毛片| 亚洲一卡2卡3卡4卡5卡精品中文| 国产成人精品无人区| 成人亚洲精品一区在线观看| 亚洲狠狠婷婷综合久久图片| 黄频高清免费视频| 777久久人妻少妇嫩草av网站| 99精品在免费线老司机午夜| 色av中文字幕| 中出人妻视频一区二区| 99热6这里只有精品| 非洲黑人性xxxx精品又粗又长| 男人操女人黄网站| 国产精华一区二区三区| 亚洲aⅴ乱码一区二区在线播放 | www.999成人在线观看| 国产免费av片在线观看野外av| 国产在线观看jvid| 美女免费视频网站| 久久精品国产亚洲av香蕉五月| 欧美在线黄色| 日韩成人在线观看一区二区三区| 亚洲一区二区三区色噜噜| 久久久久久免费高清国产稀缺| 妹子高潮喷水视频| 亚洲成人免费电影在线观看| 久久香蕉精品热| 亚洲色图av天堂| 国产亚洲av高清不卡| 精品国产亚洲在线| 悠悠久久av| 久久久久久人人人人人| 欧美亚洲日本最大视频资源| 黄色 视频免费看| 精品国产亚洲在线| 99久久久亚洲精品蜜臀av| 日本免费一区二区三区高清不卡| www.自偷自拍.com| 999久久久国产精品视频| 精品电影一区二区在线| 男人舔奶头视频| 亚洲美女黄片视频| 中文字幕人成人乱码亚洲影| 在线永久观看黄色视频| 国产私拍福利视频在线观看| 天堂动漫精品| 99在线人妻在线中文字幕| 国产三级黄色录像| 成在线人永久免费视频| 18禁美女被吸乳视频| av在线天堂中文字幕| cao死你这个sao货| 日本 欧美在线| 嫁个100分男人电影在线观看| 久久天躁狠狠躁夜夜2o2o| 夜夜爽天天搞| 成人手机av| 三级毛片av免费| 国产97色在线日韩免费| 成年免费大片在线观看| 亚洲第一欧美日韩一区二区三区| 99热这里只有精品一区 | 亚洲五月色婷婷综合| 国产一区二区三区视频了| 悠悠久久av| 欧美+亚洲+日韩+国产| 亚洲成人精品中文字幕电影| 久久精品aⅴ一区二区三区四区| avwww免费| 黄片小视频在线播放| 国产一区二区在线av高清观看| 国产一区二区三区在线臀色熟女| or卡值多少钱| 叶爱在线成人免费视频播放| 亚洲性夜色夜夜综合| 国产精品av久久久久免费| 51午夜福利影视在线观看| 亚洲aⅴ乱码一区二区在线播放 | avwww免费| www.自偷自拍.com| 国产av在哪里看| 国产真人三级小视频在线观看| 一区二区日韩欧美中文字幕| 午夜福利一区二区在线看| 国产欧美日韩精品亚洲av| 日韩视频一区二区在线观看| 丝袜美腿诱惑在线| 亚洲国产欧美一区二区综合| av超薄肉色丝袜交足视频| 午夜福利视频1000在线观看| 午夜精品久久久久久毛片777| 精品一区二区三区四区五区乱码| 18禁黄网站禁片午夜丰满| bbb黄色大片| 亚洲成人久久爱视频| 日本一区二区免费在线视频| 亚洲成a人片在线一区二区| 热99re8久久精品国产| 少妇的丰满在线观看| 欧美成人免费av一区二区三区| √禁漫天堂资源中文www| 国产欧美日韩精品亚洲av| 午夜福利一区二区在线看| 国产av一区二区精品久久| 国产私拍福利视频在线观看| 十八禁网站免费在线| 国产av不卡久久| 成人亚洲精品一区在线观看| 搡老妇女老女人老熟妇| 大型av网站在线播放| 中亚洲国语对白在线视频| 国产成人影院久久av| 嫁个100分男人电影在线观看| 成人手机av| 午夜精品久久久久久毛片777| 在线观看免费午夜福利视频| 美女 人体艺术 gogo| 午夜老司机福利片| 成年女人毛片免费观看观看9| 亚洲男人的天堂狠狠| 99久久综合精品五月天人人| 日韩欧美在线二视频| 精品久久久久久久久久免费视频| 亚洲 欧美一区二区三区| 国内精品久久久久精免费| 可以在线观看毛片的网站| 看免费av毛片| 亚洲最大成人中文| 中文亚洲av片在线观看爽| 97碰自拍视频| 亚洲 国产 在线| 国产精品久久久av美女十八| 久久中文看片网| 老汉色av国产亚洲站长工具| 久久久精品欧美日韩精品| 69av精品久久久久久| 欧美色视频一区免费| 久久久精品国产亚洲av高清涩受| 丰满人妻熟妇乱又伦精品不卡| 一级毛片精品| 亚洲午夜理论影院| 亚洲一区中文字幕在线| 欧美日韩黄片免| 国产三级在线视频| 久久婷婷人人爽人人干人人爱| 淫秽高清视频在线观看| 亚洲精华国产精华精| 后天国语完整版免费观看| xxxwww97欧美| 久久午夜综合久久蜜桃| netflix在线观看网站| 精品福利观看| 亚洲自拍偷在线| 国产精品一区二区三区四区久久 | 一边摸一边抽搐一进一小说| 欧美日韩一级在线毛片| xxxwww97欧美| 最新美女视频免费是黄的| 99国产精品99久久久久| av免费在线观看网站| 老司机靠b影院| avwww免费| 丝袜美腿诱惑在线| 国产色视频综合| 国产精品亚洲av一区麻豆| 人人澡人人妻人| 欧美绝顶高潮抽搐喷水| 精品国产亚洲在线| 国产又爽黄色视频| 午夜福利免费观看在线| 视频在线观看一区二区三区| 操出白浆在线播放| 国产精品 欧美亚洲| 成人永久免费在线观看视频| 国产一区二区三区视频了| 午夜福利欧美成人| 淫秽高清视频在线观看| 丝袜人妻中文字幕| 久久久国产成人精品二区| 可以在线观看毛片的网站| 亚洲午夜精品一区,二区,三区| 日韩欧美国产一区二区入口| 深夜精品福利| а√天堂www在线а√下载| 欧美丝袜亚洲另类 | 日韩大尺度精品在线看网址| 中文字幕精品免费在线观看视频| 欧美一区二区精品小视频在线| 午夜福利一区二区在线看| a级毛片a级免费在线| 给我免费播放毛片高清在线观看| 欧美成人免费av一区二区三区| 色播在线永久视频| 老汉色∧v一级毛片| 国内揄拍国产精品人妻在线 | 久9热在线精品视频| 无人区码免费观看不卡| 国产片内射在线| 亚洲国产日韩欧美精品在线观看 | 色婷婷久久久亚洲欧美| 在线观看www视频免费| 97人妻精品一区二区三区麻豆 | 又大又爽又粗| 人妻久久中文字幕网| 久久精品影院6| 国产一区二区激情短视频| 午夜福利在线观看吧| 国产精品久久电影中文字幕| 亚洲一区二区三区不卡视频| 老司机靠b影院| 日韩欧美三级三区| www.www免费av| 校园春色视频在线观看| 色播在线永久视频| 午夜福利高清视频| 国产一卡二卡三卡精品| 国产亚洲精品久久久久5区| 夜夜夜夜夜久久久久| 真人做人爱边吃奶动态| 丝袜在线中文字幕| 国产91精品成人一区二区三区| 免费搜索国产男女视频| 最新在线观看一区二区三区| 成人精品一区二区免费| 久久久久久人人人人人| 欧美黄色片欧美黄色片| 免费人成视频x8x8入口观看| 首页视频小说图片口味搜索| 亚洲国产欧美网| 欧美亚洲日本最大视频资源| 国产私拍福利视频在线观看| 亚洲黑人精品在线| 国产亚洲欧美98| 91九色精品人成在线观看| 男人舔女人的私密视频| 亚洲无线在线观看| 别揉我奶头~嗯~啊~动态视频| 一卡2卡三卡四卡精品乱码亚洲| 中文资源天堂在线| 韩国精品一区二区三区| 日韩三级视频一区二区三区| 香蕉国产在线看| 欧美一级a爱片免费观看看 | 国产亚洲精品久久久久久毛片| 亚洲成人国产一区在线观看| 欧美成人一区二区免费高清观看 | 在线免费观看的www视频| 成人手机av| 50天的宝宝边吃奶边哭怎么回事| 动漫黄色视频在线观看| 中文字幕人妻丝袜一区二区| 亚洲国产精品成人综合色| 精品午夜福利视频在线观看一区| 亚洲午夜理论影院| 日本五十路高清| 亚洲狠狠婷婷综合久久图片| aaaaa片日本免费| 精品久久久久久久人妻蜜臀av| 免费在线观看影片大全网站| 哪里可以看免费的av片| 国产精华一区二区三区| 国产成人av激情在线播放| 欧美三级亚洲精品| www.999成人在线观看| 一级作爱视频免费观看| 免费在线观看日本一区| 免费在线观看影片大全网站| 欧美性猛交黑人性爽| 首页视频小说图片口味搜索| 欧美乱码精品一区二区三区| 久久久国产欧美日韩av| 一个人免费在线观看的高清视频| 99精品久久久久人妻精品| 亚洲av片天天在线观看| 成人三级黄色视频| 最近最新中文字幕大全免费视频| 91麻豆av在线| 老熟妇乱子伦视频在线观看| 国产精品久久久av美女十八| av超薄肉色丝袜交足视频| 国产av一区在线观看免费| 国产一区二区三区视频了| a级毛片a级免费在线| 精品无人区乱码1区二区| 欧美乱码精品一区二区三区| 91成人精品电影| 丁香欧美五月| 亚洲久久久国产精品| 国产精品美女特级片免费视频播放器 | 欧美一级a爱片免费观看看 | 日韩免费av在线播放| 女生性感内裤真人,穿戴方法视频| 一级作爱视频免费观看| 久久久久久久久中文| 精品人妻1区二区| 久久亚洲真实| 亚洲在线自拍视频| 99国产极品粉嫩在线观看| 亚洲精品美女久久av网站| 久久九九热精品免费| 看片在线看免费视频| 成人三级黄色视频| 1024视频免费在线观看| 制服人妻中文乱码| 亚洲全国av大片| 国产高清有码在线观看视频 | 18禁裸乳无遮挡免费网站照片 | 99久久久亚洲精品蜜臀av| 精品久久久久久久毛片微露脸| 国产亚洲欧美精品永久| 国产精品1区2区在线观看.| www.999成人在线观看| 女警被强在线播放| 一本大道久久a久久精品| 精品国产一区二区三区四区第35| 久久亚洲真实| 正在播放国产对白刺激| 欧美不卡视频在线免费观看 | 亚洲真实伦在线观看| a级毛片a级免费在线| 亚洲一区高清亚洲精品| 亚洲一区中文字幕在线| 999久久久精品免费观看国产| 久热这里只有精品99| 亚洲五月天丁香| 久久久久久久久免费视频了| 999精品在线视频| 黄色视频不卡| 两人在一起打扑克的视频| 欧美绝顶高潮抽搐喷水| 草草在线视频免费看| tocl精华| 亚洲国产欧美网| 精品国产一区二区三区四区第35| 午夜福利在线观看吧| 欧美久久黑人一区二区| 欧美一区二区精品小视频在线| 久久久久久大精品| 亚洲第一欧美日韩一区二区三区| 久热爱精品视频在线9| 免费在线观看完整版高清| 亚洲成a人片在线一区二区| 欧美精品啪啪一区二区三区| 色在线成人网| 亚洲国产欧美一区二区综合| 50天的宝宝边吃奶边哭怎么回事| 亚洲精品在线观看二区| 亚洲av第一区精品v没综合| 久久伊人香网站| 亚洲国产欧美日韩在线播放| 国产精品日韩av在线免费观看| 亚洲成国产人片在线观看| 中文亚洲av片在线观看爽| 欧美黑人欧美精品刺激| 免费在线观看亚洲国产| 美女国产高潮福利片在线看| 欧美激情 高清一区二区三区| 午夜精品久久久久久毛片777| 国产免费男女视频| 草草在线视频免费看| 欧美日韩福利视频一区二区| 亚洲va日本ⅴa欧美va伊人久久| 国产蜜桃级精品一区二区三区| 国产成人av教育| 激情在线观看视频在线高清| 欧美激情 高清一区二区三区| 亚洲成人久久爱视频| 日日摸夜夜添夜夜添小说| 日本黄色视频三级网站网址| 国产男靠女视频免费网站| 波多野结衣av一区二区av| 亚洲熟女毛片儿| 日本一本二区三区精品| 久久精品国产99精品国产亚洲性色| e午夜精品久久久久久久| 日日摸夜夜添夜夜添小说| 久久人人精品亚洲av| 日本 欧美在线| 亚洲av片天天在线观看| 他把我摸到了高潮在线观看| 亚洲人成伊人成综合网2020| 久久香蕉精品热| 搡老妇女老女人老熟妇| 亚洲天堂国产精品一区在线| 久久人人精品亚洲av| 香蕉国产在线看| 欧美激情久久久久久爽电影| 女生性感内裤真人,穿戴方法视频| 校园春色视频在线观看| 91字幕亚洲| 又大又爽又粗| 亚洲专区字幕在线| 亚洲av成人av| 精品久久久久久成人av| 午夜福利在线在线| 一本久久中文字幕| 中文字幕精品免费在线观看视频| 亚洲成人国产一区在线观看| 亚洲一区高清亚洲精品| 动漫黄色视频在线观看| 欧美成人性av电影在线观看| 久久 成人 亚洲| 少妇被粗大的猛进出69影院| av片东京热男人的天堂| 亚洲精品中文字幕在线视频| 日本 av在线| www.www免费av| 久久久久国产精品人妻aⅴ院| 欧美激情极品国产一区二区三区| 午夜久久久在线观看| 日韩欧美国产一区二区入口| a级毛片在线看网站| 中文字幕高清在线视频| 欧美黄色片欧美黄色片| 欧美日韩亚洲国产一区二区在线观看| 自线自在国产av| 成人手机av| 国产乱人伦免费视频| 久久久精品欧美日韩精品| 黄色a级毛片大全视频| av欧美777| e午夜精品久久久久久久| 久久婷婷成人综合色麻豆| 久久精品成人免费网站| 无限看片的www在线观看| 亚洲av电影在线进入| 午夜久久久在线观看| 国内少妇人妻偷人精品xxx网站 | 久久精品人妻少妇| 亚洲国产欧美一区二区综合| 国产免费男女视频| 精品久久久久久久毛片微露脸| 午夜免费鲁丝| 在线观看一区二区三区| 日本撒尿小便嘘嘘汇集6| 男人舔女人的私密视频| 禁无遮挡网站| 国产精品98久久久久久宅男小说| 中文字幕另类日韩欧美亚洲嫩草| 亚洲 欧美一区二区三区| 草草在线视频免费看| 最新在线观看一区二区三区| 国产爱豆传媒在线观看 | a在线观看视频网站| 岛国在线观看网站| videosex国产| 高潮久久久久久久久久久不卡| 婷婷六月久久综合丁香| 可以免费在线观看a视频的电影网站| 亚洲专区中文字幕在线| 青草久久国产| 亚洲精品一卡2卡三卡4卡5卡| 亚洲欧美一区二区三区黑人| 热re99久久国产66热| 丰满的人妻完整版| 美女扒开内裤让男人捅视频| 美女大奶头视频| 97超级碰碰碰精品色视频在线观看| 成人av一区二区三区在线看| 啪啪无遮挡十八禁网站| 国产精品亚洲美女久久久| 欧美日韩中文字幕国产精品一区二区三区| 国产av一区在线观看免费| 身体一侧抽搐| 十八禁人妻一区二区| 亚洲av五月六月丁香网| 欧美激情高清一区二区三区| 国产亚洲精品综合一区在线观看 | 天堂动漫精品| 在线播放国产精品三级| 中文字幕人成人乱码亚洲影| 欧美黄色淫秽网站| 女人高潮潮喷娇喘18禁视频| bbb黄色大片| 成人av一区二区三区在线看| 青草久久国产| 亚洲熟女毛片儿| 免费搜索国产男女视频| 欧美性长视频在线观看| 欧美性猛交黑人性爽| 亚洲av中文字字幕乱码综合 | 91老司机精品| 国产精品,欧美在线| 国产人伦9x9x在线观看| 色综合亚洲欧美另类图片| 欧美国产日韩亚洲一区| av在线播放免费不卡| 精品欧美一区二区三区在线| 婷婷精品国产亚洲av在线| 欧美日韩一级在线毛片| 亚洲一区二区三区色噜噜| 制服诱惑二区| 国产99白浆流出| 国产色视频综合| 黄网站色视频无遮挡免费观看| 日韩大码丰满熟妇| 亚洲欧美精品综合一区二区三区| 久久久久久久精品吃奶| 亚洲国产日韩欧美精品在线观看 | 一本久久中文字幕| 国产视频一区二区在线看| 母亲3免费完整高清在线观看| 757午夜福利合集在线观看| 久久精品国产亚洲av高清一级| 亚洲最大成人中文| 免费观看人在逋| 9191精品国产免费久久| 琪琪午夜伦伦电影理论片6080| 成人欧美大片| 国产精品日韩av在线免费观看| 亚洲中文日韩欧美视频| 一个人免费在线观看的高清视频| 亚洲精品av麻豆狂野| 美女高潮到喷水免费观看| 99国产精品99久久久久| 亚洲无线在线观看| netflix在线观看网站| 香蕉丝袜av| 国产免费男女视频| 国产伦人伦偷精品视频| 两性午夜刺激爽爽歪歪视频在线观看 | 少妇 在线观看| 视频在线观看一区二区三区| 久久国产精品影院| 十八禁人妻一区二区| 欧美三级亚洲精品| 国产精华一区二区三区| 亚洲精品在线美女| 制服诱惑二区| 午夜视频精品福利| 午夜老司机福利片| 国产av在哪里看| 亚洲一区高清亚洲精品| 国产又爽黄色视频| 法律面前人人平等表现在哪些方面| 国产高清激情床上av| 国产精品永久免费网站| 国产精品,欧美在线| 国产成人av激情在线播放| 日韩三级视频一区二区三区| 免费一级毛片在线播放高清视频| 90打野战视频偷拍视频| 波多野结衣巨乳人妻| 亚洲av电影在线进入| 成人永久免费在线观看视频| 午夜亚洲福利在线播放| 少妇熟女aⅴ在线视频| 国产高清有码在线观看视频 | 久久午夜综合久久蜜桃| 亚洲第一青青草原| 脱女人内裤的视频| 欧美日韩中文字幕国产精品一区二区三区| 99国产精品99久久久久| 听说在线观看完整版免费高清| 日本熟妇午夜| 视频在线观看一区二区三区| 国产精品亚洲一级av第二区| 国产欧美日韩一区二区精品| www.自偷自拍.com| 女人被狂操c到高潮| 国产又色又爽无遮挡免费看| 国产片内射在线| 长腿黑丝高跟| 成人精品一区二区免费| 亚洲av电影在线进入| 757午夜福利合集在线观看| 一边摸一边抽搐一进一小说| 欧美成人午夜精品| 欧美色视频一区免费| 天天躁夜夜躁狠狠躁躁| e午夜精品久久久久久久| av在线播放免费不卡| xxx96com| 欧美日韩中文字幕国产精品一区二区三区| 国产精品亚洲美女久久久| 日韩av在线大香蕉| 国产亚洲av高清不卡| 久9热在线精品视频|