国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向多GPU架構(gòu)電流預(yù)測(cè)模型研究

2022-10-15 01:00趙德玉陳慶奎
關(guān)鍵詞:體系結(jié)構(gòu)功耗應(yīng)用程序

趙德玉,陳慶奎,2

1(上海理工大學(xué) 管理學(xué)院,上海 200093)

2(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)

E-mail:chenqingkui@usst.edu.cn

1 引 言

隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,圖形處理器(Graphics Processing Unit(GPU))因其優(yōu)越的并行計(jì)算能力在虛擬現(xiàn)實(shí)[1]、自動(dòng)駕駛[2]、山洪監(jiān)測(cè)[3]、大數(shù)據(jù)[4]、人工智能[5]、物聯(lián)網(wǎng)[6]等領(lǐng)域得到廣泛應(yīng)用.目前,全球超算500強(qiáng)系統(tǒng)中有125套系統(tǒng)采用NVIDIA GPU作為并行加速器(1)https://www.top500.org/lists/top500/2020/11/.大規(guī)模數(shù)據(jù)的持續(xù)計(jì)算中會(huì)產(chǎn)生大量計(jì)算和冷卻冗余能耗[7,8],因此GPU綠色節(jié)能計(jì)算成為當(dāng)前研究熱點(diǎn).研究GPU通用計(jì)算的能耗復(fù)雜性是優(yōu)化節(jié)能的基礎(chǔ)工作,對(duì)探索程序的能耗瓶頸和優(yōu)化系統(tǒng)設(shè)計(jì)都有重要意義.

獲取GPU功耗數(shù)據(jù)是分析GPU能耗復(fù)雜性的前提.現(xiàn)有功耗預(yù)測(cè)方法將功耗數(shù)據(jù)作為研究對(duì)象,通過(guò)采集功耗數(shù)據(jù)建立功耗預(yù)測(cè)模型.現(xiàn)有方法存在以下問(wèn)題:1)難以確定計(jì)算功耗變化中的相變規(guī)律;2)功耗預(yù)測(cè)模型針對(duì)特定GPU,通用性差.

針對(duì)已有預(yù)測(cè)模型存在的問(wèn)題,本文提出以GPU通用計(jì)算程序的運(yùn)行電流為研究對(duì)象,并采用Elman神經(jīng)網(wǎng)絡(luò)構(gòu)建了一個(gè)面向多GPU架構(gòu)的GPU運(yùn)行電流預(yù)測(cè)模型.

圖1為BlackScholes,Reduction,Bfs 3個(gè)應(yīng)用程序在NVIDIA Geforce GTX 970上運(yùn)行時(shí)利用實(shí)驗(yàn)室自行設(shè)計(jì)的電流實(shí)時(shí)監(jiān)測(cè)系統(tǒng)提取到的GPU運(yùn)行電流折線圖.從圖中可以看到,應(yīng)用程序運(yùn)行結(jié)束后,GPU電流不會(huì)立刻降到待機(jī)電流,而是經(jīng)過(guò)一段時(shí)間后才降到待機(jī)狀態(tài).當(dāng)一個(gè)應(yīng)用程序執(zhí)行結(jié)束,GPU執(zhí)行隊(duì)列中有新的計(jì)算任務(wù),若該計(jì)算任務(wù)所需運(yùn)行電流與剛執(zhí)行結(jié)束的程序運(yùn)行電流相近,則GPU就不會(huì)有運(yùn)行電流幅值的劇烈變化,反之,則會(huì)有幅值的劇烈變化.因此,本文建立基于程序特征的電流預(yù)測(cè)模型,并利用預(yù)測(cè)模型實(shí)時(shí)評(píng)估程序的運(yùn)行電流,為通過(guò)減小電流幅值的變化優(yōu)化功耗和任務(wù)調(diào)度提供基礎(chǔ)數(shù)據(jù)依據(jù),協(xié)助開(kāi)發(fā)者充分挖掘GPU計(jì)算的能耗瓶頸.

