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

一種基于mic架構(gòu)處理器的向量化優(yōu)化方法

文檔序號:6507560閱讀:265來源:國知局
一種基于mic架構(gòu)處理器的向量化優(yōu)化方法
【專利摘要】本發(fā)明提供了一種基于MIC架構(gòu)處理器的向量化優(yōu)化方法,涉及算法數(shù)據(jù)依賴關(guān)系分析、算法向量化調(diào)整優(yōu)化、向量化編譯三個主要步驟,具體內(nèi)容包括:算法的數(shù)據(jù)依賴分析、算法的向量化優(yōu)化調(diào)整、編譯器自動向量化技術(shù)、用戶介入的向量化優(yōu)化方法等。本發(fā)明提供的方法適用于MIC架構(gòu)處理器平臺的軟件優(yōu)化,指導軟件開發(fā)人員以較短的開發(fā)周期,較低的開發(fā)成本,快速高效地對現(xiàn)有軟件,尤其是核心算法進行向量優(yōu)化改造,實現(xiàn)軟件對向量處理器計算資源利用的最大化,最大限度地縮短軟件運行時間,顯著提高硬件資源利用率,提高軟件的計算效率和軟件整體性能。
【專利說明】一種基于MIC架構(gòu)處理器的向量化優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機高性能計算領(lǐng)域、科學計算領(lǐng)域,具體涉及一種基于MIC架構(gòu)處理器的向量化優(yōu)化方法。
【背景技術(shù)】
[0002]自從1996年Intel在奔騰處理器上集成了 MMX后,越來越多的通用處理器上集成了 SIMD (Single Instruction Multiple Data,單指令多數(shù)據(jù)流)硬件擴展,這種集成了SIMD處理架構(gòu)的處理器,稱為向量處理器。向量處理器的應用也越來越廣泛,從最初的多媒體應用擴展到各個應用領(lǐng)域,尤其在高性能計算領(lǐng)域,海量數(shù)據(jù)、大規(guī)模并行處理需求,對處理器的計算能力提出嚴峻挑戰(zhàn),向量化的并行處理,能有效提高并行處理效率和計算密度,提高硬件資源利用率,進而降低計算成本。
[0003]新的MIC架構(gòu)協(xié)處理器具備當前最寬的向量寬度,它構(gòu)建在至強處理器的并行架構(gòu)之上,通過集成眾多低功耗內(nèi)核,每一個處理器核具備一個512位的SIMD處理單兀和很多新的向量運算指令,MIC架構(gòu)處理器創(chuàng)造了在一個芯片上的超級計算機,超過每秒一萬億次的計算能力。
[0004]隨著MIC架構(gòu)處理器的推廣,其強大的SMD擴展技術(shù)將被廣泛應用,不僅為高性能計算提供了新的解決問題、提升性能的途徑,也帶來了一個新的問題——如何快速、高效地實現(xiàn)可靠的向量化并行處理,從而充分釋放MIC處理器的計算潛力?這是擺在軟件工程師面前的現(xiàn)實挑戰(zhàn)。

【發(fā)明內(nèi)容】

