王一超,王鎏振,林新華
(上海交通大學 網(wǎng)絡信息中心, 上海 200240)
硬件計數(shù)器是一組CPU專用寄存器。受限于芯片面積,主流X86和ARM CPU至多只能提供12個硬件計數(shù)器(C≤12)。在代碼執(zhí)行期間,硬件計數(shù)器會記錄性能事件發(fā)生的數(shù)量,如浮點數(shù)計算指令數(shù)、緩存命中次數(shù)等。而主流X86和ARM CPU都提供了上百個硬件事件(E>500)。由于C遠小于E,單次采集時,C無法覆蓋所有的E。
為提高單次采集硬件事件的數(shù)量,許多常用的性能分析工具如PAPI[1]、HPCToolkit[2]等提供了硬件計數(shù)器復用(multiplexing,MPX)功能。MPX包括數(shù)據(jù)采集和結(jié)果估計兩大步驟:首先,MPX以一個固定頻率讀取硬件計數(shù)器實際采集到的硬件事件數(shù)據(jù);其次,MPX基于估計算法,填補未被實際記錄的數(shù)據(jù)。這樣MPX就能在單次采集中使用少量硬件計數(shù)器C采集大量硬件事件E。基于MPX采集大量的硬件事件數(shù)據(jù),研究人員可對應用在CPU上的性能表現(xiàn)進行深入的量化分析[3]。因此,性能分析工具中的MPX對于性能建模研究具有重要價值。
然而,目前PAPI MPX[1]仍采用數(shù)值擬合方法補齊未實際采樣部分,例如固定插值[4]、線性插值[5]及非線性插值[6]。而這些數(shù)值擬合方法的精度較低,主要有兩個原因:①基于數(shù)值擬合的估計算法無法準確預測所有事件的發(fā)生情況,因為一個硬件事件在不同CPU上運行不同程序時,并不服從任何特定隨機過程;②采用數(shù)值擬合方法的MPX可以提升部分事件的采集精度,但有些事件精度過低,甚至出現(xiàn)負增益,導致MPX結(jié)果置信度偏低。事件數(shù)量的估計準確度對MPX模式下取得的結(jié)果,起到至關(guān)重要的作用。根據(jù)之前工作的評估[3,6],當MPX估計算法的準確性下降到90%以下時,數(shù)據(jù)將無法被用于性能建模。
為提升MPX結(jié)果精度,利用深度學習方法,基于神經(jīng)網(wǎng)絡多層感知器[7](multilayer perceptron,MLP)和雙向門控神經(jīng)網(wǎng)絡[8](bidirectional gated recurrent unit, Bi-GRU)2個模型,為MPX提供置信度更高的估計模型。需要說明的是,本文研究的MPX方法面向高性能計算中常用的性能事件,在程序單核運行階段,對于多事件進行采樣,從而得到可以用于性能建模的大量性能事件。
為了使模型提取到的特征可以覆蓋高性能計算的主流應用程序,選取了在高性能計算領(lǐng)域主流的Rodinia測試集[9]。該測試集中的應用覆蓋了13類典型的高性能計算應用,基于該測試集的數(shù)據(jù)進行訓練,可以有效提升模型在高性能計算領(lǐng)域的泛化能力。
MPX采用分時復用方法,將各個硬件計時器的可用時間切分成不同時間片,然后在不同時間片上輪流記錄不同硬件事件。具體包括兩個步驟:
1)數(shù)據(jù)采集。MPX以一個固定頻率,讀取硬件計數(shù)器實際采集到的性能事件數(shù)據(jù),寫入內(nèi)存中。
2)結(jié)果估計。由于硬件計數(shù)器在多事件調(diào)度過程中,存在部分事件發(fā)生次數(shù)未被計數(shù)器記錄的情況。因此,MPX需要基于估計算法估出該時間段內(nèi)事件發(fā)生的次數(shù),補全未采集到的數(shù)據(jù)。與MPX相對的是使用單一寄存器記錄單一事件(one counter one event,OCOE),這種采集數(shù)據(jù)的精度高,但單次采集硬件事件受限于硬件計算器數(shù)量(C≤12)。
已有MPX估計算法都采用了數(shù)值擬合方法。根據(jù)采用的方法不同,可分為三類:
1)固定插值法。2001年,May[4]在PAPI[1]上開發(fā)了面向性能監(jiān)控單元(performance monitor unit, PMU)事件的多路復用技術(shù),即PAPI默認MPX實現(xiàn)。該實現(xiàn)基于固定時間片調(diào)度和固定插值的估計方法,如圖1(a)所示,本文將該方法作為基準比較對象。
2)線性插值法。2005年,Mathur等[5]量化了由MPX引起的誤差,設計了4種插值估計算法,包含梯形面積法等,如圖1(b)所示,采用線性插值法替換固定差值法,提升了估計精度。實驗數(shù)據(jù)表明[10],線性插值法會造成42%的估計值比實際值大10%以上,其中誤差在 50% 的估計值最高占比達29.3%。
3)非線性插值法。本文作者對文獻[4]的工作進行了改進[6,11],提出采用非線性插值替換線性插值的估計方法,如圖1(c)所示。

