基于多核程序優(yōu)化技術(shù)

基于多核程序優(yōu)化技術(shù)

ID:27549116

大小:1.08 MB

頁(yè)數(shù):43頁(yè)

時(shí)間:2018-12-02

基于多核程序優(yōu)化技術(shù)_第1頁(yè)
基于多核程序優(yōu)化技術(shù)_第2頁(yè)
基于多核程序優(yōu)化技術(shù)_第3頁(yè)
基于多核程序優(yōu)化技術(shù)_第4頁(yè)
基于多核程序優(yōu)化技術(shù)_第5頁(yè)
資源描述:

《基于多核程序優(yōu)化技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、基于多核的程序優(yōu)化技術(shù)多核架構(gòu)及編程技術(shù)內(nèi)容1、編譯回顧2、基于多核的程序優(yōu)化技術(shù)編譯回顧什么是編譯?用高級(jí)語(yǔ)言編制的程序,計(jì)算機(jī)不能立即執(zhí)行,必須通過(guò)一個(gè)“翻譯程序”加工,轉(zhuǎn)化為與其等價(jià)的機(jī)器語(yǔ)言程序,機(jī)器才能執(zhí)行。編譯過(guò)程是指將高級(jí)語(yǔ)言程序翻譯為等價(jià)的目標(biāo)程序的過(guò)程。編譯的作用?源程序編譯程序源程序的中間形式輸入數(shù)據(jù)解釋程序輸出數(shù)據(jù)詞法分析語(yǔ)法分析語(yǔ)義分析、生成中間代碼代碼優(yōu)化生成目標(biāo)程序編譯過(guò)程的5個(gè)基本階段:編譯過(guò)程是指將高級(jí)語(yǔ)言程序翻譯為等價(jià)的目標(biāo)程序的過(guò)程。代碼優(yōu)化代碼優(yōu)化:指編譯程序?yàn)榱松筛哔|(zhì)量的目標(biāo)程序而做的各種加工

2、和處理。目的:提高目標(biāo)代碼運(yùn)行效率時(shí)間效率:減少運(yùn)行時(shí)間空間效率:減少內(nèi)存容量原則:嚴(yán)格遵循“不能改變?cè)谐绦蛘Z(yǔ)義”原則。優(yōu)化的分類從優(yōu)化的層次,與機(jī)器是否有關(guān):獨(dú)立于機(jī)器的優(yōu)化與目標(biāo)機(jī)無(wú)關(guān)的優(yōu)化,通常是在中間代碼上進(jìn)行的優(yōu)化。與機(jī)器有關(guān)的優(yōu)化:充分利用系統(tǒng)資源(指令系統(tǒng),寄存器資源)。從優(yōu)化涉及的范圍,可以分為:局部?jī)?yōu)化:是指在基本塊內(nèi)進(jìn)行的優(yōu)化。循環(huán)優(yōu)化:對(duì)循環(huán)語(yǔ)句所生成的中間代碼序列上所進(jìn)行的優(yōu)化。全局優(yōu)化:跨越多個(gè)基本塊的全局范圍內(nèi)的優(yōu)化。并行編譯基礎(chǔ)并行編譯系統(tǒng):就是能夠處理并行程序設(shè)計(jì)語(yǔ)言,能夠?qū)崿F(xiàn)串行程序并行化,具有并行

3、優(yōu)化能力的編譯系統(tǒng)。并行編譯技術(shù)的主要內(nèi)容:串行程序的向量化和并行化。向量化:將串行程序中可向量化部分改寫成用向量運(yùn)算表示的等價(jià)程序;其編譯技術(shù)已趨成熟并行化:將串行程序中可并行化部分改寫成在多處理機(jī)上并行執(zhí)行的等價(jià)程序;難度大,涉及數(shù)據(jù)的私有化、分布和通信,以及并行任務(wù)劃分等問(wèn)題。借助于OpenMP。基于多核的程序優(yōu)化技術(shù)并行編程模型并行語(yǔ)言并行編譯器并行語(yǔ)言運(yùn)行時(shí)可伸縮的執(zhí)行環(huán)境多核處理器。多核軟件棧普遍并行編程多核編程和編譯是一重大挑戰(zhàn):一般的程序員經(jīng)常需要為多核處理器編程,即使對(duì)專家來(lái)說(shuō),并行編程也是一件難事。如何使并行編程變

