青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

VTune工具使用心得

轉(zhuǎn)載自:http://hi.baidu.com/luguowei/blog/item/b19568e796feca2db93820c9.html/cmtid/4d3dd7f809696c01d9f9fdc9

0.     概述

VTuneIntel一個比較強(qiáng)大的性能分析軟件。主要包括三個小工具:

1Performance Analyzer:性能分析,找到軟件性能比較熱的部分,一般也就是性能瓶頸的關(guān)鍵點,幫助我們收集數(shù)據(jù)發(fā)現(xiàn)問題,至于Analyzer這個功能,有點大言不慚了,還得靠各位大家自己分析了,當(dāng)然個人認(rèn)為這一點會是Intel下一步強(qiáng)化該工具的重點。

2Intel Threading Checker用于查找線程錯誤能夠檢測資源競爭、線程死鎖等問題大家程序在并行化后,可以通過Threading Checker 檢測一下有沒有多線程相關(guān)的錯誤。

3Intel Threading Profiler:線程性能檢測工具,多線程化有可能會有負(fù)載比平衡同步開銷過大等等線程相關(guān)的性能問題。該工具可以幫你發(fā)現(xiàn)每一個線程每一時刻的狀態(tài)。

可以簡單認(rèn)為該工具是如下的使用順序:(發(fā)現(xiàn)可以多線程的代碼瓶頸)---進(jìn)行并行等編碼階段---(發(fā)現(xiàn)多線程中錯誤部分)---改正代碼bug階段---(發(fā)現(xiàn)多線程中有待提高的瓶頸部分)---優(yōu)化代碼性能階段。可以看出這套軟件針對代碼并行的實現(xiàn)有點服務(wù)到家的感覺,核心思想就是:找茬

另外推薦一個配套的工具,就是Intel C++ 編譯器,可以集成到VS2005或者命令行下,配套使用應(yīng)該會一些更好的效果,傳說中對Intel C++ 編譯器好像都是贊不絕口的,而且都是自家的東西,Intel肯定不會虧待它的。

還有一個網(wǎng)上推薦的東西,直接粘貼過來,沒有了解過,不好多加評論: Intel MKL 函數(shù)庫,提供了VML 函數(shù)這些函數(shù)可以對超越函數(shù)(sin, cos, exp, log)進(jìn)行優(yōu)化。

此外友情提示一下,如果你使用的是AMDCPU芯片,并一心決定以后繼續(xù)使用它的話,建議同學(xué)你就不用往下看了,理由就不告訴你了^_^

本文章主要是對VTune的一個初級使用的心得總結(jié),有什么不對的大家多扔板磚,算是一個拋磚引玉的作用吧,歡迎大家一起總結(jié)完善!

1.    Intel Performance Analyzer

對于該工具使用比較簡單,不過直接說一下,軟件名稱是性能分析,實際上只是對軟件操作進(jìn)行時間上的總結(jié)和統(tǒng)計,用戶自己需要根據(jù)數(shù)據(jù)進(jìn)行分析,總體來說,該性能分析工具同IBM的性能分析工具大致一樣,個人認(rèn)為還不如IBM的好用的,呵呵。

基本操作:

1)新建一個工程:File->new project,一般選Quick Performence Analysis Wizard就可以了。

2)選擇要測試的程序,在彈出的對話框中有Application to Launch,填入Debug文件下的exe程序就行了。

3Run Activity:按工具欄上的綠色三角按鈕就行了,一般會自動運(yùn)行程序,這時你執(zhí)行你想要的操作。本來還有些配置可以配的,不過比較麻煩,一般的分析就算了。

4)完了就會生成很多表,最麻煩的就是怎么看這些數(shù)據(jù)。左邊有這些數(shù)據(jù)的一個樹型列表,可以選擇看哪個統(tǒng)計表,中間就是相應(yīng)的圖表現(xiàn)實,圖表下面還有一個Legend窗口,解釋圖表中的符號各是什么意思。

       

上圖為分析的主界面。對于分析圖表的結(jié)果,看上去比較多,其實真正有用的就一個(個人看法),首先出現(xiàn)的就是一個框架的分析結(jié)果,有一個柱狀圖來體現(xiàn)各種dll和進(jìn)程的時間占用統(tǒng)計,當(dāng)鼠標(biāo)在每一個柱子上停留,ToolKit會顯示該進(jìn)程的平均執(zhí)行時間和執(zhí)行的次數(shù),右側(cè)Summary概述該進(jìn)程下占用的比例等統(tǒng)計,下面的legend說明機(jī)器的配置和一些名次解釋。

選擇進(jìn)入相應(yīng)的進(jìn)程,則看到對應(yīng)進(jìn)程中各個函數(shù)的對應(yīng)信息,在此不再詳細(xì)說明。這時通過統(tǒng)計圖可以發(fā)現(xiàn)程序性能主要的花費(fèi)部分,這時就要運(yùn)用你對代碼的了解和分析、經(jīng)驗發(fā)現(xiàn)性能提升的地方,也就是你的性能最應(yīng)該和最顯著提高,這時點擊你關(guān)系的函數(shù),如果你有該函數(shù)的實現(xiàn)文件(cpp),則可以結(jié)合Source File進(jìn)行一些簡單的分析,這里可以給你提供源代碼和匯編碼兩種方式來進(jìn)行體現(xiàn),供大家選擇。在Sampling Results中提供該進(jìn)程下各個函數(shù)的時間統(tǒng)計,定位到每一個執(zhí)行函數(shù)上(通常就是消耗時鐘時間最多的,即關(guān)鍵代碼)。如圖所示:

比如上面這個分析結(jié)果,該函數(shù)是對圖片像素進(jìn)行優(yōu)化分類、分割處理、生成結(jié)果的功能,具有大量的數(shù)字運(yùn)算和循環(huán),這也是我們最應(yīng)該和最有效采用多線程等手段提升效率的部分。源碼右邊的列表中給出了一些指令的執(zhí)行次數(shù)和執(zhí)行時間。經(jīng)過分析又可以定位一些比較重點改進(jìn)的指令。

總結(jié)此工具,和IBM的性能分析工具作用大致相同(個人感覺還是推薦IBM的,其實都差不多,主要是先入為主了,而且圖形界面比較直觀),該工具的Call Graph選項也和IBM那樣支持圖形分析,但是我在機(jī)子上運(yùn)行會崩潰,不知道為什么。該工具只是將分析的數(shù)據(jù)呈現(xiàn)給我們,而分析的過程還要依靠大家。另外,在源碼上點擊會出現(xiàn)一個窗口,顯示該行執(zhí)行的次數(shù)等一些分析結(jié)果,不過我這個版本該功能還是很弱的,近似于沒有用處,可能會在下面的版本有所提升。

注意:

1)該軟件支持Linux系統(tǒng),如果分析的軟件屬于跨平臺產(chǎn)品,可以根據(jù)各自情況查看是否有必要也同事在Linux下分析,個人認(rèn)為我們的軟件沒有太大必要,完全可以在Windows下分析,發(fā)現(xiàn)問題進(jìn)行改進(jìn),此功能主要針對只運(yùn)行在Linux平臺下的軟件的,所以沒有進(jìn)行研究。

2)該軟件支持遠(yuǎn)程模式,沒有發(fā)現(xiàn)我們的軟件是否有此功能的必要性,沒有進(jìn)行過多研究,只是發(fā)現(xiàn)一個帖子知道如何遠(yuǎn)程,會在附錄中添加上。

3)使用VTune GUI去收集數(shù)據(jù)可能VTune本身開銷會影響分析結(jié)果,所以VTune提供命令行的分析模式,基本語法在附件中,個人認(rèn)為現(xiàn)在我們在圖形界面下進(jìn)行分析也會有很大收獲,考慮到時間成本也沒有進(jìn)行過多研究。

2.Intel Thread Checker

非常不錯的一個工具,如果你用過上面性能分析的工具,這個上手也是比較容易的,界面和使用風(fēng)格上保持一致,簡單說這個工具也是對加鎖解鎖的數(shù)據(jù)收集和對死鎖的檢測,將程序運(yùn)行中發(fā)生的所有邏輯關(guān)系(讀寫操作)和認(rèn)為死鎖現(xiàn)象(時間過長)體現(xiàn)給程序員,讓大家進(jìn)行分析這些可能會導(dǎo)致deadlockdata races等問題。

基本操作:

1  New Project,在 New Project 對話框中,在 Category 下拉框里選擇 Threading Wizards ,在下面的 List View 中選擇 Intel? Thread Checker Wizard ,然后 OK 

2 選擇你想要檢測的程序,一定是Debug的,可以查看源代碼,這個應(yīng)該不是什么要求。

3 Run Activity:按工具欄上的綠色三角按鈕就行了,一般會自動運(yùn)行程序,這時你執(zhí)行你想要的操作。另外,對于死鎖問題,可以設(shè)定時間,在Configure---Options---Cpllector--- Synchronization中進(jìn)行設(shè)定,來定義你認(rèn)為作為死鎖的最小時間設(shè)定。

4 運(yùn)行結(jié)束后生成很多表,然后就是我們自己分析了。