(a) 固定插值法 (a) Fixed interpolation
上述三種方法都受限于數(shù)值擬合的局限,結(jié)果精度仍有進一步提升的空間。有不少基于硬件事件的性能建模研究工作采用了深度學習方法作為擬合手段[12-14]。受此啟發(fā),為進一步提升MPX估計精度,本文采用深度學習方法進行MPX估計。
在對數(shù)據(jù)進行相關(guān)性分析之前,需要先對數(shù)據(jù)進行清洗,以修正一些明顯異常的值,從而提高數(shù)據(jù)分析的準確性。數(shù)據(jù)出現(xiàn)明顯異常的原因有兩種:一種是性能分析工具如PAPI在采集時出現(xiàn)異常;另一種是由于MPX估計算法不能及時判斷程序結(jié)束而導致的。以分支預測未命中的硬件事件BRMIS:ALL為例進行說明。
首先對下文使用到的變量做如下定義:
1)Sampledi表示i時刻MPX采集到的硬件計數(shù);
2)Counti表示i時刻估計算法給出的硬件計數(shù);
3)Interval表示兩次采樣之間的時間差。
其中,Interval由MPX同時采樣的硬件事件數(shù)量Event_num以及OCOE模式下最大支持的可編程硬件計數(shù)器數(shù)量Counter_num決定,即:
(1)
PAPI默認的MPX采用固定插值法,即假設同一時間片內(nèi)硬件事件發(fā)生的次數(shù)保持不變,將采樣間隔內(nèi)某一時刻采集到的硬件計數(shù)值進行固定插值,即:
Countedi=Sampledi×Interval
(2)
PAPI在采集時出現(xiàn)異常值,主要有以下兩個原因:
1)性能分析工具沒有采集到任何硬件事件或是硬件計數(shù)出現(xiàn)負值。這部分異常是由于PMU異常溢出導致的,使用MPX和OCOE均有一定概率出現(xiàn)該現(xiàn)象。實驗表明,所有未出現(xiàn)異常計數(shù)的采樣得到的硬件計數(shù)和均小于0.3×Countmax。因此針對這部分異常,本文根據(jù)采集到的硬件計數(shù)和設置了一個閾值:記硬件計數(shù)和的最大值為Countmax,將所有硬件計數(shù)和小于0.2×Countmax的采集舍棄,確保使用的數(shù)據(jù)都是有效采集的。其中,選擇0.2為系數(shù)是因為采樣無法保證能檢測到所有情況,因此適當降低閾值避免錯誤地將正常采樣歸為異常采樣。
2)采集到的硬件計數(shù)圖像中存在異常值。圖2顯示的是在Intel Xeon Gold 6248上對Rodinia測試集中的StreamCluster[9]采集到BRMIS:ALL的硬件計數(shù)-時間步圖像,異常值部分是硬件計數(shù)-時間步圖像中出現(xiàn)的異常偏低點,使用藍色矩形塊框出。這一現(xiàn)象在文獻[14]中曾提到過,可采用K最近鄰(K-nearest neighbor, KNN)法神經(jīng)網(wǎng)絡修復。由于異常值產(chǎn)生的原因有很多,無法準確判斷是由性能分析工具本身的不穩(wěn)定還是在程序運行中出現(xiàn)問題而導致的。因此針對這部分異常,本文采取保留異常值的策略。