圖1 NVIDIA GTX 970 GPU運(yùn)行電流變化圖Fig.1 GPU running current of NVIDA GTX 970

本文主要工作如下:

1)提出以GPU程序運(yùn)行電流作為研究對(duì)象.電流屬于細(xì)粒度研究對(duì)象,電流幅度的劇烈變化直接影響硬件的可用性和可靠性;電流受周圍環(huán)境尤其是GPU溫度的影響小,收集的電流數(shù)據(jù)可靠性更高.GPU芯片溫度的提升,對(duì)功耗有比較明顯的影響,而實(shí)驗(yàn)測(cè)試表明,GPU芯片溫度提升對(duì)電流變化尤其是峰值電流的影響則較小,因此采集的電流數(shù)據(jù)更加準(zhǔn)確.

2)建立了面向多GPU架構(gòu)的GPU程序運(yùn)行電流預(yù)測(cè)模型.為解決電流預(yù)測(cè)模型的通用性問(wèn)題,本文引入了體系結(jié)構(gòu)復(fù)雜度參數(shù),結(jié)合從GPU源程序中提取的3個(gè)程序特征,采用Elman神經(jīng)網(wǎng)絡(luò)構(gòu)建了程序特征、體系結(jié)構(gòu)特征與運(yùn)行電流的關(guān)系模型.實(shí)驗(yàn)結(jié)果表明,所建模型精確度較高,通用性較好.

2 相關(guān)工作

Hong等[9,10]面向NVIDIA Tesla GPU開(kāi)發(fā)了一個(gè)功率和性能模型.通過(guò)分析PTX代碼,得出指令和內(nèi)存訪問(wèn)的數(shù)量,并根據(jù)這些信息建立模型.這種離線PTX分析方法對(duì)于預(yù)測(cè)GPU的功率和性能非常有用.該研究的缺陷是面向特定的GTX 280 GPU.

王卓薇等[11]在深入研究Fermi GPU架構(gòu)的基礎(chǔ)上,提出一種高精度的體系結(jié)構(gòu)級(jí)功耗模型,該模型首先計(jì)算不同native指令及每次訪問(wèn)存儲(chǔ)器消耗的功耗;然后根據(jù)應(yīng)用在硬件上的執(zhí)行指令和采樣工具獲得采樣結(jié)果,分析預(yù)測(cè)其功耗;最后通過(guò)13個(gè)基準(zhǔn)測(cè)試應(yīng)用對(duì)實(shí)際測(cè)試與功耗模型測(cè)試結(jié)果進(jìn)行對(duì)比分析.

王吉軍等[12]提出了一種基于硬件性能計(jì)數(shù)事件的GPU功耗預(yù)測(cè)模型.通過(guò)分析在NVIDIA Tesla K20Xm GPU上運(yùn)行GPU程序時(shí)的功率分布情況,選擇了12個(gè)與程序運(yùn)行功率有關(guān)的性能事件,使用反向傳播人工神經(jīng)網(wǎng)絡(luò)分析硬件性能計(jì)數(shù)事件與實(shí)時(shí)功耗間的關(guān)系,建立了GPGPU功耗預(yù)測(cè)模型.

王海峰等[13]分別針對(duì)稀疏分支和密集分支程序提出了基于程序切片的GPU應(yīng)用功耗模型.采用非線性回歸和小波神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)GPU功耗.以NVIDIA GeForce GTX260、GTX280和GTX480作為測(cè)試對(duì)象.結(jié)果表明,小波神經(jīng)網(wǎng)絡(luò)模型比非線性回歸模型具有更好的通用性.

趙奇等[14]提出了一種面向程序設(shè)計(jì)的PTX指令級(jí)能耗預(yù)測(cè)模型,使程序員能夠預(yù)測(cè)程序能耗.與以前需要硬件性能計(jì)數(shù)器或體系結(jié)構(gòu)仿真的模型不同,該模型依賴于CUDA程序的PTX指令.在實(shí)證研究的基礎(chǔ)上選取PTX指令,應(yīng)用線性回歸方法建立了GPU能量模型.結(jié)果表明,該模型具有較高的預(yù)測(cè)精度,平均預(yù)測(cè)誤差在3.7%以下.

