本發(fā)明涉及gpu性能分析領域,更具體地,涉及一種gpu驅動性能分析方法。
背景技術:
1、隨著gpu芯片技術的不斷更新,gpu芯片具有強大的計算和圖形渲染能力,在航天航空、人工智能、工業(yè)自動化等領域得到了廣泛的應用。gpu驅動性能對于時間敏感型業(yè)務場景的可靠性、穩(wěn)定性、事件響應時間具有關鍵作用。
2、在gpu驅動性能分析時,目前常用的有以下幾種方法:
3、(1)使用gprof性能分析工具,通過分析gpu應用程序運行時產(chǎn)生的“flatprofile”,可以得到gpu驅動中每個函數(shù)的調用次數(shù)、調用時間、調用關系等;
4、(2)使用perf性能分析工具,可對gpu應用程序進行采樣,記錄采樣的數(shù)據(jù),并生成火焰圖。通過分析火焰圖頂層的顯示,可直觀的查看gpu驅動函數(shù)的性能狀況。
5、在gpu驅動性能分析的具體實施過程中:發(fā)現(xiàn)基于gprof和perf性能分析工具的分析方法,至少存在如下技術問題:
6、(1)grof和perf性能分析工具主要用于unix和類unix系統(tǒng),需要系統(tǒng)支持;
7、(2)grof和perf性能分析工具通常讀取操作系統(tǒng)提供的計時器或計數(shù)器來生成時間戳,在高負載系統(tǒng)或者存在時間戳生成延遲的情況下,會影響時間戳的精確性;
8、(3)grof和perf性能分析工具需要在內存中存儲大量的函數(shù)調用棧和計時信息,在低內存的嵌入式環(huán)境中會對系統(tǒng)造成較大影響。
9、由此可見,現(xiàn)有技術受限于目標平臺的系統(tǒng)環(huán)境,需要消耗較大的系統(tǒng)內存,且時間戳的精確性有待提高。
技術實現(xiàn)思路
1、本發(fā)明針對現(xiàn)有技術中存在的技術問題,提供一種gpu驅動性能分析方法,旨在通過提供更精確的性能分析數(shù)據(jù),幫助技術人員優(yōu)化gpu性能,提升系統(tǒng)整體性能和用戶體驗。
2、本發(fā)明提供的一種gpu驅動性能分析方法,包括:
3、s1,開辟一塊gpu顯存區(qū);
4、s2,基于c語言內嵌匯編方式,設計高精度時間戳api,在gpu應用程序的每一個被測函數(shù)的函數(shù)入口位置、函數(shù)返回或退出位置插入高精度時間戳api,生成gpu驅動被測體;
5、s3,加載運行gpu應用程序,動態(tài)采集被測體的性能數(shù)據(jù),所述性能數(shù)據(jù)為通過插入的高精度時間戳api獲?。?/p>
6、s4,將被測體的性能數(shù)據(jù)存入所述gpu顯存區(qū)中,當所述gpu顯存區(qū)中的性能數(shù)據(jù)滿足保存條件時,暫停運行gpu應用程序,將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至第一文件系統(tǒng)中;
7、s5,多次重復執(zhí)行s3和s4,將采集的被測體的性能數(shù)據(jù)保存至多個第一文件系統(tǒng)中;
8、s6,關閉gpu應用程序,對每一個第一文件系統(tǒng)中的性能數(shù)據(jù)進行分析,并將數(shù)據(jù)分析結果保存至對應的第二文件系統(tǒng)中。
9、在上述技術方案的基礎上,本發(fā)明還可以作出如下改進。
10、可選的,所述s2,基于c語言內嵌匯編方式,設計高精度時間戳api,包括:
11、使用c語言內嵌匯編方式,讀取cntfrq寄存器的值和cntpct寄存器的值,設計高精度時間戳api。
12、可選的,所述s3,加載運行gpu應用程序,動態(tài)采集被測體的性能數(shù)據(jù),所述性能數(shù)據(jù)為通過插入的高精度時間戳api獲取,包括:
13、加載運行gpu應用程序,采用每一個被測函數(shù)的函數(shù)名、函數(shù)入口位置的cpu計數(shù)器值、函數(shù)返回或退出時的cpu計數(shù)器值,生成每一個被測函數(shù)的性能數(shù)據(jù);
14、將每一個被測函數(shù)的性能數(shù)據(jù)存入所述gpu顯存區(qū)中。
15、可選的,所述gpu顯存區(qū)中的性能數(shù)據(jù)滿足保存條件根據(jù)性能數(shù)據(jù)大小、gpu應用程序的場景和gpu應用程序運行時間調整。
16、可選的,所述s4中,當所述gpu顯存區(qū)中的性能數(shù)據(jù)滿足保存條件時,暫停運行gpu應用程序,將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至文件系統(tǒng)中,包括:
17、當性能數(shù)據(jù)占滿所述gpu顯存區(qū)的內存空間時,暫停運行gpu應用程序,將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至第一文件系統(tǒng)中;
18、當gpu應用程序的場景包括多個時,每加載運行一個場景的gpu應用程序時,暫停該場景的gpu應用程序,將該場景的性能數(shù)據(jù)存入所述gpu顯存區(qū)中,并將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至一個第一文件系統(tǒng)中,不同場景的gpu應用程序對應的性能數(shù)據(jù)存放于不同的第一文件系統(tǒng)中;
19、當gpu應用程序運行時間達到設定運行時長,暫停運行gpu應用程序,將性能數(shù)據(jù)存入所述gpu顯存區(qū)中,并將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至一個第一文件系統(tǒng)中。
20、可選的,所述s6,關閉gpu應用程序,對每一個第一文件系統(tǒng)中的性能數(shù)據(jù)進行分析,并將數(shù)據(jù)分析結果保存至對應的第二文件系統(tǒng)中,包括:
21、對每一個第一文件系統(tǒng)中的性能數(shù)據(jù)進行分析,統(tǒng)計各被測函數(shù)的執(zhí)行次數(shù)和各被測函數(shù)的運行所需時間,分析并計算出各被測函數(shù)總執(zhí)行時間、平均運行時間、最大運行時間和最短運行時間;
22、按照執(zhí)行總時間對各被測函數(shù)進行排序,將每一個被測函數(shù)的性能數(shù)據(jù)分析結果保存至對應的第二文件系統(tǒng)中。
23、可選的,統(tǒng)計各被測函數(shù)的運行所需時間,包括:
24、通過插入被測函數(shù)的函數(shù)入口位置的高精度時間戳api采集被測函數(shù)入口的cpu計數(shù)器值,以及通過插入被測函數(shù)的函數(shù)返回或退出位置的高精度時間戳api采集函數(shù)返回或退出時的cpu計數(shù)器值;
25、根據(jù)函數(shù)入口的cpu計數(shù)器值、函數(shù)返回或退出時的cpu計數(shù)器值和cpu定時計數(shù)器的頻率,計算被測函數(shù)的運行所需時間。
26、可選的,所述根據(jù)函數(shù)入口的cpu計數(shù)器值、函數(shù)返回或退出時的cpu計數(shù)器值和cpu定時計數(shù)器的頻率,計算被測函數(shù)的運行所需時間,包括:
27、
28、其中,t為被測函數(shù)的運行所需時間,單位為毫秒,tick2為函數(shù)返回或退出時的cpu計數(shù)器值,tick1為函數(shù)入口的cpu計數(shù)器值,freq為cpu定時計數(shù)器的頻率。
29、本發(fā)明提供的一種gpu驅動性能分析方法,設計的高精度時間戳api,不依賴操作系統(tǒng);在cpu上電后,可精確采集到每一個函數(shù)入口位置和函數(shù)返回或退出位置的時間戳,提高代碼執(zhí)行效率,計算出的時間戳信息可精確到納秒級。本發(fā)明將采集的gpu驅動的性能信息存儲到顯存中,不占用系統(tǒng)內存,減少對gpu驅動程序、系統(tǒng)本身的影響;在性能數(shù)據(jù)采集時,可根據(jù)需求,分階段采集、分析gpu驅動程序的性能數(shù)據(jù),精準定位gpu驅動瓶頸位置,提高技術人員的工作效率。
1.一種gpu驅動性能分析方法,其特征在于,包括:
2.根據(jù)權利要求1所述的gpu驅動性能分析方法,其特征在于,所述s2,基于c語言內嵌匯編方式,設計高精度時間戳api,包括:
3.根據(jù)權利要求1所述的gpu驅動性能分析方法,其特征在于,所述s3,加載運行gpu應用程序,動態(tài)采集被測體的性能數(shù)據(jù),所述性能數(shù)據(jù)為通過插入的高精度時間戳api獲取,包括:
4.根據(jù)權利要求1所述的gpu驅動性能分析方法,其特征在于,所述gpu顯存區(qū)中的性能數(shù)據(jù)滿足保存條件根據(jù)性能數(shù)據(jù)大小、gpu應用程序的場景和gpu應用程序運行時間調整。
5.根據(jù)權利要求4所述的gpu驅動性能分析方法,其特征在于,所述s4中,當所述gpu顯存區(qū)中的性能數(shù)據(jù)滿足保存條件時,暫停運行gpu應用程序,將所述gpu顯存區(qū)中的性能數(shù)據(jù)保存至文件系統(tǒng)中,包括:
6.根據(jù)權利要求1所述的gpu驅動性能分析方法,其特征在于,所述s6,關閉gpu應用程序,對每一個第一文件系統(tǒng)中的性能數(shù)據(jù)進行分析,并將數(shù)據(jù)分析結果保存至對應的第二文件系統(tǒng)中,包括:
7.根據(jù)權利要求6所述的gpu驅動性能分析方法,其特征在于,統(tǒng)計各被測函數(shù)的運行所需時間,包括:
8.根據(jù)權利要求7所述的gpu驅動性能分析方法,其特征在于,所述根據(jù)函數(shù)入口的cpu計數(shù)器值、函數(shù)返回或退出時的cpu計數(shù)器值和cpu定時計數(shù)器的頻率,計算被測函數(shù)的運行所需時間,包括: