多核多線程技術(shù)編程

多核多線程技術(shù)編程

ID:21390632

大小:60.00 KB

頁數(shù):5頁

時間:2018-10-21

多核多線程技術(shù)編程_第1頁
多核多線程技術(shù)編程_第2頁
多核多線程技術(shù)編程_第3頁
多核多線程技術(shù)編程_第4頁
多核多線程技術(shù)編程_第5頁
資源描述:

《多核多線程技術(shù)編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、兒年之侃,CPU的性能還主要取決于CPU的主頻,經(jīng)過超摩爾定律的發(fā)展后,沒過多長吋間CPU的主頻速度就已接近“極限”,使得單單靠提高CPU的主頻來提升性能變得非常困難。H前,Intel,AMD等CPU生產(chǎn)商都轉(zhuǎn)而采川了多核技術(shù)來提升CPU性能,其至提出了群核CPU的概念。這意味著,要充分發(fā)揮多核CPU的性能,程序就必須采用多線程并發(fā)計算的方式,傳統(tǒng)的串行程序?qū)O大地浪費多核CPU的運算能力!C++是上世紀(jì)80年代誕生的語言,它的前身是同樣風(fēng)靡全球的C語言。一直以來它都以代碼效率卓越著稱,進入多核時代fi,因為C++標(biāo)準(zhǔn)庫沒有提供多線程支持,要用C++開發(fā)出充分利用多核C

2、PU的程序?qū)t臨很大挑戰(zhàn)。干是,在C++社區(qū)岀現(xiàn)了不少優(yōu)秀的庫以支持并行編程,如各種跨平臺的線程庫,OpenMP,Clik++等。另一方面,微軟也從Win2K開始不斷地加入線程池API(如QueueUserWorkItem),C++09標(biāo)準(zhǔn)也明確地表示要加入多線程的支持。使川線程庫編寫并行程序的優(yōu)點是可以精確調(diào)度各個線程,并.R.可以在所冇C++編譯器垠使用。不過耍充分發(fā)揮多核CPU的性能,還??紤]很多W素,主耍難點有:?死鎖編寫多線程必然會遇到M步問題,如染M步控制出現(xiàn)問題,就討能出現(xiàn)死鎖或臟數(shù)據(jù)。?線程之間通信使川何種機制在多個線程之間通信?即要保證通信數(shù)據(jù)同步乂要保

3、證效率。?負(fù)載平衡分配到每個線程的工作量要盡量平衡,避免一個線程忙一個線程閑的怙形發(fā)生。?資源匹配程序應(yīng)該使用多少個線程?過少的線程不能充分利用CPU的多核優(yōu)勢,而過多的線程會造成線程凋度過于頻繁同樣會降低效率。OpenMP是目前比較流行的C++并行編程方式,它通過在代碼巾插入專用的pragma編譯指令來指示編譯器把串行代碼編譯成丼行程序。它的優(yōu)點是易于使用,幾乎不用修改原代碼就可對老程序進行并發(fā)文待的改造。問題是它必須要有編澤器的支持,盡管目前不少編譯器都提供了OpenMP的支持,侃它畢竟不是C++的-部分,甚至它都不是真正意義上的C++庫?!,F(xiàn)在,我們又有了一個新選擇

4、:IntelThreadBuildingBlocks(TBB,線程構(gòu)建模塊)。TBB是一個開源的C++模板庫,能夠運行在Windows、Linux、Macintosh以及UNIX等系統(tǒng)上,只要是標(biāo)準(zhǔn)的C++編譯器都可以使用它。以不足程序測試的實驗案例和測試結(jié)果:for(intj=0;j

5、序,其中的for(intp=0;p〈10000;p++)cout(p);是一個內(nèi)嵌了提高程序復(fù)雜性的函數(shù)的人循環(huán),主要是為了提尚程序的額外幵銷,以便于我們能夠明顯的觀察到多線程程序與單線程程序之間的性能差異。整個for程序執(zhí)行的流程如卜所示:j=0->k[j]=j-〉進行復(fù)雜運算_〉j!=j++并繼續(xù)下一個循環(huán)mam-1?:退出循環(huán)并順序顯示k[nuni]中的內(nèi)容有一點需耍注意的是,由于單線程的程序是順序執(zhí)行的,所以上而這個程序笫二個for語句其實是可以不必使用的,可以將它內(nèi)嵌入第一個for語句中:for(intj=0;j

6、000;p++)cout(p);//進行很大的for循環(huán),又調(diào)用函數(shù),主要目的就是讓它耗時間;printf(〃%d",k[i]);}這樣nJ■以減少程序額外開銷,但是對于多線程程序來說,這點開銷是必須的,如果輸出必須是順序的話,那我們有必??刂扑妮敵鲰樞?,否則將會Hi現(xiàn)亂序輸Hi-盡管結(jié)果是:lh:確的,假是輸出的順序卻足我們不想看到的。當(dāng)然,第二個for語句所增加的開銷,遠(yuǎn)遠(yuǎn)比不上外行稅序運行吋所節(jié)約的開銷。我們使川Intel的openmp技術(shù)來創(chuàng)建多線程的程序,因為openmp技術(shù)夠良觀,也很界易去分析與理解,所以我們無需去調(diào)用底層APT就能夠輕易的實現(xiàn)多線程編程。

7、要使用openmp技術(shù)就要安裝Intel編譯器及下的openmp組件,Intel編譯器可以很好的與VisualStdio整合在一起,起碼要求是你的計算機上必須安裝了Visual0+6.0。當(dāng)然,安裝完之后我們必須進行一些設(shè)置,以VisualStdio2008為例,如果我們想要使用openi叩技術(shù)的話,我們須在VC項目下右邊的“資源管理器”屮點“屬性”一“C/C++”一“語言”-有個“opernnp支持”選項,選“是(/openmp)”即可。另外我們必須在程序中插入〈omp.h〉的頭文件。做完了最基木的設(shè)置之V;,我們就可以丌始

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

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

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