圖2 在Intel Xeon Gold 6248上對StreamCluster采集BRMIS:ALL產(chǎn)生的異常值Fig.2 Outlier of BRMIS:ALL event counts when sampling of StreamCluster benchmark on Intel Xeon Gold 6248
如圖3所示,對比OCOE和MPX固定插值這2種模式下的事件計數(shù)結(jié)果,可以看出兩者結(jié)果已比較接近。然而通過放大數(shù)據(jù)圖的尾部,可以發(fā)現(xiàn)當OCOE下硬件計數(shù)已經(jīng)歸0時,MPX下仍在基于估計算法填充缺失的數(shù)值,導致這部分計數(shù)結(jié)果與實際情況發(fā)生偏差。

圖3 采用OCOE和MPX固定插值2種模式得到的BRMIS:ALL事件計數(shù)結(jié)果對比Fig.3 BRMIS:ALL count/time step curve under two modes
以上現(xiàn)象是由于處理器性能波動引起的,同一程序即使在相同運行參數(shù)下,在同一個處理器上每次運行的時間會有差異,這導致了在程序運行的末尾,每次運行的結(jié)果差異較大。因此,為提高MPX結(jié)果精度,應把程序臨近結(jié)束的部分予以截斷。本文選取的截斷方式是舍去采樣步長的末尾2%。考慮到部分硬件事件采集到的時間片數(shù)量較少,因此在舍棄末尾2%的基礎(chǔ)上進一步舍棄末尾5個時間步的數(shù)據(jù)。尾部截斷后,重新計算得到的BRMIS:ALL在OCOE與MPX模式下,計數(shù)結(jié)果的曲線重合度顯著提升。
對比圖2和圖3,可以觀察到以相同參數(shù)運行同一程序,不同采集方式得到的硬件計數(shù)-時間步圖像有著較高的相似度。為驗證這一發(fā)現(xiàn),本文采用皮爾森相關(guān)系數(shù)[15]衡量兩者之間的相似程度。皮爾森相關(guān)系數(shù)是一種用于衡量兩份數(shù)據(jù)線性相關(guān)程度的指標,其范圍在-1到1之間,相關(guān)系數(shù)絕對值越接近1,相關(guān)度越強。負的相關(guān)系數(shù)則表示兩者負相關(guān)。具體計算公式為:
(3)
通過計算,兩次采集到的BRMIS:ALL硬件計數(shù)之間的皮爾森相關(guān)系數(shù)為0.93。進一步計算其他許多硬件計算器的數(shù)據(jù),結(jié)果也類似。這證明在相同參數(shù)下,多次運行同一程序而得到的硬件計數(shù)值具有極高的線性相關(guān)性。這個發(fā)現(xiàn)是本文采用深度學習方法擬合MPX估計算法的理論依據(jù)。
與本文的這個發(fā)現(xiàn)不同,以往基于數(shù)值擬合的MPX估計算法都是基于時間局部性的假設,即認為相鄰時間片內(nèi)由于時間相關(guān)性,必然存在一定關(guān)聯(lián),并據(jù)此設計MPX估計算法。如固定插值法[4]認為相鄰時間片硬件事件數(shù)量相等,線性擬合法[5]假設相鄰時間片間硬件計數(shù)呈連續(xù)或離散的線性關(guān)系,而非線性擬合法[5]假設相鄰時間片間硬件計數(shù)成連續(xù)或離散的指數(shù)關(guān)系。
基于上述發(fā)現(xiàn),考慮到硬件事件發(fā)生具有時序性的特征以及擬合的泛用性,選取深度學習中的MLP和Bi-GRU模型,以MPX采集到的數(shù)據(jù)為自變量,OCOE采集到的數(shù)據(jù)為因變量,構(gòu)建從MPX數(shù)據(jù)到OCOE數(shù)據(jù)的函數(shù)映射。具體而言,MPX的輸入是一個長度為t的序列:[Sampled_1,Sampled_2,…,Sampled_t],在經(jīng)過深度學習模型進行一系列矩陣或向量相關(guān)運算后,輸出一個長度同樣為t的序列:[Predicted_1,Predicted_2,…,Predicted_t]。
MLP[12]是經(jīng)典的深度學習模型,與最小二乘法尋找擬合函數(shù)的原理類似。MLP可以通過最小化均方誤差訓練出一個能將MPX數(shù)據(jù)映射到OCOE數(shù)據(jù)的模型。考慮到硬件事件時序數(shù)據(jù)沒有高維特征,不需要過多的隱含層數(shù)。模型超參數(shù)選取如表1所示,模型結(jié)構(gòu)如圖4所示(圖中圓圈表示神經(jīng)元)。由于數(shù)據(jù)集較小,MLP模型中每個隱含層的神經(jīng)元都有30%的概率失效,添加了Dropout=0.3避免過擬合[13]。