4、得容易?并發(fā)控制并行化。并發(fā)控制通常會(huì)使用鎖?!i不可取。鎖存在根本性的問(wèn)題:容易出錯(cuò):忽略關(guān)鍵鎖、死鎖、有限級(jí)倒置、護(hù)送問(wèn)題。難以優(yōu)化性能:粗粒度鎖會(huì)妨礙并行,細(xì)粒鎖會(huì)導(dǎo)致高開銷。鎖的程序/庫(kù)線程不能隨意構(gòu)成。事務(wù)型內(nèi)存:基本的原子結(jié)構(gòu):HPCS語(yǔ)言(Fortress、X10、chapel)提供原子結(jié)構(gòu)以取代鎖。多線程的兩種方法本地線程(NativeThreading)OpenMP線程優(yōu)化關(guān)鍵選擇關(guān)鍵的代碼(費(fèi)時(shí)間的代碼)進(jìn)行多線程設(shè)計(jì)。如果不能確定程序的主要計(jì)算部分(?)借助于Intel?VTune?Analyzers來(lái)進(jìn)行程序

5、分析。一些要點(diǎn)建議使用IntelC++編譯器進(jìn)行編譯程序。使用Intel?MathKernelLibrary(IntelMKL)IntelMKL函數(shù)庫(kù)中提供了VML函數(shù),這些函數(shù)可以對(duì)超越函數(shù)(sin,cos,exp,log等)進(jìn)行優(yōu)化。提高程序性能?,F(xiàn)在串行上要調(diào)試通過(guò),然后再進(jìn)行多核多線程的編程工作。多線程后,用Intel線程監(jiān)測(cè)器進(jìn)行查找線程錯(cuò)誤:資源競(jìng)爭(zhēng)、線程死鎖等問(wèn)題。用IntelThreadProfiler工具開定位程序中負(fù)載不失衡或開銷過(guò)大的問(wèn)題。首先用OpenMP進(jìn)行并行編程。前面講過(guò),這里不再詳細(xì)描述。VTune?P

6、erformanceAnalyzer6.0優(yōu)化過(guò)程-IntelVTuneTM的使用有助于:找到算法的瓶頸由數(shù)據(jù)規(guī)劃引起的瓶頸應(yīng)用結(jié)構(gòu)的瓶頸系統(tǒng)級(jí)以及硬件的瓶頸術(shù)語(yǔ)-熱點(diǎn)(hotspot)hotspot是你的代碼花費(fèi)很長(zhǎng)時(shí)間執(zhí)行的區(qū)域。通過(guò)定位hotspot,VTune性能分析工具可以幫助你分析應(yīng)用程序的性能。但是簡(jiǎn)單的知道hotspot的位置是不夠的,你必須知道什么導(dǎo)致hotspot的產(chǎn)生,怎樣改進(jìn)通過(guò)對(duì)熱區(qū)的進(jìn)一步分析,你可以跟蹤關(guān)鍵的函數(shù)調(diào)用,監(jiān)控特殊的處理器事件,如cachemissHotspot與Bottleneck的區(qū)別Bo

7、ttleneck是系統(tǒng)中性能受到約束的位置VTune?PerformanceAnalyzer幫助你找到并刪除Bottlenecks.找到軟件Hotspots是一個(gè)分析方法,幫助你定位Bottlenecks.性能優(yōu)化方法有三種數(shù)據(jù)收集器Sampling取樣callgraph調(diào)用曲線圖countermonitor計(jì)數(shù)器監(jiān)控器兩種跟蹤位置的方法Problem:我需要知道你在哪花費(fèi)了多長(zhǎng)時(shí)間StatisticalSolution:我每30分鐘呼叫你InstrumentationSolution:每個(gè)地方有一個(gè)特殊的電話點(diǎn),你每到一個(gè)地點(diǎn)向我報(bào)

8、告第一種方法:我固定時(shí)間間隔給你電話優(yōu)點(diǎn):低開銷:沒(méi)有太多的中斷沒(méi)有建站點(diǎn)的開銷無(wú)論你在那里都能精確定位缺點(diǎn):如果你的雙手拿滿東西,我必須等待你可能第一次沒(méi)有聽到鈴聲,所以我不能精確確定我呼叫你時(shí),你在那里由于你不經(jīng)常去

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。