下面就簡要說明一下這些表的作用和一些個人的使用心得:

上圖是運(yùn)行程序后生成的主界面(Diagnostics),以及源碼界面(Source View),這里最有用的信息主要是Short DescptionDescption這兩個列表內(nèi)容,第一個表主要是對該操作可能導(dǎo)致的并行問題的歸類,比如data racedeadlock等,如果對此類錯誤不是很理解,可以點擊右鍵在菜單中查看Diagnostics Help,會對此類型錯誤進(jìn)行一個概括的介紹,如下圖所示(介紹讀寫資源競爭):

如上是我在多線程程序中的一個數(shù)據(jù)競爭的現(xiàn)象的幫助文檔說明,其邏輯關(guān)系是Read該數(shù)據(jù)后Write該數(shù)據(jù),這種情況則可能會導(dǎo)致Data Race的問題,這在點上,Thread Checker則會把程序運(yùn)行中的各種出現(xiàn)的邏輯情況都羅列并定位到代碼所在行。

上圖是我在程序中的一個死鎖問題的幫助文檔的說明,給出可能的死鎖原因,正是我在程序中用到了WaitForSingleObject()函數(shù),導(dǎo)致了線程函數(shù)和進(jìn)程條死鎖的產(chǎn)生。同時可以定位到死鎖線程的源代碼,這時候,就需要我們仔細(xì)研究死鎖的原因了。下圖是我查看死鎖詳細(xì)描述定位到源代碼的界面(可見高亮顯示的兩個部分正是導(dǎo)致我線程死鎖的原因:創(chuàng)建后等待該線程,而此時線程調(diào)用MFC進(jìn)程條,而進(jìn)程條又在等該線程):

對于Descption中的內(nèi)容,則會闡述這個問題的具體內(nèi)容,可以定位到具體代碼行,雙擊可以切換到代碼,這時大家可以分析這行代碼了,所示重點懷疑對象了,當(dāng)然案件的真相和真兇則需要各位“偵探”來判斷啦。

以上是我對Data racedeadlock的兩個問題程序進(jìn)行的簡單的分析報告,根據(jù)Intel對該工具的介紹和相關(guān)資料,該工具主要就是針對這兩種情況進(jìn)行分析。一般并行運(yùn)算主要就是這兩種問題啦。(看資料應(yīng)該可以做出這個判斷)

總體來說該工具最有用的就是如上的兩個表的數(shù)據(jù)分析啦,當(dāng)然還有另外兩個表,一個是Stack Traces,這個主要是對堆棧跟蹤,可以發(fā)現(xiàn)該程序堆棧,看一下一共創(chuàng)建了多少個線程之類的信息。另外一個則是圖表統(tǒng)計,統(tǒng)計檢測到的問題的一個堆疊柱狀圖。感覺用處不大。下圖是堆棧跟蹤圖:

3.Intel Thread Profile

正如Intelflash演示中介紹的那樣,這款工具的作用就是:improved thread application performance.當(dāng)然坦白的說,要想讓工具自動實現(xiàn)這點不像說的那么簡單,準(zhǔn)確來說,它的作用應(yīng)該是幫助我們提高線程應(yīng)用的性能,重點在“幫助”上。相對以上兩個工具的作用和定位,感覺這款工具目前的功能和它自身的定位還是有一些差距的,沒有很多像上面兩個工具提供一些分析的作用,而只是對代碼多線程的一個統(tǒng)計和圖形的直觀顯示,畢竟,要想讓工具自己找到優(yōu)化方案是有點強(qiáng)人所難的。還有感覺網(wǎng)上對這款工具的使用介紹也不是很多,幾乎沒有,感覺不想上面兩款軟件應(yīng)用的廣泛或者大家的代碼還沒有達(dá)到這一階段的要求吧。操作方法還是保持的一致風(fēng)格,不用培訓(xùn),直接上手。

基本操作:

1 選擇你想要優(yōu)化的程序,Debug版本可以調(diào)試到源代碼。在這點上程序支持普通模式(支持Windows API等)和OpenMP專有兩個模式。這里選擇第一個了,第二個不會用啊。

2 Configure中可以配置一些選項,查看該優(yōu)化程序的Dependence等,推薦還是默認(rèn)吧,個人認(rèn)為足夠我們用的了。

3 點擊Finish運(yùn)行你的程序,運(yùn)行你的多線程程序吧,然后在運(yùn)行你需要檢測的程序功能后點擊結(jié)束。       