以上文獻(xiàn)中提出的模型局限于單架構(gòu)GPU,研究對(duì)象是功耗或能耗.本文提出的模型是面向多個(gè)GPU架構(gòu)的,通用性更強(qiáng).

Ade等[15]提出一種面向GPU系統(tǒng)功耗和性能預(yù)測(cè)的通用方法.該文首先描述了GPU工作電壓和頻率縮放對(duì)性能和功耗的影響,然后提出了功耗和性能預(yù)測(cè)的統(tǒng)計(jì)模型.實(shí)驗(yàn)結(jié)果顯示該統(tǒng)計(jì)模型的預(yù)測(cè)誤差在20%~30%之間.該研究存在問(wèn)題主要有兩個(gè):1)采集的訓(xùn)練數(shù)據(jù)是整個(gè)系統(tǒng)的功耗,而不是GPU的功耗,因此數(shù)據(jù)準(zhǔn)確性較差;2)隨著技術(shù)發(fā)展,GPU體系結(jié)構(gòu)越來(lái)越復(fù)雜,線性關(guān)系不足以用來(lái)描述程序特征與功耗或者性能之間的關(guān)系,因此基于統(tǒng)計(jì)的方法預(yù)測(cè)誤差較大.

3 研究背景

3.1 GPU架構(gòu)

現(xiàn)有GPU體系結(jié)構(gòu)眾多,如NVIDIA公司現(xiàn)存GPU就有Tesla、Fermi、Kepler、Maxwell、Pascal和Turing 6大類架構(gòu)(2)https://www.nvidia.cn/page/products.html#Architectures.每類架構(gòu)在處理器數(shù)量,組織模式、內(nèi)存工作頻率等方面有很大不同.為測(cè)試所提出模型的可靠性和通用性,本文選擇了當(dāng)下較為流行的NVIDIA公司的3種顯卡(Geforce GTX 670、680和970)進(jìn)行了實(shí)驗(yàn)數(shù)據(jù)的收集.其中GTX670和GTX680屬于Kepler架構(gòu),GTX970屬于Maxwell架構(gòu).Kepler架構(gòu)和 Maxwell架構(gòu)在流式多處理器(SM)設(shè)計(jì)上有很大不同.Kepler架構(gòu)每個(gè)SM有192個(gè)單精度CUDA核,所有核共用指令緩存、寄存器,一級(jí)緩存與共享內(nèi)存共用64KB;而Maxwell架構(gòu)每個(gè)SM包含4個(gè)獨(dú)立處理塊,每個(gè)處理塊包含32個(gè)CUDA核,并具有獨(dú)立的指令緩沖區(qū)、warp調(diào)度器和寄存器,一級(jí)緩存則與紋理高速緩存功能相結(jié)合,共享內(nèi)存是一個(gè)獨(dú)立的單元,被4個(gè)塊共享(3)https://developer.nvidia.com/cuda-zone.表1列出實(shí)驗(yàn)采用GPU的核心參數(shù).

表1 GPU硬件配置參數(shù)Table 1 GPU parameters

3.2 應(yīng)用程序集

所選應(yīng)用程序應(yīng)全面、真實(shí)地反映GPU資源的使用情況;應(yīng)選擇多種類型的應(yīng)用程序;所選應(yīng)用應(yīng)具有實(shí)際應(yīng)用價(jià)值.基于以上原則,從CUDA SDK(4)https://docs.nvidia.com/cuda/cuda-samples/index.html#new-features-in-cuda-toolkit-7-5和SHOC[16]兩個(gè)應(yīng)用程序集中選取了包括寬度優(yōu)先搜索算法(Bfs)、單精度或雙精度浮點(diǎn)數(shù)數(shù)組規(guī)約(Reduction)、并行前綴求和(Scan)等在內(nèi)的31個(gè)應(yīng)用程序.表2列出了所選取的應(yīng)用程序.所有程序所用CUDA版本是CUDA7.5,在Windows 7操作系統(tǒng)下,利用Visual Studio 2010編譯運(yùn)行.

表2 應(yīng)用程序Table 2 Application program

4 CUDA程序特征篩選與提取

4.1 CUDA程序形式化描述

從源代碼層次分析一個(gè)CUDA程序,可知CUDA程序中最核心的函數(shù)是核函數(shù),一個(gè)CUDA程序通常包含多個(gè)核函數(shù),可描述為:P={K1,K2,…,kn}.每個(gè)核函數(shù)可看作多條語(yǔ)句的集合,既K={S1,S2,…,Sn},語(yǔ)句包含順序語(yǔ)句、選擇語(yǔ)句、循環(huán)語(yǔ)句、控制語(yǔ)句等類型,通過(guò)執(zhí)行語(yǔ)句,完成相應(yīng)的計(jì)算、存儲(chǔ)訪問(wèn)等操作.

4.2 程序特征描述

在工作電壓保持不變的前提下,GPU在靜態(tài)待機(jī)狀態(tài)時(shí),運(yùn)行電流基本是穩(wěn)定的(如GTX970,靜態(tài)電流在0.8A~1A之間);在運(yùn)行狀態(tài)下,工作電流隨著計(jì)算負(fù)載的不同而發(fā)生不同的變化.對(duì)于CUDA程序,源代碼是最主要的負(fù)載,而在程序源代碼中最主要的操作語(yǔ)句包含計(jì)算語(yǔ)句、存儲(chǔ)訪問(wèn)語(yǔ)句、分支語(yǔ)句等.可以認(rèn)為,因?yàn)槌绦蛑邪恼Z(yǔ)句不同,對(duì)GPU資源的不同調(diào)用,導(dǎo)致程序的運(yùn)行電流不一樣.CUDA程序主要包含計(jì)算操作、存儲(chǔ)訪問(wèn)操作及程序分支操作,因此本文從程序中提取計(jì)算操作、存儲(chǔ)訪問(wèn)操作、程序分支3個(gè)特征來(lái)描述其對(duì)GPU運(yùn)行電流的影響.

1)計(jì)算操作:NVIDIA顯卡包含多個(gè)核處理器,計(jì)算操作主要通過(guò)調(diào)用多個(gè)核處理器并行完成;2)存儲(chǔ)訪問(wèn)操作:GPU的內(nèi)存可分為全局內(nèi)存、共享內(nèi)存、本地內(nèi)存、常量?jī)?nèi)存、紋理內(nèi)存和寄存器內(nèi)存.每種內(nèi)存的速度、大小和訪問(wèn)規(guī)則都不同,核函數(shù)可對(duì)不同的內(nèi)存區(qū)域進(jìn)行訪問(wèn).王海峰等[17]通過(guò)設(shè)計(jì)特定程序,計(jì)算出全局內(nèi)存和紋理內(nèi)存訪問(wèn)指令功耗在71~75瓦特,常量?jī)?nèi)存訪問(wèn)指令功耗則在68瓦特左右,可以看到,各類內(nèi)存訪問(wèn)指令功耗相差不是很大,因此,在本文中,對(duì)存儲(chǔ)訪問(wèn)操作統(tǒng)計(jì)時(shí)不加以細(xì)分;3)程序分支:分支是影響程序性能的一個(gè)關(guān)鍵因素,分支越多,程序性能則會(huì)越低.在GPU中,由于分支的使用,warp中的線程執(zhí)行可能會(huì)變?yōu)榇袌?zhí)行,從而導(dǎo)致GPU資源的極大浪費(fèi).

4.3 程序特征提取