[0005]本發(fā)明的目的是提供一種基于MIC架構(gòu)處理器的向量化優(yōu)化方法。
[0006]本發(fā)明的目的是按以下方式實現(xiàn)的,內(nèi)容包括:I)對目標循環(huán)進行向量化可行性分析;2)向量化優(yōu)化;3)編譯器自動向量化;4)基于向量化編譯指示的向量化;5)算法向量化改造;6)向量化正確性驗證;通過重復以上迭代調(diào)優(yōu)過程,以實現(xiàn)循環(huán)向量化率最大化,其中:
1)對目標循環(huán)進行向量化可行性分析,是對需要向量化的循環(huán)進行數(shù)據(jù)依賴分析,排除循環(huán)迭代依賴,所謂循環(huán)迭代依賴,是指循環(huán)間存在前后依賴,導致循環(huán)不具有完全獨立性,不能并行處理,從而使該循環(huán)不能被向量化;
2)向量化優(yōu)化,是在數(shù)據(jù)依賴關(guān)系的基礎上,采用多種方法手段,使循環(huán)被向量化處
理;
3)編譯器自動向量化,是編譯器會自動分析循環(huán)間的數(shù)據(jù)依賴關(guān)系,并自主決定是否進行循環(huán)向量化;
4)基于向量化編譯指示的向量化,是基于數(shù)據(jù)依賴分析結(jié)果,通過在相應循環(huán)外添加編譯指示語句,指導編譯器對該循環(huán)進行向量化編譯;
5)算法向量化改造,是基于數(shù)據(jù)依賴分析結(jié)果,對算法/循環(huán)進行優(yōu)化改造,包括數(shù)據(jù)結(jié)構(gòu)調(diào)整、循環(huán)拆分、循環(huán)合并、循環(huán)嵌套順序調(diào)整;
6)向量化正確性驗證,是驗證向量化的正確性,體現(xiàn)在輸出結(jié)果正確,誤差在可以接受的范圍內(nèi),具體實施步驟、方法細則如下:
1)循環(huán)向量化可行性分析:
編譯器自動向量化過程中,可能收到某個循環(huán)無法被向量化的編譯信息報告,很多時候無法向量化的原因都是循環(huán)間存在著變量依賴關(guān)系,通過閱讀源代碼,理解算法,必要時進行測試,確認代碼中各循環(huán)結(jié)構(gòu)間的數(shù)據(jù)依賴關(guān)系,進行數(shù)據(jù)依賴關(guān)系分析,是為了下一步對循環(huán)進行優(yōu)化調(diào)整、并且介入編譯器向量化編譯行為;
向量化處理的實質(zhì),就是將原本串行循環(huán)處理的計算任務,轉(zhuǎn)換成若干循環(huán)同時處理的方式,因此,各次循環(huán)之間不能有前后的數(shù)據(jù)依賴關(guān)系,在實際操作中,編譯器通過設置私有變量、添加原子阻塞操作,實現(xiàn)廣義的向量化,這取決于向量化處理器硬件的設計及其所支持的指令集的設計,因此,循環(huán)可向量化的必要條件是:
a)循環(huán)之間不存在依賴關(guān)系,也就是說,所有的循環(huán)能同時執(zhí)行且互不干擾;
b)必須是內(nèi)層循環(huán),在一個嵌套的循環(huán)中,向量器只能嘗試向量化最內(nèi)層的循環(huán),查看向量器的輸出信息能知道循環(huán)是否被向量化以及原因,如果影響性能的關(guān)鍵循環(huán)沒有向量化,需要做一些算法調(diào)整,比如調(diào)整嵌套循環(huán)的順序;
另外,除了具備以上必要條件外,還要注意以下幾點:
Ca)向量化處理的數(shù)據(jù)類型盡量一致,需要向量化處理的語句,其包含的變量盡可能做到長度一致,即數(shù)據(jù)類型盡可能一致,盡量避免在同一表達式中同時出現(xiàn)單精度和雙精
度變量;
(b)向量化語句中盡可能避免函數(shù)調(diào)用:表達式中調(diào)用函數(shù),會增加語句的復雜度,干擾編譯器實施自動向量化,即使是標準的數(shù)學函數(shù),也要盡量避免,如果一定要使用,也要盡可能使函數(shù)精度與變量精度一致;
2)向量化優(yōu)化,采用以下方法,實現(xiàn)循環(huán)的向量化處理;
a)編譯器自動向量化
編譯器自動向量化依賴于編譯器自身的能力來消除內(nèi)存引用二義性,Intel C/C++編譯器默認向量化編譯選項為-vec,即默認情況下向量化是打開的,若關(guān)閉向量化,在編譯選項中添加-no-vec,編譯器在對源代碼進行編譯時,會輸出編譯信息/報告,某些編譯器有多個編譯信息輸出級別,其編譯信息輸出級別可使用-vec-report level控制,通過編譯器輸出的編譯信息報告,以了解編譯的詳細細節(jié),包括某個循環(huán)是否被向量化,向量化失敗的原因,這些信息能為向量優(yōu)化提供依據(jù)和指導;
b)基于向量化編譯指示的向量化
向量化編譯指示,能更好地指導編譯器進行數(shù)據(jù)依賴分析,從而更好地向量化代碼,包

—declspec (align(η))聲明能夠使編譯器克服硬件對齊的限制,restrict修飾詞和自動向量化提示解決了由于作用范圍、數(shù)據(jù)依賴和二義性等產(chǎn)生的問題,SIMD編譯指示使得最內(nèi)層的循環(huán)被強制向量化,使用向量化編譯指令是有風險的,使用的前提條件是程序員必須確保不存在數(shù)據(jù)依賴;其中SB?編譯指示有五個可供選擇的子句來指導編譯器執(zhí)行何種向量化,恰當?shù)厥褂眠@些子句,會讓編譯器獲得足夠的信息來產(chǎn)生正確的向量化代碼,其中:
(1)vectorlength (numl, num2,…,numN)
指導向量優(yōu)化單元可以從指定的若干向量長度(VL)numl, num2,…,numN中選擇來向量化循環(huán),對于選定的VL,向量循環(huán)的每一次執(zhí)行的計算工作相當于原來標量循環(huán)VL次執(zhí)行的計算工作,多個向量長度子句會合并成一個集合;
(2)private (exprl, expr2,…,exprN)
指導向量優(yōu)化單元使得這些左值(L-value)表達式exprl, exper2,...,exprN對于每一次循環(huán)都是私有的,多個private子句會合并成一個集合,左值表達式的初值將被廣播到所有的私有子句,除非編譯器能夠判定初值未在循環(huán)體內(nèi)使用;左值表達式的終值也會被從最后一次執(zhí)行的循環(huán)體復制出來,除非編譯器能夠判定終值未在循環(huán)后被使用;
(3)linear (varl: stepl, var2: step2,...,varN: stepN)
指導編譯器每一次標量循環(huán)的執(zhí)行時,varl的值增加stepl, var2的值增加step2,依此類推,相應地,每次向量循環(huán)的執(zhí)行,使得這些變量的值分別增加VL*stepl, VL*step2,…,VL*stepN,多個linear子句會被合并成一個集合,如果var被賦予兩個或多個step值,會產(chǎn)生一個編譯錯誤;
(4)reduction (oper: varl, var2,…,varN)
指導編譯器對于變量varl, var2,…,varN執(zhí)行向量化規(guī)約操作oper,—個SIMD編譯指示有多個歸約子句,執(zhí)行相同或者不同的操作,如果一個變量var與兩個或多個不同的歸約操作oper有關(guān),會產(chǎn)生一個編譯錯誤;
(5)[no]assert
指導編譯器當向量化失敗時是否報錯,缺省是不報錯的,一個SIMD編譯指令不應該存在多個該子句,否則會產(chǎn)生一個編譯錯誤,為了向量化一個包含潛在依賴關(guān)系的循環(huán),用戶經(jīng)過數(shù)據(jù)依賴分析后,確認其不存在循環(huán)間數(shù)據(jù)依賴,可加i#pragma ivdep提示編譯器忽略存在的數(shù)據(jù)依賴關(guān)系;
當向量化以上代碼段中的循環(huán)時,編譯器會認為該循環(huán)存在循環(huán)間依賴,即第j次循環(huán)依賴第j+k次循環(huán)的結(jié)果,這種依賴關(guān)系稱為交叉迭代依賴,而如果確定k>16,超過MICVPU的向量處理寬度,循環(huán)間就不存在實際意義上的數(shù)據(jù)依賴,加上#pragma ivdep指示編譯器忽略數(shù)據(jù)的依賴關(guān)系并嘗試進行向量化,甚至使用#pragma simd強制向量化該循環(huán),如果L〈k〈16,那么使用#pragma simd vectorlength (L)強制向量化該循環(huán),并且能保證結(jié)果的正確性;
3)算法向量化改造
如果采用以上兩種向量化方式,還有部分循環(huán)無法實現(xiàn)向量化,在數(shù)據(jù)依賴分析的基礎上,對算法進行深度優(yōu)化改進,向量化改造方法有:
a)調(diào)整嵌套循環(huán)的順序
b)自動向量化只能對嵌套中的最內(nèi)層的循環(huán)進行向量化,然而內(nèi)層循環(huán)向量化效果未必最好,通過調(diào)整嵌套循環(huán)的順序達到更好的向量化效果,如調(diào)整之后的向量化能實現(xiàn)更好的連續(xù)訪問;
c)拆分循環(huán)
在某些情況下,除了最內(nèi)層的循環(huán)比較耗時外,其它不在最內(nèi)層循環(huán)的代碼也比較耗時,而這部分代碼是無法自動向量化的,為此,采取拆分循環(huán)的方法實現(xiàn)更多的自動向量化,通過對循環(huán)的拆分,能使更多的代碼自動向量化,獲取更好的向量化性能;
d)手寫SMD指令向量化
第一代 Intel MIC 產(chǎn)品為 KNC(Knights Corner), Knights Corner Instructions 是KNC支持的SMD指令的總稱,是類似于SSE、AVX的指令集,通過使用Knights Corner指令,能細粒度地控制向量化運算;
Knights Corner Instructions 分類:
(1)Knights Corner 指令 Knights Corner instruction 是指具體的 SIMD 指令,是匯編指令集中關(guān)于SMD的子集;
(2)內(nèi)建Knights Corner (Intrinsics of Knights Corner)是對 Knights Corner 指令的封裝,幾乎涉及到所有指令,認為這些函數(shù)和數(shù)據(jù)類型是C/C++的內(nèi)建類型;
Knights Corner 類庫 Knights Corner Class Libraries 是為了方便使用 KnightsCorner指令而做的封裝,讓程序員盡量簡單地使用SMD指令,介于引語方式和SMD代碼之間;其支持整型和浮點型數(shù)據(jù);
4)向量化正確性驗證
編譯源代碼,然后運行程序,檢查程序的輸出結(jié)果,驗證向量化的正確性,向量化可能會帶來精度損失,必要時通過編譯器的-fp-model選項,調(diào)整向量化的精度;
5)迭代調(diào)優(yōu)
重復以上過程,以實現(xiàn)循環(huán)向量化率最大化,從而使MIC處理器VPU的計算性能盡可能發(fā)揮出來;
6)性能測試及分析,包括:
(1)測試環(huán)境_
【權(quán)利要求】
1.一種基于Mic架構(gòu)處理器的向量化優(yōu)化方法,其特征在于,內(nèi)容包括:1)對目標循環(huán)進行向量化可行性分析;2)向量化優(yōu)化;3)編譯器自動向量化;4)基于向量化編譯指示的向量化;5)算法向量化改造;6)向量化正確性驗證;通過重復以上迭代調(diào)優(yōu)過程,以實現(xiàn)循環(huán)向量化率最大化,其中: 1)對目標循環(huán)進行向量化可行性分析,是對需要向量化的循環(huán)進行數(shù)據(jù)依賴分析,排除循環(huán)迭代依賴,所謂循環(huán)迭代依賴,是指循環(huán)間存在前后依賴,導致循環(huán)不具有完全獨立性,不能并行處理,從而使該循環(huán)不能被向量化; 2)向量化優(yōu)化,是在數(shù)據(jù)依賴關(guān)系的基礎上,采用多種方法手段,使循環(huán)被向量化處理; 3)編譯器自動向量化,是編譯器會自動分析循環(huán)間的數(shù)據(jù)依賴關(guān)系,并自主決定是否進行循環(huán)向量化; 4)基于向量化編譯指示的向量化,是基于數(shù)據(jù)依賴分析結(jié)果,通過在相應循環(huán)外添加編譯指示語句,指導編譯器對該循環(huán)進行向量化編譯; 5)算法向量化改造,是基于數(shù)據(jù)依賴分析結(jié)果,對算法/循環(huán)進行優(yōu)化改造,包括數(shù)據(jù)結(jié)構(gòu)調(diào)整、循環(huán)拆分、循環(huán)合并、循環(huán)嵌套順序調(diào)整; 6)向量化正確性驗證,是驗證向量化的正確性,體現(xiàn)在輸出結(jié)果正確,誤差在可以接受的范圍內(nèi),具體實施步驟、方法細則如下: 1)循環(huán)向量化可行性分析: 編譯器自動向量化過程.中,可能收到某個循環(huán)無法被向量化的編譯信息報告,很多時候無法向量化的原因都是循環(huán)間存在著變量依賴關(guān)系,通過閱讀源代碼,理解算法,必要時進行測試,確認代碼中各循環(huán)結(jié)構(gòu)間的數(shù)據(jù)依賴關(guān)系,進行數(shù)據(jù)依賴關(guān)系分析,是為了下一步對循環(huán)進行優(yōu)化調(diào)整、并且介入編譯器向量化編譯行為; 向量化處理的實質(zhì),就是將原本串行循環(huán)處理的計算任務,轉(zhuǎn)換成若干循環(huán)同時處理的方式,因此,各次循環(huán)之間不能有前后的數(shù)據(jù)依賴關(guān)系,在實際操作中,編譯器通過設置私有變量、添加原子阻塞操作,實現(xiàn)廣義的向量化,這取決于向量化處理器硬件的設計及其所支持的指令集的設計,因此,循環(huán)可向量化的必要條件是: a)循環(huán)之間不存在依賴關(guān)系,也就是說,所有的循環(huán)能同時執(zhí)行且互不干擾; b)必須是內(nèi)層循環(huán),在一個嵌套的循環(huán)中,向量器只能嘗試向量化最內(nèi)層的循環(huán),查看向量器的輸出信息能知道循環(huán)是否被向量化以及原因,如果影響性能的關(guān)鍵循環(huán)沒有向量化,需要做一些算法調(diào)整,比如調(diào)整嵌套循環(huán)的順序; 另外,除了具備以上必要條件外,還要注意以下幾點: Ca)向量化處理的數(shù)據(jù)類型盡量一致,需要向量化處理的語句,其包含的變量盡可能做到長度一致,即數(shù)據(jù)類型盡可能一致,盡量避免在同一表達式中同時出現(xiàn)單精度和雙精度變量; (b)向量化語句中盡可能避免函數(shù)調(diào)用:表達式中調(diào)用函數(shù),會增加語句的復雜度,干擾編譯器實施自動向量化,即使是標準的數(shù)學函數(shù),也要盡量避免,如果一定要使用,也要盡可能使函數(shù)精度與變量精度一致; 2)向量化優(yōu)化,采用以下方法,實現(xiàn)循環(huán)的向量化處理; a)編譯器自動向量化編譯器自動向量化依賴于編譯器自身的能力來消除內(nèi)存引用二義性,Intel C/C++編譯器默認向量化編譯選項為-vec,即默認情況下向量化是打開的,若關(guān)閉向量化,在編譯選項中添加-no-vec,編譯器在對源代碼進行編譯時,會輸出編譯信息/報告,某些編譯器有多個編譯信息輸出級別,其編譯信息輸出級別可使用-vec-report level控制,通過編譯器輸出的編譯信息報告,以了解編譯的詳細細節(jié),包括某個循環(huán)是否被向量化,向量化失敗的原因,這些信息能為向量優(yōu)化提供依據(jù)和指導; b )基于向量化編譯指示的向量化 向量化編譯指示,能更好地指導編譯器進行數(shù)據(jù)依賴分析,從而更好地向量化代碼,包括 —declspec (align(η))聲明能夠使編譯器克服硬件對齊的限制,restrict修飾詞和自動向量化提示解決了由于作用范圍、數(shù)據(jù)依賴和二義性等產(chǎn)生的問題,SIMD編譯指示使得最內(nèi)層的循環(huán)被強制向量化,使用向量化編譯指令是有風險的,使用的前提條件是程序員必須確保不存在數(shù)據(jù)依賴;其中SMD編譯指示有五個可供選擇的子句來指導編譯器執(zhí)行何種向量化,恰當?shù)厥褂眠@些子句,會讓編譯器獲得足夠的信息來產(chǎn)生正確的向量化代碼,其中:
(1)vectorlength (numl, num2,…,numN) 指導向量優(yōu)化單元可以從指定的若干向量長度(VL)numl, num2,…,numN中選擇來向量化循環(huán),對于選定的VL,向量循環(huán)的每一次執(zhí)行的計算工作相當于原來標量循環(huán)VL次執(zhí)行的計算工作,多個向量長度子句會合并成一個集合;
(2)private (exprl, expr`2,…,exprN) 指導向量優(yōu)化單元使得這些左值(L-value)表達式exprl, exper2,...,exprN對于每一次循環(huán)都是私有的,多個private子句會合并成一個集合,左值表達式的初值將被廣播到所有的私有子句,除非編譯器能夠判定初值未在循環(huán)體內(nèi)使用;左值表達式的終值也會被從最后一次執(zhí)行的循環(huán)體復制出來,除非編譯器能夠判定終值未在循環(huán)后被使用;
(3)linear (varl: stepl, var2: step2,...,varN: stepN) 指導編譯器每一次標量循環(huán)的執(zhí)行時,varl的值增加stepl, var2的值增加step2,依此類推,相應地,每次向量循環(huán)的執(zhí)行,使得這些變量的值分別增加VL*stepl, VL*step2,…,VL*stepN,多個linear子句會被合并成一個集合,如果var被賦予兩個或多個step值,會產(chǎn)生一個編譯錯誤;
(4)reduction (oper: varl, var2,…,varN) 指導編譯器對于變量varl, var2,…,varN執(zhí)行向量化規(guī)約操作oper,—個SIMD編譯指示有多個歸約子句,執(zhí)行相同或者不同的操作,如果一個變量var與兩個或多個不同的歸約操作oper有關(guān),會產(chǎn)生一個編譯錯誤;
(5)[no]assert 指導編譯器當向量化失敗時是否報錯,缺省是不報錯的,一個SIMD編譯指令不應該存在多個該子句,否則會產(chǎn)生一個編譯錯誤,為了向量化一個包含潛在依賴關(guān)系的循環(huán),用戶經(jīng)過數(shù)據(jù)依賴分析后,確認其不存在循環(huán)間數(shù)據(jù)依賴,可加i#pragma ivdep提示編譯器忽略存在的數(shù)據(jù)依賴關(guān)系; 當向量化以上代碼段中的循環(huán)時,編譯器會認為該循環(huán)存在循環(huán)間依賴,即第j次循環(huán)依賴第j+k次循環(huán)的結(jié)果,這種依賴關(guān)系稱為交叉迭代依賴,而如果確定k>16,超過MICVPU的向量處理寬度,循環(huán)間就不存在實際意義上的數(shù)據(jù)依賴,加上#pragma ivdep指示編譯器忽略數(shù)據(jù)的依賴關(guān)系并嘗試進行向量化,甚至使用#pragma simd強制向量化該循環(huán),如果L〈k〈16,那么使用#pragma simd vectorlength (L)強制向量化該循環(huán),并且能保證結(jié)果的正確性; 3)算法向量化改造 如果采用以上兩種向量化方式,還有部分循環(huán)無法實現(xiàn)向量化,在數(shù)據(jù)依賴分析的基礎上,對算法進行深度優(yōu)化改進,向量化改造方法有: a)調(diào)整嵌套循環(huán)的順序; b)自動向量化只能對嵌套中的最內(nèi)層的循環(huán)進行向量化,然而內(nèi)層循環(huán)向量化效果未必最好,通過調(diào)整嵌套循環(huán)的順序達到更好的向量化效果,如調(diào)整之后的向量化能實現(xiàn)更好的連續(xù)訪問; c )拆分循環(huán) 在某些情況下,除了最內(nèi)層的循環(huán)比較耗時外,其它不在最內(nèi)層循環(huán)的代碼也比較耗時,而這部分代碼是無法自動向量化的,為此,采取拆分循環(huán)的方法實現(xiàn)更多的自動向量化,通過對循環(huán)的拆分,能使更多的代碼自動向量化,獲取更好的向量化性能; d)手寫SMD指令向量化 第一代 Intel MIC 產(chǎn)品為 KNC(Knights Corner), Knights Corner Instructions 是KNC支持的SMD指令的總稱,是類似于SSE、AVX的指令集,通過使用Knights Corner指令,能細粒度地控制向量化運算;
Knights Corner I nstructions 分類: (1)Knights Corner 指令 Knights Corner instruction 是指具體的 SIMD 指令,是匯編指令集中關(guān)于SMD的子集;
(2)內(nèi)建Knights Corner (Intrinsics of Knights Corner)是對 Knights Corner 指令的封裝,幾乎涉及到所有指令,認為這些函數(shù)和數(shù)據(jù)類型是C/C++的內(nèi)建類型; Knights Corner 類庫 Knights Corner Class Libraries 是為了方便使用 KnightsCorner指令而做的封裝,讓程序員盡量簡單地使用SMD指令,介于引語方式和SMD代碼之間;其支持整型和浮點型數(shù)據(jù); 4)向量化正確性驗證 編譯源代碼,然后運行程序,檢查程序的輸出結(jié)果,驗證向量化的正確性,向量化可能會帶來精度損失,必要時通過編譯器的-fp-model選項,調(diào)整向量化的精度; 5)迭代調(diào)優(yōu) 重復以上過程,以實現(xiàn)循環(huán)向量化率最大化,從而使MIC處理器VPU的計算性能盡可能發(fā)揮出來; 6)性能測試及分析,包括: (1)測試環(huán)境 (2)性能測試結(jié)果 (3)性能測試結(jié)果分析 利用該方法對矩陣乘法應用案例進行向量化改造后,顯著地提升了該MIC模塊的運行效率,獲得了較高的性能加速比。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,編譯過程中所使用的編譯器,是支持MIC架構(gòu)及其指令集的任意編譯器,該編譯器生成的目標代碼,直接或通過后續(xù)編譯處理后,能夠運行于MIC架構(gòu) 處理器。
【文檔編號】G06F17/16GK103440229SQ201310349628
【公開日】2013年12月11日 申請日期:2013年8月12日 優(yōu)先權(quán)日:2013年8月12日
【發(fā)明者】吳慶 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
罗城| 弥渡县| 英德市| 永嘉县| 潍坊市| 高青县| 新昌县| 定安县| 镇原县| 新竹县| 宣武区| 依安县| 靖宇县| 石河子市| 恭城| 舒城县| 东城区| 乳山市| 灯塔市| 宜兰市| 元谋县| 柘荣县| 哈巴河县| 贺州市| 宁武县| 沂源县| 樟树市| 汉源县| 尼勒克县| 凉城县| 宁晋县| 广宗县| 略阳县| 普定县| 扎鲁特旗| 潼关县| 浦江县| 射阳县| 莱州市| 郑州市| 开远市|