4 這時候則會生成一系列表格圖形讓大家分析。

         下面我來簡單介紹一下主要表的功能吧,都是一些很基本的方法,剛剛上手,這個工具的使用教程網(wǎng)上不多,還沒有研究很深入,需要以后在多線程開發(fā)中學(xué)以致用才是關(guān)鍵。

     TimeLine表:顧名思義就是時間線的統(tǒng)計,如下表所示,在這個表中,統(tǒng)計了所有線程按照時間軸的狀態(tài):

         上圖所示,在這個程序中,我創(chuàng)建了三個顯示,在加上主線程,一共四個,在這個時間軸中顯示了這四個線程從生到死的每一個瞬間,對于這些顏色,在右側(cè)會有說明,比較重要的比如綠色代表活動狀態(tài),淺綠代表等待。橙色代表至少一個線程運(yùn)行,灰色表示沒有此時沒有線程在運(yùn)行。這樣大家可以很清楚的看到每一個線程的全部狀態(tài),算是得到了程序線程運(yùn)行的最直接、最表面的第一手資料了。當(dāng)然秉承的VTune的一慣風(fēng)格,雙擊可以跟蹤到源代碼哦(如果你有的話)。

         Profile Filter表:對線程各種狀態(tài)的一個歸類,對此還不是很熟悉,是對時間表的各種狀態(tài)的一個統(tǒng)計直方圖,如下表所示:

         上圖是對剛才那個時間表中各種線程各種狀態(tài)花費(fèi)時間一個統(tǒng)計圖對比,灰色的是非活躍階段,橙色則是有一個線程活動的時間,統(tǒng)計出各個狀態(tài)的一個百分比。可以看出上面有許多不同的顯示方式,沒有太多研究,應(yīng)該是按照不同的分類方式來對下面時間表的一個體現(xiàn),大家可以按照自己的愛好去選擇吧。

         另外還有一個Summary表格,是對整個程序運(yùn)行的一個統(tǒng)計,在這個表格中數(shù)據(jù)要比圖表詳細(xì)很多,畢竟圖表只是一個通過圖形將一個重點數(shù)據(jù)更加直觀的表現(xiàn),信息量相對數(shù)據(jù)來說要小很多,在這個摘要中,創(chuàng)建線程數(shù),狀態(tài)都統(tǒng)計成表格,圖像如下:

         總體來說,我對這個工具研究的時間不是很多,也不是很了解,只是入門了,以后用到的時候在發(fā)揮啦,呵呵。這款軟件就是將各個線程狀態(tài)進(jìn)行一個統(tǒng)計和時間表現(xiàn)給大家,大家可以發(fā)現(xiàn)在某一時間多線程性能可能會有不盡如意的地方或還有很多提升空間,這樣大家可以抓住本質(zhì),重點來最有效的優(yōu)化我們的并行程序。


posted on 2010-09-21 02:15 楊粼波 閱讀(4700) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线观看你懂的| 久久久久国内| 亚洲欧美卡通另类91av| 亚洲一区二区在线视频| 亚洲欧美精品伊人久久| 午夜在线视频观看日韩17c| 欧美一进一出视频| 久久青青草原一区二区| 狂野欧美激情性xxxx欧美| 六月天综合网| 亚洲国产成人久久综合| 亚洲精品五月天| 久久国产精品第一页| 久久精品在线播放| 欧美成人激情在线| 亚洲精品美女在线观看| 亚洲图片激情小说| 久久aⅴ乱码一区二区三区| 麻豆av福利av久久av| 欧美黄在线观看| 国产精品色午夜在线观看| 国产日产欧美一区| 亚洲国产黄色片| 宅男噜噜噜66一区二区| 午夜精品久久久久久久蜜桃app| 久久国产精品99国产精| 欧美国产日韩一区二区在线观看| 亚洲精品久久视频| 亚洲综合另类| 久久综合伊人77777尤物| 欧美日韩精品欧美日韩精品一| 久久久99国产精品免费| 欧美亚洲一区二区三区| 另类专区欧美制服同性| 欧美日韩免费观看中文| 国产欧美69| 亚洲国产欧美日韩精品| 亚洲女女做受ⅹxx高潮| 免费观看成人www动漫视频| 亚洲看片一区| 久久疯狂做爰流白浆xx| 欧美日韩一级片在线观看| 韩国自拍一区| 亚洲图片欧美一区| 久久婷婷丁香| 99国产精品国产精品久久| 久久久久九九九九| 国产精品久久久久天堂| 亚洲国产一区二区精品专区| 亚洲欧美一区二区精品久久久| 美女脱光内衣内裤视频久久网站| 一区二区三区国产精华| 久久久久久亚洲精品杨幂换脸| 欧美视频在线观看| 亚洲欧洲日本一区二区三区| 欧美一区二区免费观在线| 亚洲欧洲中文日韩久久av乱码| 午夜欧美精品| 欧美日韩亚洲一区二| 亚洲精品国产视频| 久久午夜电影| 亚洲在线视频网站| 欧美日本一区二区三区| 亚洲电影在线看| 久久国产精品一区二区| 一区二区高清视频| 欧美大片免费观看在线观看网站推荐| 欧美另类在线播放| 亚洲国产成人精品久久| 久久精品日产第一区二区| 一本到高清视频免费精品| 免费在线亚洲欧美| 激情五月婷婷综合| 久久国产视频网站| 亚洲一区www| 欧美特黄视频| 亚洲无线观看| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩国产成人| 亚洲黄色有码视频| 久久免费高清视频| 欧美亚洲视频一区二区| 国产精品亚洲综合色区韩国| 亚洲婷婷国产精品电影人久久| 亚洲国产美女久久久久| 猫咪成人在线观看| 在线日韩中文| 免费成人黄色| 麻豆av福利av久久av| 亚洲国产精品电影| 欧美成人高清| 免费不卡在线观看| 亚洲人成网站777色婷婷| 欧美福利影院| 欧美激情1区| 日韩视频一区二区三区在线播放免费观看 | 亚洲激情校园春色| 亚洲丰满在线| 欧美日韩精品一区| 亚洲视频在线一区观看| 一区二区三欧美| 国产精品国产三级国产aⅴ浪潮| 亚洲午夜精品17c| 夜夜嗨av一区二区三区免费区 | 一区二区三区波多野结衣在线观看| 亚洲精品久久久久久久久久久久久| 欧美激情一区二区三区蜜桃视频| 亚洲免费电影在线观看| 99精品99| 国产精品资源在线观看| 久久青青草综合| 欧美88av| 中国亚洲黄色| 亚洲一区精品电影| 韩国精品久久久999| 免费成人黄色av| 欧美激情一区二区久久久| 亚洲色图在线视频| 香蕉久久一区二区不卡无毒影院| 国内成+人亚洲+欧美+综合在线| 蜜臀久久久99精品久久久久久| 牛牛国产精品| 亚洲一本大道在线| 欧美在线视频免费观看| 91久久在线视频| 亚洲少妇诱惑| 黄色在线成人| 亚洲精品中文字幕在线观看| 国产精品毛片a∨一区二区三区| 久久精品国产精品亚洲| 欧美成人69| 午夜精品在线看| 久久久久国产精品厨房| 99在线精品视频在线观看| 亚洲欧美日韩国产另类专区| 永久91嫩草亚洲精品人人| 99国产精品一区| 国产午夜精品全部视频在线播放| 欧美国产大片| 国产精品免费看片| 欧美黑人国产人伦爽爽爽| 国产精品久久波多野结衣| 久久先锋影音| 国产精品二区二区三区| 免费人成精品欧美精品| 欧美午夜美女看片| 毛片一区二区三区| 国产精品高潮呻吟| 欧美电影免费观看| 国产欧美一区二区色老头| 亚洲黄一区二区| 黄色日韩网站| 亚洲视频香蕉人妖| 亚洲人成网在线播放| 性色av一区二区三区在线观看 | 亚洲麻豆一区| 影音先锋中文字幕一区二区| 亚洲一区bb| 99热这里只有成人精品国产| 欧美一级二级三级蜜桃| 一区二区三区四区精品| 久久在线免费观看| 午夜欧美理论片| 欧美剧在线免费观看网站| 久久久久久免费| 国产精品美腿一区在线看| 亚洲娇小video精品| 精品av久久久久电影| 亚洲午夜免费视频| 一二三四社区欧美黄| 久久精品国产视频| 欧美亚洲一区| 欧美吻胸吃奶大尺度电影| 亚洲国产精品电影| 1024亚洲| 久久精品导航| 久久久精品免费视频| 国产精品伦理| 一区二区三区精密机械公司| 亚洲美女免费视频| 欧美sm重口味系列视频在线观看| 久久久久久亚洲精品不卡4k岛国| 国产精品青草久久久久福利99| 日韩亚洲欧美成人| 亚洲精品自在久久| 欧美大片专区| 亚洲福利国产精品| 91久久国产综合久久| 久久人人爽人人爽爽久久| 久久免费视频观看| 国产一区二区三区久久悠悠色av | 久久综合狠狠综合久久综合88| 久久精品视频导航| 国产视频一区在线| 欧美一区二区三区久久精品茉莉花| 欧美一级视频精品观看| 国产精品综合网站| 午夜日韩福利| 久久免费精品视频| 伊人精品成人久久综合软件|