用NVIDIA公司的Nsight(5)https://developer.nvidia.com/nsight-systems工具,對(duì)加載的CUDA應(yīng)用程序進(jìn)行源代碼層級(jí)的分析,統(tǒng)計(jì)得到計(jì)算操作、程序分支及存儲(chǔ)訪問(wèn)操作的數(shù)量,特征提取過(guò)程如圖2所示.對(duì)表2所列的31個(gè)修改后的應(yīng)用程序采用上述方法統(tǒng)計(jì)得到的各項(xiàng)特征數(shù)據(jù)值如表3所示.

表3 程序特征Table 3 Program features

圖2 特征提取過(guò)程圖Fig.2 Feature extraction process

5 體系結(jié)構(gòu)復(fù)雜度系數(shù)

不同的GPU有不同的計(jì)算核心數(shù)和存儲(chǔ)頻率.為提高模型的通用性,本文首次引入了GPU體系結(jié)構(gòu)復(fù)雜度系數(shù).該系數(shù)表示不同圖形處理器的計(jì)算能力,以相同的核心頻率和存儲(chǔ)頻率下的單元晶體管性能表示.公式(1)和公式(2)為系數(shù)計(jì)算公式:

(1)

(2)

Tnum代表GPU晶體管的數(shù)量;Cnum代表GPU計(jì)算核數(shù)量;NGPu代表GPU每個(gè)計(jì)算核的晶體管數(shù)量;NB代表指定基準(zhǔn)GPU每個(gè)計(jì)算核的晶體管數(shù)量;Fcore和FB_c分別代表GPU和基準(zhǔn)GPU的核心頻率;Fmemory和FB_m分別代表GPU和基準(zhǔn)GPU的存儲(chǔ)頻率;TDPGPU和TDPB分別代表GPU和基準(zhǔn)GPU的熱額定功耗;CoB代表基準(zhǔn)GPU體系結(jié)構(gòu)復(fù)雜度系數(shù);CoGPU代表某GPU計(jì)算得到的體系結(jié)構(gòu)復(fù)雜度系數(shù);PerGPU代表每核性能,當(dāng)選用GPU與基準(zhǔn)GPU屬于同一架構(gòu),PerGPU的值是1;當(dāng)選用GPU比基準(zhǔn)GPU架構(gòu)先進(jìn),PerGPU的值是1.35.本文選用Geforce GTX 670為基準(zhǔn) GPU,CoB是一個(gè)經(jīng)驗(yàn)值,本文設(shè)置為 0.25.表4列出了實(shí)驗(yàn)選用GPU的體系結(jié)構(gòu)復(fù)雜度系數(shù).

表4 體系結(jié)構(gòu)復(fù)雜度系數(shù)Table 4 Architecture complexity coefficient

6 基于Elman神經(jīng)網(wǎng)絡(luò)的GPU電流預(yù)測(cè)模型的設(shè)計(jì)與實(shí)現(xiàn)

GPU運(yùn)行電流可用程序特征函數(shù)表示:

(3)

其中,m代表與電流相關(guān)的特征數(shù)量;hi(Ci)代表第i個(gè)程序特征Ci對(duì)電流的貢獻(xiàn).當(dāng)hi(Ci)=αiCi時(shí),電流是關(guān)于程序特征的多元線性函數(shù);當(dāng)hi(Ci)≠αiCi時(shí),電流是關(guān)于程序特征的非線性函數(shù).

隨著GPU計(jì)算負(fù)載的變化,GPU的運(yùn)行電流具有明顯的非線性、時(shí)變和短時(shí)特性.人工神經(jīng)網(wǎng)絡(luò)具備自學(xué)習(xí)、自組織和容錯(cuò)強(qiáng)等優(yōu)點(diǎn),對(duì)非線性函數(shù)關(guān)系具有良好的逼近能力,用于描述非線性、時(shí)變特性的GPU運(yùn)行電流比較合適.靜態(tài)神經(jīng)網(wǎng)絡(luò),如BP算法,可以用來(lái)預(yù)測(cè)GPU的運(yùn)行電流,但其學(xué)習(xí)收斂速度慢,學(xué)習(xí)記憶不穩(wěn)定.Elman神經(jīng)網(wǎng)絡(luò)(ENN)[18]作為一種典型的反饋神經(jīng)網(wǎng)絡(luò),具有收斂速度快、學(xué)習(xí)記憶穩(wěn)定、動(dòng)態(tài)特性好等特點(diǎn).因此,針對(duì)具有非線性時(shí)間序列特征的GPU運(yùn)行電流,本文提出了一種基于ENN的GPU運(yùn)行電流預(yù)測(cè)模型.

Elman神經(jīng)網(wǎng)絡(luò)由輸入層、隱藏層和輸出層組成.每層所有神經(jīng)元與下一層的所有神經(jīng)元相連.此外,它還有反饋神經(jīng)網(wǎng)絡(luò),每個(gè)隱藏層通過(guò)一組額外的上下文節(jié)點(diǎn)進(jìn)行反饋.它存儲(chǔ)隱藏層的輸出,稍后將其反饋給隱藏層.

圖3為GPU運(yùn)行電流預(yù)測(cè)的Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu).Elman神經(jīng)網(wǎng)絡(luò)的輸入層包含了應(yīng)用程序的計(jì)算操作數(shù)、存儲(chǔ)訪問(wèn)操作數(shù)、程序分支數(shù)和體系結(jié)構(gòu)復(fù)雜度系數(shù)共4類,輸出層為預(yù)測(cè)電流.因此,Elman神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點(diǎn)數(shù)為4,輸出層節(jié)點(diǎn)數(shù)為1.利用MATLAB-Elman神經(jīng)網(wǎng)絡(luò)工具實(shí)現(xiàn)了電流預(yù)測(cè)模型,訓(xùn)練算法采用Traingdx算法.通過(guò)多次測(cè)試,將隱藏層神經(jīng)元數(shù)設(shè)為11個(gè),訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)均方誤差小,相關(guān)系數(shù)R接近1.

圖3 Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Elman neural network architecture

7 實(shí)驗(yàn)和結(jié)果分析

7.1 GPU溫度對(duì)GPU運(yùn)行電流的影響

本文首先通過(guò)實(shí)驗(yàn)觀察GPU溫度變化對(duì)電流數(shù)據(jù)的影響.圖4為NVIDIA Geforce GTX970在GPU初始溫度分別為34度和41度時(shí)運(yùn)行Scan和Dct8×8兩個(gè)應(yīng)用程序時(shí)的電流變化.從圖中可以看出,在不同的溫度下,同一程序運(yùn)行時(shí),電流在0A-0.3A之間變化,特別是峰值變化很小.據(jù)此可認(rèn)為GPU溫度對(duì)GPU運(yùn)行電流的影響很小.

圖4 不同溫度下的顯卡電流變化圖Fig.4 Running current change of NVIDIA GTX970 on different temperatures

7.2 實(shí)驗(yàn)方法

本文首先對(duì)選擇的每個(gè)應(yīng)用程序源代碼進(jìn)行修改,一方面修改應(yīng)用程序核函數(shù)block和thread的配置,最大可能提高SM資源占用率;一方面通過(guò)增加循環(huán)次數(shù),使每個(gè)CUDA程序核函數(shù)運(yùn)行時(shí)間不少于1分鐘,以保證能夠采集到足夠多的數(shù)據(jù),從而保證采集數(shù)據(jù)的可靠性.同時(shí),為最大限度消除顯卡溫度對(duì)程序運(yùn)行電流的影響,利用GPU-Z工具(6)https://www.techpowerup.com/gpuz/監(jiān)視顯卡的工作溫度,一個(gè)程序執(zhí)行完畢,當(dāng)顯卡溫度回落到特定溫度(本文為34度)后,再運(yùn)行下一個(gè)程序.針對(duì)選定的CUDA應(yīng)用程序,采用實(shí)驗(yàn)室自行設(shè)計(jì)的GPU實(shí)時(shí)電流監(jiān)測(cè)采集系統(tǒng),采集了同一程序在不同顯卡(GTX670,GTX680,GTX970)運(yùn)行時(shí)GPU的運(yùn)行電流值.

7.3 數(shù)據(jù)預(yù)處理

對(duì)于每個(gè)CUDA應(yīng)用程序得到一組數(shù)據(jù)(I,Cinstruction,Cmemory,Cdivergence,Co).其中,I代表程序運(yùn)行時(shí)GPU工作電流,該值是對(duì)采集到的電流取平均值,Cinstruction代表程序包含的計(jì)算操作指令數(shù);Cmemory代表存儲(chǔ)訪問(wèn)操作數(shù),GPU中有多個(gè)層級(jí)的內(nèi)存,在本文沒(méi)有細(xì)分;Cdivergence代表程序分支數(shù);Co代表GPU體系結(jié)構(gòu)復(fù)雜度系數(shù),該數(shù)值不做預(yù)處理.從表3可以看到,不同的程序,提取的特征處于不同的數(shù)量級(jí),為消除特征數(shù)據(jù)之間的數(shù)據(jù)量級(jí)影響,需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理.我們利用對(duì)數(shù)函數(shù)對(duì)數(shù)據(jù)進(jìn)行變換處理,做如下定義:

yi=ln(Ii)/ln(max(I))

(4)

x1i=ln(C1i)/ln(max(C1))

(5)

x2i=ln(C2i)/ln(max(C2))

(6)

x3i=ln(C3i)/ln(max(C3))

(7)

其中,yi為第i個(gè)程序電流預(yù)處理后數(shù)值,Ii代表第i個(gè)程序的測(cè)量電流,max(I)代表所有樣本的最大測(cè)量電流,x1i、x2i、x3i代表第i個(gè)程序的計(jì)算操作數(shù)、存儲(chǔ)訪問(wèn)操作數(shù)和程序分支數(shù)預(yù)處理后的數(shù)值,C1i、C2i、C3i代表第i個(gè)程序計(jì)算操作數(shù)、存儲(chǔ)訪問(wèn)操作數(shù)和程序分支數(shù)特征值,max(C1)、max(C2)、max(C3)代表所有樣本的程序計(jì)算操作數(shù)、存儲(chǔ)訪問(wèn)操作數(shù)和程序分支數(shù)的最大值,原始數(shù)據(jù)經(jīng)過(guò)預(yù)處理后變?yōu)?yi,x1i,x2i,x3i,Co).

7.4 實(shí)驗(yàn)結(jié)果分析

本文選取表2中的31個(gè)應(yīng)該程序作為樣本,每個(gè)應(yīng)用程序分別在NVIDIA Geforce GTX970、NVIDIA Geforce GTX680和NVIDIA Geforce GTX670顯卡上運(yùn)行,共有93組電流數(shù)據(jù),選取前81組數(shù)據(jù)作為訓(xùn)練樣本,最后12組(見(jiàn)表5)數(shù)據(jù)為測(cè)試樣本,對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練和驗(yàn)證.

表5 測(cè)試程序Table 5 Testing program

用預(yù)測(cè)誤差代表單個(gè)程序的預(yù)測(cè)精度,用測(cè)試程序的平均預(yù)測(cè)誤差代表模型的預(yù)測(cè)精度.式(8)和式(9)為預(yù)測(cè)誤差和平均預(yù)測(cè)誤差的計(jì)算公式.

EsErrori=(Iesi-Imea)/Imea

(8)

(9)

其中,EsErrori為第i個(gè)程序的預(yù)測(cè)誤差,Iesi為第i個(gè)程序的電流預(yù)測(cè)值,Imea第i個(gè)程序的電流測(cè)量值,n代表測(cè)試程序的個(gè)數(shù),AvgEsError代表所有測(cè)試程序的平均預(yù)測(cè)誤差.