表1 MLP模型超參數(shù)

圖4 MLP模型示意Fig.4 Illustration for MLP model
Bi-GRU是雙向長短期記憶神經(jīng)網(wǎng)絡(bidirectional long-short term memory,Bi-LSTM)[8]的簡化。Bi-GRU是循環(huán)神經(jīng)網(wǎng)絡模型中的一種,針對時序數(shù)據(jù)問題訓練效果出色。其中LSTM[15]引入了遺忘門,解決了循環(huán)神經(jīng)網(wǎng)絡(recurrent neural network, RNN)在長時依賴下的梯度爆炸和梯度消失問題,而GRU[16]在保持LSTM效果的前提下對網(wǎng)絡結(jié)構(gòu)進行了精簡,將遺忘門和輸出門合并為更新門,有效縮短了訓練神經(jīng)網(wǎng)絡所需時間。而雙向意味著將時間序列按正反雙向輸入網(wǎng)絡,使得輸出某一時刻結(jié)果時可同時參考上下文信息。
控制模塊采用單片機STC89C52控制。STC89C52與DDS信號產(chǎn)生模塊進行串口通信,通過軟件的編程,實現(xiàn)對輸出波形的控制。外圍電路采用獨立按鍵的方式,可以選擇波形種類的輸出以及調(diào)節(jié)頻率、電壓幅度的大小。該電路通過P4.0、P4.1、P4.2、P4.3 接口與信號發(fā)生部分的 CS、SDATA、SCLK、FYSYNC 接口相接;通過 P3.0~P3.7和P1.7接口與按鍵電路連接;通過P0.0,P0.1,P0.2接口與顯示電路連接。最后通過軟件的編程,來對各部分電路進行控制。
考慮到程序運行時記錄的硬件事件就是一個標準的時間序列,而且程序運行時的上下文切換也會對硬件計數(shù)造成影響,采用Bi-GRU來處理MPX估計。模型參數(shù)選取如表2所示,結(jié)構(gòu)如圖5所示。

表2 Bi-GRU模型參數(shù)

注:正方形表示GRU單元,圓圈表示序列中的數(shù)據(jù)點。圖5 Bi-GRU模型示意Fig.5 Illustration for Bi-GRU
實驗在Intel Xeon Gold 6248上使用基于PAPI v5.7.0開發(fā)的NeoMPX[17]進行硬件事件采樣,選取Rodinia 測試集[9]的13個應用,每個應用分別通過MPX和OCOE采集到15個硬件事件。
生成訓練數(shù)據(jù)集需要5個步驟:①MPX運行1次應用即可采集到15個硬件事件,而OCOE需重復運行應用3次,所有應用的運行參數(shù)均按推薦值設置;②對每個應用,實驗將重復運行4x次,其中x次以MPX方法進行采樣,而另外3x次以OCOE方法進行采樣(x>100);③對采集到的結(jié)果均進行尾部截斷(見2.3節(jié)),并通過設定計數(shù)總和閾值進行篩選,最終得到總量為100份的MPX和OCOE采樣結(jié)果;④每一份采樣結(jié)果包含一個時序序列,其中的采樣數(shù)據(jù)量大約在200~700個硬件事件值;⑤實驗將這100份結(jié)果打亂后,以7 ∶1 ∶2的比例按序號隨機切分成訓練集、驗證集及測試集,集合兩兩之間沒有重復元素。
使用Pytorch v1.6.0實現(xiàn)MLP及Bi-GRU模型,輸入為70份MPX和OCOE采樣結(jié)果,輸出為經(jīng)MPX估計后的結(jié)果。模型訓練的關(guān)鍵步驟如下:
1)數(shù)據(jù)大小預處理。由于MPX與OCOE采樣數(shù)據(jù)量龐大,通常在107量級,直接擬合效果不佳,因此需要對數(shù)據(jù)進行對數(shù)化處理,取對數(shù)底為10。
2)數(shù)據(jù)長度預處理。由于溢出時間的不確定性導致結(jié)束位置不同,所以數(shù)據(jù)尾部的2%會被截斷;同時考慮有的硬件事件發(fā)生的時間片較短,因此在此基礎(chǔ)上舍棄最后5個時間步的數(shù)據(jù)。
3)模型訓練。以MPX采集到的數(shù)據(jù)為自變量,OCOE采集到的數(shù)據(jù)為因變量,將它們組合成Tensor data的格式,通過Data Loader,以batch_size=1的大小將數(shù)據(jù)輸入2個模型中。計算完均方誤差后反向傳播至神經(jīng)網(wǎng)絡各神經(jīng)元中。將所有訓練集中數(shù)據(jù)輸入進神經(jīng)網(wǎng)絡后完成一個epoch。重復上述過程完成模型訓練。
5)結(jié)果驗證。對測試集中的20份數(shù)據(jù)分別依照評價標準計算模型得分,并根據(jù)這20份數(shù)據(jù)的平均值進行評價。
1)實驗環(huán)境。實驗硬件為Intel Xeon Gold 6248 CPU,軟件是基于PAPI v5.7.0開發(fā)的NeoMPX[17]。
2)測試算例。為全面考察MPX估計算法在高性能計算應用中的使用效果,選取13個來自Rodinia的測試程序,如表3所示。這些測試程序涵蓋了高性能計算中5種不同計算模式及9個不同應用領(lǐng)域。

表3 13個Rodinia測試程序
3)硬件事件。主流CPU能夠支持的硬件事件多達上百個,但性能檢測與分析中常用的事件并不會全部用到。因此,本文選取了15個性能分析與建模中比較常用的硬件事件,如表4所示。這些事件涵蓋了緩存訪問、TLB訪問、內(nèi)存訪問以及分支指令。要采集這15個事件,MPX只需運行1次,而OCOE需運行多次。
為準確評價MPX結(jié)果精度,本文提出2個指標。

表4 15個用于評估的硬件事件
1)相對精度(relative accuracy,RA)。該指標參考了統(tǒng)計學中相對誤差的概念,計算公式如下:
(4)
其中,MPXi和OCOEi分別代表第i個時間步時,MPX的結(jié)果以及使用OCOE模式采集到的硬件計數(shù)。式中減數(shù)即為統(tǒng)計學中的相對誤差。為更直觀反映MPX估計算法的好壞,用1減去相對誤差得到RA值。RA值越高,表明由MPX估計算法得到的結(jié)果越接近于OCOE采集到的結(jié)果,即精度越高。
2)時間序列間的相似度[18](dynamic time warping,DTW)。假設MPX數(shù)據(jù)為MPX1,MPX2,…,MPXm;OCOE數(shù)據(jù)為OCOE1,OCOE2,…,OCOEn。DTW算法首先計算所有MPXi到OCOEj的歐氏距離,從而得到一個m×n的二維矩陣。將該二維矩陣視為一個網(wǎng)格,網(wǎng)格上所有的值代表經(jīng)過該點的開銷。最后需要求得一條通過該矩陣網(wǎng)格的最優(yōu)路徑。該路徑有如下限制:
1)從(1, 1)開始,到(m,n)結(jié)束;
2)若前一個點選擇了(i,j),下一個點只能在(i+1,j),(i,j+1),(i+1,j+1)中選擇。
該路徑可以通過動態(tài)規(guī)劃算法得出,DTW-cost為該路徑上的開銷總和,它表示MPX序列中元素到OCOE序列中最近的鄰近元素累計距離之和,其值域為[0,+∞),該值越小,說明兩序列越相似。
DTW-cost有效避免了歐氏距離衡量兩個時間序列中,由于序列間的相位延遲、長度不匹配等造成的評估結(jié)果與實際表現(xiàn)不匹配的問題。
為確定測試重點,本文測試了PAPI默認的固定插值MPX在15個硬件事件上的效果,即硬件事件在13個應用上的平均RA分數(shù),結(jié)果如圖6所示。固定插值MPX在8個硬件事件上的平均RA分數(shù)超過了0.85,因此結(jié)果分析重點關(guān)注余下6個RA分數(shù)低于0.8的硬件事件。

圖6 默認估計算法得到的不同硬件事件平均RA分數(shù)(越高越好)Fig.6 Average RA score on different hardware event gained by PAPI default method (higher is better)
表5從應用維度對比了固定插值MPX與基于MLP模型的MPX結(jié)果。后者在所有Rodinia測試集中12個應用的平均RA分數(shù)都得到了提升。以SRAD為例,MLP方法相比固定插值MPX提升了27.4%,從原先的0.73提升到0.9以上。

表5 不同應用的平均RA分數(shù)對比(越高越好)
需要指出的是,考慮到出現(xiàn)負值說明預估的硬件計數(shù)要比實際硬件計數(shù)高出一倍以上,因此負值是無意義的。為不產(chǎn)生誤解,負值將被處理為0后再做比較。如表5所示,重新計算了兩種方法在各應用上的平均RA分數(shù),經(jīng)修正后的MLP得到的RA分數(shù)比默認方法高出0.10,相比默認的方法提升了13.16%。其中最大提升幅度出現(xiàn)在SRAD應用上,達到了0.20。

表6 硬件事件平均RA分數(shù)對比(越高越好)
表6從硬件事件的維度,對比了固定插值MPX與基于MLP模型的MPX結(jié)果。實驗結(jié)果表明,在固定插值MPX達到較高RA的硬件事件上,MLP能取得相近表現(xiàn),至多相差0.01。而MLP相比固定插值的最大提升是在Icm、URSTALL這兩個硬件事件上,分別提升了0.66和0.61,將原本無法用于實際場景的硬件事件的RA分數(shù)提升到0.82甚至0.95的可信度水平。
如圖7所示,本文使用DTW指標評判固定插值MPX與基于MLP模型的MPX結(jié)果。參考表6與圖7結(jié)果,從總體上來說,RA與DTW兩種評價指標基本一致,即RA越高,DTW-cost越小,MPX結(jié)果精度越高。

圖7 默認方法與MLP方法的DTW開銷對比(越低越好)Fig.7 DTW cost comparison between default method and MLP method (lower is better)
對于采用固定插值MPX就能達到RA 0.9以上的硬件事件,MLP能夠達到相近精度,但已沒有進一步的提升空間。因此,對Bi-GRU效果的評估只考慮原本效果較差的那些硬件事件。RA分數(shù)對比結(jié)果如圖8所示。

圖8 三種估計算法RA分數(shù)對比(越高越好)Fig.8 RA score comparison among three estimation methods(higher is better)
針對選取的7個硬件事件,Bi-GRU取得了最好的效果,其次是MLP,兩者皆優(yōu)于固定插值MPX。對于這7個硬件事件的平均RA分數(shù),Bi-GRU相比MLP提升了0.09;相比固定插值MPX提升了0.29,其中最大提升0.75,最小提升0.05。這表明Bi-GRU對于具有時間序列特征的硬件事件具有較好的效果。
如圖9所示,本文使用DTW-cost指標對Bi-GRU算法進行評估。除DTLM:S的DTW-cost與RA表現(xiàn)相反以外,其余硬件事件均符合DTW-cost越低,RA越高的規(guī)律。其中,Bi-GRU模型取得了最低的DTW-cost,7個硬件事件的DTW-cost均值為20.86,相比MLP模型的24.42降低了14.58%。而MLP和Bi-GRU這2種基于深度學習方法的DTW-cost相比于數(shù)值擬合方法(50.60)分別降低了51.74%和58.77%。

圖9 3種方法的DTW開銷對比(越低越好)Fig.9 DTW-cost among three methods (lower is better)
為進一步提升精度,本文基于深度學習模型MLP和Bi-GRU,提出了2種新的MPX估計算法。本文的MPX實現(xiàn)旨在面向高性能計算應用,在處理器性能建模中,提升關(guān)鍵硬件事件的多事件采集精度,進而為性能建模提供更可靠的大數(shù)據(jù)基礎(chǔ)。本文主要有以下3個貢獻:
1)通過MPX結(jié)果與實際數(shù)據(jù)的相似性分析,證明多次運行之間得到的硬件計數(shù)值存在線性相關(guān)性;
2)基于MLP和Bi-GRU深度學習模型,對MPX結(jié)果估計進行數(shù)據(jù)擬合,提升了MPX結(jié)果精度;
3)基于時序分析提出評估MPX結(jié)果準確度的指標。
實驗結(jié)果表明,基于MLP和Bi-GRU模型的MPX估計算法都能有效提升MPX結(jié)果精度。在Intel CPU上運行的13個基準測試程序中,在同時記錄15個硬件事件時,MLP模型相比固定插值MPX,RA分數(shù)平均提升了0.10左右,最多能提高0.66。而在MLP模型提升有限的7個硬件事件中,Bi-GRU模型相比固定插值MPX提升了0.288,其中最大提升達0.745。使用DTW-cost進行評估時,兩種基于深度學習的模型均比固定插值法降低了超過一半的DTW-cost。對比本文之前的工作,在更廣泛的高性能計算應用中(由6個拓展到13個)取得了更好的表現(xiàn)。此外,實驗結(jié)果表明,對于固定插值法下估計精度較差的硬件事件,采用MLP和Bi-GRU方法后,取得了更高的精度。部分硬件事件的精度在MLP和Bi-GRU方法下,精度仍未達到0.9,說明目前模型在面向不同硬件事件時,其模型的泛化能力仍有待評估與研究。
未來的工作將對MPX模式下的異常值產(chǎn)生機制和性能波動原因深入分析,從而降低由于意外波動導致的誤差。后續(xù)還將增加MPX同時采集的硬件事件數(shù)量,并將更多常用硬件事件納入硬件事件組,從而驗證基于深度學習的模型擬合方法在硬件事件更多、時間片更短的情況下,是否能夠達到提升RA分數(shù)的效果,并最終在多核處理器上實現(xiàn)多線程并行抓取。