圖5顯示了12個(gè)測(cè)試應(yīng)用程序的預(yù)測(cè)結(jié)果.采用ENN預(yù)測(cè)模型得到的運(yùn)行電流預(yù)測(cè)值和預(yù)測(cè)誤差分別見(jiàn)表6和表7.

圖5 GPU電流預(yù)測(cè)結(jié)果圖Fig.5 GPU current prediction result

表6 測(cè)試程序運(yùn)行電流預(yù)測(cè)值和測(cè)量值(單位:安培)Table 6 Predicted value and measured value of testing program(UNIT:Ampere)

表7 預(yù)測(cè)誤差Table 7 Predicted error of testing programs

從圖5、表6和表7可以看到,測(cè)試程序的預(yù)測(cè)值與測(cè)量值相近,單程序預(yù)測(cè)誤差不超過(guò)8%,不同類型顯卡的平均預(yù)測(cè)誤差低于7%.因此,本文所提出的模型具有良好的準(zhǔn)確性和通用性.

8 結(jié) 語(yǔ)

本文提出以GPU的運(yùn)行電流為研究對(duì)象分析GPU能耗的復(fù)雜性.通過(guò)分析程序源代碼,提取了3個(gè)程序特征;同時(shí)結(jié)合本文引入的GPU體系結(jié)構(gòu)復(fù)雜度系數(shù),利用Elman神經(jīng)網(wǎng)絡(luò)建立了GPU運(yùn)行電流預(yù)測(cè)模型.實(shí)驗(yàn)結(jié)果表明,單個(gè)程序的預(yù)測(cè)誤差不超過(guò)8%,不同體系結(jié)構(gòu)間的平均預(yù)測(cè)誤差不超過(guò)7%.因此,本文提出的模型具備預(yù)測(cè)精度高、通用性好等優(yōu)點(diǎn).在今后的工作中,GPU不同類型的存儲(chǔ)訪問(wèn)操作將進(jìn)行細(xì)分,以提高模型的預(yù)測(cè)精度.同時(shí),為了更好地描述GPU運(yùn)行電流和程序特征之間的關(guān)系,我們考慮設(shè)計(jì)和實(shí)現(xiàn)一個(gè)基于程序切片的電流預(yù)測(cè)模型.此外,將結(jié)合本文模型,進(jìn)一步研究多程序并行執(zhí)行GPU能耗控制優(yōu)化.

猜你喜歡
體系結(jié)構(gòu)功耗應(yīng)用程序
基于任務(wù)映射的暗硅芯片功耗預(yù)算方法
基于思維導(dǎo)圖的化學(xué)知識(shí)體系結(jié)構(gòu)構(gòu)建
軟件通信體系結(jié)構(gòu)(SCA)理念下的無(wú)線通信系統(tǒng)探究
基于PPP工程采購(gòu)模式的工程項(xiàng)目合同體系結(jié)構(gòu)研究
刪除Win10中自帶的應(yīng)用程序
谷歌禁止加密貨幣應(yīng)用程序
揭開(kāi)GPU功耗的面紗
認(rèn)知無(wú)線網(wǎng)絡(luò)中的重點(diǎn)技術(shù)和研究
環(huán)保之功,從主板做起
三星電子將開(kāi)設(shè)應(yīng)用程序下載商店
大荔县| 伊川县| 德昌县| 利辛县| 四平市| 峨边| 祁连县| 岗巴县| 蒙阴县| 广西| 张家口市| 铜梁县| 金华市| 聂荣县| 怀安县| 庆元县| 蚌埠市| 霍邱县| 济源市| 雷州市| 麻栗坡县| 和静县| 凉山| 景洪市| 济阳县| 金平| 年辖:市辖区| 武宣县| 泗洪县| 锦屏县| 永嘉县| 互助| 鄱阳县| 西城区| 溆浦县| 读书| 新泰市| 内黄县| 云浮市| 彝良县| 额敏县|