TWI782845B - 通用型圖形處理器核心函式之組態設定預測系統及方法 - Google Patents
通用型圖形處理器核心函式之組態設定預測系統及方法 Download PDFInfo
- Publication number
- TWI782845B TWI782845B TW111100267A TW111100267A TWI782845B TW I782845 B TWI782845 B TW I782845B TW 111100267 A TW111100267 A TW 111100267A TW 111100267 A TW111100267 A TW 111100267A TW I782845 B TWI782845 B TW I782845B
- Authority
- TW
- Taiwan
- Prior art keywords
- configuration
- execution
- general
- graphics processor
- purpose graphics
- Prior art date
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本發明提供一種通用型圖形處理器核心函式之組態設定預測系統及方法,其適用於該通用型圖形處理器,其中該系統包含:一集合篩選模組,對該通用型圖形處理器核心函式之組態設定的參數集合進行初步篩選,將篩選完的該參數集合作為輸入參數;一資源佔有率篩選模組,將該輸入參數藉由在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值進行二次篩選,得到第一執行組態設定;一執行模組,將該第一執行組態設定以該通用型圖形處理器執行,得到執行時間;一訓練資料提取模組,根據該執行時間由該第一執行組態設定提取出第二執行組態設定,作為訓練資料;及一建模模組,藉由該訓練資料建立出一該通用型圖形處理器核心函式之組態設定預測模型。藉此,本發明可快速且精準地預測核心函式之組態設定。
Description
本發明係關於一種通用型圖形處理器核心函式之組態設定預測系統及方法,特別關於一種利用機器學習建立監督式學習模型的通用型圖形處理器核心函式之組態設定預測系統及方法。
隨著人工智慧、機器學習以及深度學習技術的發展,相關技術需要大量的運算能力,並且模型的發展也越來越複雜,如果只單純利用一般處理器(Central Processing Unit;以下簡稱CPU)進行運算,將會需要較多的時間在訓練模型上;另一方面,由於神經網路層中各個元素之運算沒有相依性具有獨立性,並不會相互影響計算結果,因此可以透過使用通用型圖形處理器(General-Purpose Graphics Processing Unit,GPGPU,為方便說明,以下皆簡稱GPU)硬體加速,讓訓練過程所需時間縮短。GPU具有高度平行化運算的架構,相較於CPU中只有數個或是數十個核心,GPU擁有數以千計的CUDA(Compute Unified Device Architecture,統一計算架構)核心,並且這些CUDA核心可以並行運作。雖然它的個別核心並不像CPU的核心有強大能力,能執行較複雜的指令,與執行各種形式的任務負載,但GPU憑藉數量優勢,能夠大幅提升特定運算的工作效率。
然而,組態設定將影響GPU執行時其底層資源的使用。雖然可能隨便給一個組態設定就能夠讓核心函式執行,但是要能達到最佳的執行效能極不容易。如果想要得到最佳的組態設定,有可能需要測試所有可能的組態設定組合後,才能確定何者為最佳組態設定;此外,不同核心函式的程式運作不同,使用的資源與邏輯差異很大,所以最佳組態設定也不同。即使以同一個核心函式在不同的GPU中或是運算不同大小的數據量,其最佳組態設定也可能會有所不同。雖然使用暴力窮舉法、或是將所有可優化的作法及因素都測試過,可以在所有組合中找出最佳組態設定,但是其時間及空間成本過大,故在執行階段快速立即得到最佳組態設定是件不可能的事情。
在此狀況下,現有技術為了能夠有效提高GPU的計算效能,可以利用估算GPU硬體資料在執行核心函式的資源佔有率,透過執行緒組(Warp)、暫存器、共享記憶體這三種GPU中有限資源的使用量,算出一個串流複合處理器(Streaming Multiprocessor:SM)中Warp的使用比例,GPU執行核心函式時,會因為上述三種有限資源影響到同一時間內在SM中的Warp存在數量,而在SM中可以同時執行的Warp數量有一定的上限,因此可以透過「估算Warp個數/Warp上限個數」計算資源佔有率,可以大致呈現出並行效率。
然而,考量各組態設定Warp、暫存器、共享記憶體這三種有限資源的使用率,若單項資源佔有率高,亦不一定代表效能較佳,故僅考量Warp使用率亦難以真實反映效能較佳的組態設定。
另一方面,一個核心函式會處理運算各種可能大小的數據,而其可以採用的組態設定組合可能也很多,因此若要完整測試所有大小數據以及其對應的所有組態設定,將是一件耗時且不可能的事情。此外,先前技術中提
出單一與多個核心函式的效能與能耗最佳化方式,選擇較高佔有率的組態做測試,避免測試所有可能的組態,但其仍使用暴力法測試留下的組態;並且,在使用佔有率篩選時,可能會出現誤判情況,而將效能較佳但佔有率卻較低的組態先剔除。
〔非專利文獻1〕 K. Iliakis, S. Xydis, and D. Soudris, “LOOG: Improving GPU Efficiency With Light-weight Out-Of-Order Execution,” IEEE Computer Architecture Letters, Vol. 18, No. 2, pp. 166-169, 1 July-Dec. 2019.
〔非專利文獻2〕 J. Guerreiro, A. Ilic, N. Roma and P. Tomás, "Multi-kernel Auto-Tuning on GPUs: Performance and Energy-Aware Optimization," 2015 23rd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, 2015.
據此,本發明提出一套兩階段機制:離線與線上,能夠在當要執行核心函式時,迅速並精準地建議核心函式一組以較少的執行時間完成運算的組態設定。
本發明在離線階段首先對參數集合進行初步篩選,接著綜合考
量各組態設定的資源佔用率,留下執行效能可能較佳的組態設定後,再分別以這些組態設定執行核心函式,並記錄其所花費執行時間。之後,提取出用來建立模型所需的訓練資料。而在線上階段,本發明選擇機器學習方法建立預測模型,以推薦出一組有較佳效能的組態設定。
具體而言,本發明提供一種通用型圖形處理器核心函式之組態設定預測系統,其適用於該通用型圖形處理器,其包含:一集合篩選模組,對該通用型圖形處理器核心函式之組態設定的參數集合進行初步篩選,將篩選完的該參數集合作為輸入參數;一資源佔有率篩選模組,將該輸入參數藉由在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值進行二次篩選,得到第一執行組態設定;一執行模組,將該第一執行組態設定以該通用型圖形處理器執行,得到執行時間;一訓練資料提取模組,根據該執行時間由該第一執行組態設定提取出第二執行組態設定,作為訓練資料;及一建模模組,藉由該訓練資料建立出一該通用型圖形處理器核心函式之組態設定預測模型。
進一步地,該參數集合可包含數據量集合、必要組態集合及可選組態集合。
進一步地,該訓練資料提取模組可針對每一個該數據量集合,根據該執行時間由該必要組態集合及該可選組態集合中進行提取,並將該數據量集合、該提取後的該必要組態集合及該可選組態集合作為訓練資料。
進一步地,該建模模組可採用K-鄰近演算法或邏輯式迴歸演算法建立模型。
進一步地,該集合篩選模組可藉由設定該數據量集合中之元素屬性的間隔初步篩選該數據量集合。
進一步地,該集合篩選模組可藉由以32為倍數選取執行緒區塊的執行緒個數來初步篩選該必要組態集合。
進一步地,該集合篩選模組可進一步優化該可選組態集合,該優化方法可為平鋪或共享記憶體補丁。
進一步地,該集合篩選模組對該可選組態集合的初步篩選方法可為:選定數個該數據量集合,在數個該數據量集合範圍內挑選該些範圍中的前、中、後段子範圍,測試該些子範圍、所有該必要組態集合及所有該可選組態集合,將擁有多數執行效能較佳的執行結果中的該可選組態集合篩選出。
本發明亦提供一種通用型圖形處理器核心函式之組態設定預測方法,其適用於該通用型圖形處理器,其包含:
對該通用型圖形處理器核心函式之組態設定的參數集合進行初步篩選,將篩選完的該參數集合作為輸入參數;
將該輸入參數藉由在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值進行二次篩選,得到第一執行組態設定;
將該第一執行組態設定以該通用型圖形處理器執行,得到執行時間;
根據該執行時間由該第一執行組態設定提取出第二執行組態設定,作為訓練資料;
藉由該訓練資料建立出一該通用型圖形處理器核心函式之組態設定預測模型;及
藉由該預測模型預測出一組組態設定。
進一步地,該參數集合可包含數據量集合、必要組態集合及可選組態集合。
藉由本發明之通用型圖形處理器核心函式之組態設定預測系統及方法,綜合考量在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值作為篩選標準,能更精準計算組態設定執行效能。
並且,藉由離線階段的參數集合的初步篩選,能依據使用者參數,有效地降低預測組態設定過程中耗費的成本。
並且,藉由線上階段的預測模型,本發明可以降低對全域記憶體的存取次數,大幅減低從記憶體存取資料的時間,進而提升核心函式運行時的效率,並快速推薦適當的必要組態設定。
並且,本發明藉由先在相關組態設定下執行不同資料量以獲得執行時間,再在線上階段將該些既有資料導入預測模型中,有效且快速地使預測模型可推薦一個有較短執行時間的組態設定。
並且,若進一步採用多種參數集合,本發明可減少離線階段測試執行的數據量個數,在線上階段也能依據資料量推薦適當執行組態。
綜上所述,本發明提出一個能夠快速且精準地預測組態設定的系統及方法,預測出來的組態設定誤差值小、且有較佳的執行效能。
以下藉由示例性實施方式說明本發明之通用型圖形處理器核心函式之組態設定預測系統及方法。應注意,下述示例性實施方式僅用以說明本發明,而非用以限制本發明之範圍。
圖1為通用型圖形處理器核心函式之組態設定預測系統之方塊示意圖,圖2則為通用型圖形處理器核心函式之組態設定預測方法之流程示意圖。本發明之預測方法主要分為離線及線上兩個階段,該離線階段分析在不同數據量下採用各別組態設定組合下的執行時間,篩選該線上階段建立模型之訓練資料來源;該線上階段提取建立模型所需的該訓練資料的特徵及標籤,並藉由該訓練資料建立預測模型。
[離線階段]
首先說明離線階段。在離線階段,如圖2所示,該離線階段分為三部分:
(1) 參數集合的初步篩選;
(2) 資源佔有率篩選;
(3) 執行組態設定。
在第(1)部分,由於一個核心函式會處理運算各種可能大小的數據,而其可採用的組態設定組合可能很多;例如,一組組態設定之參數集合可包含數據量、必要組態與可選組態三種參數設定。在此狀況下,若未將該些參數集合進行初步篩選,假設離線階段所要處理的數據量集合為 X = {𝑥
1, 𝑥
2, 𝑥
3, … , 𝑥
𝑝},必要組態集合為 M = {𝑚
1, 𝑚
2, 𝑚
3, … , 𝑚
𝑞},可選組態集合為 O = {𝑜
1, 𝑜
2, 𝑜
3, … , 𝑜
𝑟},則將必須測試 |X| ∗ |M| ∗ |O| 種組合,組合數量極為龐大,將會花費大量的時間和空間成本。因此,本發明之集合篩選模組依據各參數集合的相關特性過濾掉不必要或是不可能為適當組態設定的參數,以限制適當組態的可能範圍。
以下,以數據量、必要組態與可選組態三種集合為例,說明初步篩選的機制。
[數據量集合篩選機制]
數據量集合 X = {𝑥
1, 𝑥
2, 𝑥
3, … , 𝑥
𝑝}的大小為 |X| = 𝑝,假設元素的屬性個數為𝑛,集合中的某個元素為 𝑥
𝑖= (𝑥
𝑖 ,1, 𝑥
𝑖 ,2, … , 𝑥
𝑖 , 𝑛),一個元素的每個屬性上下限值的範圍為無窮大,之間的關係可能為獨立或有相依性,根據不同實際應用情況下實作出的核心函式而有所差異。
示例性地,設定該數據量集合中元素的屬性 𝑗 的最大與最小極限值分別為
𝑗和
𝑗,因此,
𝑗≤ 𝑥
𝑖 , 𝑗≤
𝑗。為了減少組合數量,元素 𝑥
𝑖的屬性 𝑗 值將限制在
𝑗到
𝑗範圍之間,且因為其代表資料個數, 所以 𝑥
𝑖 , 𝑗為正整數。
為了減少數據量且使數據量具有規律性,本發明以固定間隔距離選取欲執行的數據量,假設屬性 𝑗 間隔為 𝑑
𝑗,則屬性 𝑗 的數量會從
變為 ⌈
⌉,數據量集合大小 p 會從
減少為
。
[必要組態篩選機制]
必要組態集合M = {𝑚
1, 𝑚
2, 𝑚
3, … , 𝑚
𝑞},集合中的元素𝑚
𝑘= (𝑚
𝑘 ,1, 𝑚
𝑘 ,2),屬性 𝑚
𝑘 ,1和 𝑚
𝑘 ,2分別代表執行緒區塊個數 (TB Number) 以及執行緒區塊中的執行緒個數 (TB Size)。
假設已知欲處理的該數據量組合為 𝑥
𝑖= (𝑥
𝑖 ,1, 𝑥
𝑖 ,2, … , 𝑥
𝑖 , 𝑛),其運算總數為𝑂𝑝
Total ,該運算總數為核心函式對於該數據量組合的資料執行計算所需的運算個數,而一次運算定義由兩個運算元 (Operand) 及一個運算子(Operator) 組成,運算子不一定要是不可切割的運算 (Atomic Operation),不同核心函式因為其程式邏輯與行為不同,運算總數的算法也將不同。
以卷積運算核心函式為例,單次卷積的運算量為過濾器陣列 (Filter) 中的元素分別乘上輸入圖像陣列 (Input_Image) 中的相對應元素再加總。過濾器陣列中每個元素都會與相應的輸入陣列元素進行一次乘法及一次加法運算,單次卷積所需的運算量為過濾器陣列大小乘上 2,並依序往右且往下的方向滑行 (Slide),直到完成特徵圖陣列 (Feature_Map),其運算總數為該滑行次數乘以該單次卷積的運算量。
在此假設 𝑊𝑖𝑑𝑡ℎ
𝐼𝑛𝑝𝑢𝑡和 𝐻𝑒𝑖𝑔ℎ𝑡
𝐼𝑛𝑝𝑢𝑡分別為輸入圖像的寬度與高度,而 𝑊𝑖𝑑𝑡ℎ
𝐹𝑖𝑙𝑡𝑒𝑟和 𝐻𝑒𝑖𝑔ℎ𝑡
𝐹𝑖𝑙𝑡𝑒𝑟分別為過濾器的寬度與高度,卷積運算的運算總數公式為 2 ∗ (𝑊𝑖𝑑𝑡ℎ
𝐼𝑛𝑝𝑢𝑡− 𝑊𝑖𝑑𝑡ℎ
𝐹𝑖𝑙𝑡𝑒𝑟+ 1) ∗ (𝐻𝑒𝑖𝑔ℎ𝑡
𝐼𝑛𝑝𝑢𝑡− 𝐻𝑒𝑖𝑔ℎ𝑡
𝐹𝑖𝑙𝑡𝑒𝑟+ 1) ∗ (𝑊𝑖𝑑𝑡ℎ
𝐹𝑖𝑙𝑡𝑒𝑟∗ 𝐻𝑒𝑖𝑔ℎ𝑡
𝐹𝑖𝑙𝑡𝑒𝑟)。
核心函式的該運算總數為 𝑂𝑝
𝑇𝑜𝑡𝑎𝑙,一個執行緒區塊所需處理的運算量為 𝑂𝑝
𝑝𝑒𝑟 _ 𝑇𝐵,且每個執行緒所需處理的運算量為 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑時,則執行緒區塊個數𝑚
𝑘 ,1為
。而一個執行緒區塊中的執行緒所需處理的運算量為𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑× 𝑚
𝑘 ,2,𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑為一個執行緒所需處理的運算量,而𝑚
𝑘 ,2為執行緒區塊的執行緒個數,故可以推得關係式為 𝑚
𝑘 ,1=
。
假如使用其他優化方法,如平鋪 (Tiling),將會使每個執行緒的工作量提升,進而影響到𝑚
𝑘 ,1。假設平鋪設定值為 𝑡,代表實作核心函式時,需要讓每個執行緒工作量增加為原來的𝑡倍,則該關係式將變為 𝑚
𝑘 ,1=
。
示例性地,本發明定義 𝑚
𝑘 ,1的上限值為
1,下限值為
1;而 𝑚
2的上限值為
2, 下限值為
2。根據 NVIDIA GPU 的規格說明( CUDA Toolkit Documentation v11.3.0),一個 TB 中最多只能有 1024 個執行緒,因此
2與
2的值分別為1024與1;而 TB 的個數 𝑚
𝑘 ,1的
1與
1分別為2
31− 1與 1。
依據核心函式的特性,每個執行緒工作量 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑可分為固定量和不固定量兩種情況,以卷積運算核心函式為例,每個執行緒都要根據自身的索引值拿取其相對應的過濾器陣列元素對輸入圖像陣列元素作卷積運算,故每個執行緒被分配到的運算量皆為固定量。以平行歸約核心函式為例,運算過程中不同執行緒所需處理的運算量有所不同,則 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑不固定。
以固定運算量的核心函式為例。若 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑為固定量,在不使用其他優化方法的情況下,當一個核心函式處理固定大小的數據量時,所需的運算總數 𝑂𝑝
𝑇𝑜𝑡𝑎𝑙將是固定的,因此 𝑚
𝑘 ,1與 𝑚
𝑘 ,2之間的關係式為 𝑚
𝑘 ,1=
,而其中的𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑與𝑂𝑝
𝑇𝑜𝑡𝑎𝑙為已知數。給定 𝑚
𝑘 ,1或 𝑚
𝑘 ,2時,即可推算出另外一個的數值,因此必要組態集合大小 𝑞 為
2 –
2 + 1。
為減少時間與空間成本,示例性地,以下述方式減少必要組態集合M集合中的個數。 GPU 執行時以 Warp 為一個基本單位,一個 Warp 中最多可包含 32 個執行緒,若 Warp 中的執行緒不足 32可能因串流處理器(Streaming Processor,以下簡稱SP)閒置導致效能較差,故本發明以 32 為倍數選取 𝑚
2。藉由此挑選步驟,在 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑為固定量的情況下,可以將該集合M的大小 𝑞 從 (
2 –
2 + 1) 減為 ⌈
;而在不固定量的情況下,集合M的大小
(
k –
k + 1)變為⌈
1–
1+1)。
[可選組態篩選機制]
可選組態集合O = {𝑜
1, 𝑜
2, 𝑜
3, … , 𝑜
𝑟},假設有 𝑠 種的優化方式可以選用,元素的屬性個數則為 𝑠,集合中的某一元素 𝑜
𝑙定義為 𝑜
𝑙= (𝑜
𝑙 ,1, 𝑜
𝑙 ,2, … , 𝑜
𝑙 , 𝑠),元素 𝑜
𝑙的屬性 𝑢 會因為不同核心函式所使用的優化方法而有所不同。
以卷積運算為例,可使用下列優化方法:如平鋪 (Tiling)、共享記憶體補丁 (Padding)。可選組態非常具有彈性,分為使用或不使用以及設定數值兩種形式;假設 𝑜
𝑙 ,1代表共享記憶體補丁,𝑜
𝑙 ,2代表平鋪工作量,共享記憶體補丁是選擇使用或不使用,屬性 𝑜
𝑙 ,1的數值個數為 2;而平鋪則是要設定執行緒工作量為原基本工作量的倍數,基本工作量定義為不使用平鋪技術,或使用平鋪技術但設定的參數為 1 時。
在以下示例性實施方式中,本發明將不會定義 𝑜
𝑙 , 𝑢的上下限範圍,因為其屬性的範圍會根據不同的核心函式有很大的差異。
示例性地,可選定數個數據量組合測試以進行篩選,例如在欲測試的數據量範圍內,分別挑選此範圍中前、中、後段子範圍,作為觀察趨勢的代表,接著測試這些選定的數據量組合對應之所有的必要組態組合以及所有的可選組態集合組合,分別觀察執行結果的趨勢,將擁有多數執行效能較佳的的執行結果中的可選組態挑選出來,作為後續測試時的可選組態設定,並將可選組態集合 O的大小 r 從 |O| 縮減為 1。
挑選作為數據量所採用的可選組態代表的方式,會根據不同的核心函式改變。示例性地,並不能期待卷積運算核心函式所有數據量在使用同一個可選組態時能有好的表現。該核心函式運算過程中,過濾器陣列會高度地重複使用,故將該過濾器陣列放在共享記憶體資源中,利用共享記憶體的低延遲特性達到降低執行時間、提升效能的效果。故共享記憶體基本的使用量會隨著過濾器陣列的大小而變動,過濾器陣列越大,共享記憶體基本的使用量越多,若使用與較小過濾陣列時相同的平鋪工作量設定,可能使共享記憶體資源量需求過高,導致核心函式共享記憶體不足無法執行。故挑選作為代表的可選組態的方式就必須根據數據量組合進行調整。
示例性地,使用平行歸約核心函式時,因為其使用的優化方法在不同的數據量組合下不會影響到共享記憶體的使用量,使用同一個可選組態作為代表不會因不同的數據量組合導致特定的硬體資源量不足,故可以將該可選組態作為代表套用到所有執行組合上。
[資源佔有率篩選]
離線階段的第(2)部分為資源佔有率篩選,資源佔有率篩選模組藉由計算出篩選後數據量集合、必要組態集合以及可選組態集合元素中各組合的資源佔有率,利用資源佔有率高可能有較好的效能表現之特性,進一步淘汰執行效能可能較差的組合,以減少組合數。
首先,定義計算資源使用率所需用到名詞及其對應的符號;因每個 SM 上的資源皆有上限,如:暫存器個數、共享記憶體大小、可同時執行的 Warp 個數與可同時執行的執行緒個數,本發明分別以 𝑀𝑎𝑥𝑅𝑒𝑔
𝑆𝑀、𝑀𝑎𝑥𝑆𝑚𝑒𝑚
𝑆𝑀、𝑀𝑎𝑥𝑊𝑎𝑟𝑝
𝑆𝑀、和 𝑀𝑎𝑥𝑇ℎ𝑟𝑒𝑎𝑑
𝑆𝑀作為這些限制值。
同時,也定義了核心函式在執行時每個執行緒區塊中的執行緒個數為 𝑁𝑢𝑚
𝑇 ℎ _ 𝑝𝑒𝑟𝑇𝐵,每個執行緒所使用的暫存器個數為𝑁𝑢𝑚
𝑅𝑒𝑔 _ 𝑝𝑒𝑟𝑇 ℎ,每個執行緒區塊所使用的共享記憶體大小為 𝑁𝑢𝑚
𝑆𝑚𝑒𝑚 _ 𝑝𝑒𝑟𝑇𝐵,單一 SM 中可以同時執行的執行緒區塊為𝑁𝑢𝑚
𝑇𝐵 _ 𝑝𝑒𝑟𝑆𝑀。
示例性地,考慮僅有單一個核心函式執行,並且欲執行核心函式中所有的執行緒區塊無法同時放入 GPU 中的 SM 執行時,每一個 SM 中的不同資源佔有率:
(a) Warp 佔有率(𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦𝑊𝑎𝑟𝑝):SM 中 Warp 資源的使用比例;
(b) 暫存器佔有率(𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦𝑅𝑒𝑔):SM 中暫存器使用比例;
(c) 共享記憶體佔有率 (𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦𝑆𝑚𝑒𝑚):SM 中共享記憶體使用比例。
以這些佔有率訊息推測若以該組態設定執行時,效能的可能狀況。
分別計算一個 SM 中的 Warp、暫存器、和共享記憶體佔有率,因為在一個 SM中,可以使用的 Warp、暫存器、共享記憶體皆有數量限制,分別算出以這三種資源為限制之情況下得到的可同時運行執行緒區塊個數,並以三者之中的最小值作為在一個 SM 中可運行的執行緒區塊個數 (𝑁𝑢𝑚
𝑇𝐵 _ 𝑝𝑒𝑟𝑆𝑀)。
各別的可同時運行執行緒區塊個數計算方式說明如下:
(1) 以 Warp 為限制下得到的可同時運行執行緒區塊個數為𝑁𝑢𝑚
𝑇𝐵 _ 𝑊𝑎𝑟𝑝𝐿𝑖𝑚𝑖𝑡𝑒𝑑,計算方式為: 𝑁𝑢𝑚
𝑇𝐵 _ 𝑊𝑎𝑟𝑝𝐿𝑖𝑚𝑖𝑡𝑒𝑑=
;
(2) 以暫存器為限制下得到的可同時運行執行緒區塊個數為𝑁𝑢𝑚𝑇𝐵_𝑅𝑒𝑔𝐿𝑖𝑚𝑖𝑡𝑒𝑑,計算方式為:𝑁𝑢𝑚
𝑇𝐵 _ 𝑅𝑒𝑔𝐿𝑖𝑚𝑖𝑡𝑒𝑑=
;
(3) 以共享記憶體為限制下得到的可同時運行執行緒區塊個數為𝑁𝑢𝑚
𝑇𝐵 _ 𝑆𝑚𝑒𝑚𝐿𝑖𝑚𝑖𝑡𝑒𝑑,計算方式為:𝑁𝑢𝑚
𝑇𝐵 _ 𝑆𝑚𝑒𝑚𝐿𝑖𝑚𝑖𝑡𝑒𝑑=
。
其中,分配暫存器資源時一個 Warp 所配得的暫存器個數若不為 256 倍數,分配時會自動補至 256 的倍數, 故在計算一個 Warp 中的暫存器使用量,要先除上 256 再取高斯上限,才是真正運行時所分配的暫存器使用量。
有三種方式可以獲取每個執行緒所使用的暫存器數目𝑁𝑢𝑚
𝑅𝑒𝑔 _ 𝑝𝑒𝑟𝑇ℎ的值,第一種為透過觀察程式碼,從中推估出每個執行緒的暫存器使用量;第二種方式為利用 CUDA 編譯器 nvcc,加上參數-res-usage,即可將暫存器使用數量推估出來;第三種方式則在核心函式執行過程中,利用 CUDA 內建的資源監測工具 nvprof,加上參數--print-gpu-trace,反饋出每個執行緒的暫存器使用量。
只有第三種方式能夠精確地得知 𝑁𝑢𝑚
𝑅𝑒𝑔 _ 𝑝𝑒𝑟𝑇ℎ的值,但也是最耗費成本的方式。故若要盡可能地降低成本,便可採用第一和第二種方式;反之,需要高精確度時則選擇第三種方式。
相同的,分配共享記憶體資源時一個執行緒區塊所使用之位元組數不為 256 倍數的話,也會自動補上不足的位元組數,使其成為 256 的倍數,故在計算上需要除以 256 再取高斯上限,才能得到真正運行時所分配的共享記憶體使用量。
以上述三種資源為限制算出可同時運行執行緒區塊個數後,以最小值當作一個 SM 中可運行執行緒區塊個數,即可以推算出在運行時一個 SM 中三種資源各別的使用量,再除以一個 SM 中各別資源的數量上限,即可得出以下式子計算資源佔有率:
(1) 𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑊𝑎𝑟𝑝=
(2) 𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑅𝑒𝑔=
(3) 𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑆𝑚𝑒𝑚=
示例性地,假設某個組態設定中每個執行區塊中的執行緒個數 𝑁𝑢𝑚
𝑇 ℎ _ 𝑝𝑒𝑟𝑇𝐵為 128,每個執行緒所需要的暫存器個數𝑁𝑢𝑚
𝑅𝑒𝑔 _ 𝑝𝑒𝑟𝑇 ℎ為 50 個,每個執行緒區塊所需要的共享記憶體位元組數𝑁𝑢𝑚
𝑆𝑚𝑒𝑚 _ 𝑝𝑒𝑟𝑇𝐵為 16,384 Bytes。
以 RTX 2060 顯示卡為例,一個 SM 最多可以同時執行的 Warp 個數 𝑀𝑎𝑥𝑊𝑎𝑟𝑝
𝑆𝑀、擁有的暫存器個數𝑀𝑎𝑥𝑅𝑒𝑔
𝑆𝑀、 擁有的共享記憶體位元組個數 𝑀𝑎𝑥𝑆𝑚𝑒𝑚
𝑆𝑀和最多可以同時執行的執行緒個數 𝑀𝑎𝑥𝑇ℎ𝑟𝑒𝑎𝑑
𝑆𝑀分別為 32 個、65,536 個、65,536 Bytes 和 1,024 個。
在 Warp、暫存器、共享記憶體三種資源限制下,計算出的可運行執行緒區塊個數 𝑁𝑢𝑚
𝑇𝐵 _ 𝑊𝑎𝑟𝑝𝐿𝑖𝑚𝑖𝑡𝑒𝑑為 8 (=
)、𝑁𝑢𝑚
𝑇𝐵 _ 𝑅𝑒𝑔𝐿𝑖𝑚𝑖𝑡𝑒𝑑為 9.14 (=
) 和 𝑁𝑢𝑚
𝑇𝐵 _ 𝑆𝑚𝑒𝑚𝐿𝑖𝑚𝑖𝑡𝑒𝑑為 4 (=
)。以三者中最小的值作為𝑁𝑢𝑚
𝑇𝐵 _ 𝑝𝑒𝑟𝑆𝑀, 𝑁𝑢𝑚
𝑇𝐵 _ 𝑝𝑒𝑟𝑆𝑀為 4。
最後,套回上述計算資源佔有率計算式即可算出三個佔有率分別為: 𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑊𝑎𝑟𝑝為 0.5 (=
)、𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑅𝑒𝑔為 0.4 (=
)、𝑂𝑐𝑐𝑢𝑝𝑎𝑛𝑐𝑦
𝑆𝑚𝑒𝑚為 1 (=
)。
採用前述三個數值進行綜合考量,該綜合考量可能為三者平均或加權平均的值,並使用綜合考量後的值作為篩選標準。篩選方式分為兩種,第一種係選定極限數值,將資源佔有率小於這個數值的組合刪除;第二種係將綜合考量後所有組合的資源佔有率由大到小排序,選定一比例值(如: 70%),將比例值後的組合刪除(如:刪除後 70%的組合)。前述兩數值愈大,能降低的時間與空間成本越多,但誤刪率也會隨之增加。
選定極限值的淘汰方式比選定比例值的方式可以減少誤刪機 會。若採用選定比例值時固定值挑選不適當,可能一次性刪掉過多組合。以選擇極限值的方式,會較容易掌控要刪除組合的數量。
[執行組態設定]
離線階段的第(3)部分為執行模組使GPU實際執行已篩選完的組態設定,並紀錄其執行時間,以此作為線上階段時,建立模型所需要的訓練資料來源。
以一實施例進一步說明。以卷積運算為例,假設輸入的圖像陣列大小為 1000∗1000,過濾器陣列大小為 3∗3,其部分組合的資源佔有率及執行時間將如表 1所示。
表1
執行緒區塊大小 | Warp 佔有率 | 暫存器佔有率 | 共享記憶體佔有率 | 執行時間 |
160 | 93.75 % | 41.02 % | 9.38 % | 6.5446*10 −2ms |
512 | 100.0 % | 43.75 % | 7.81 % | 7.5167*10 −2ms |
544 | 53.12% | 23.24% | 4.3% | 9.7753*10 −2ms |
992 | 96.88 % | 42.38 % | 7.03 % | 7.8713*10 −2ms |
可發現,執行緒區塊大小為 160 的情況下,雖然 Warp 佔有率 93.5 % 低於執行緒區塊為 512 和 992 的 100 % 與 96.88 %,但共享記憶體佔有率 9.38 %卻高於兩者的 7.81 % 與 7.03 %,可見 Warp 佔有率高,不一定代表執行效能較佳。故本發明將其他佔有率納入考量的作法,會提升篩選標準的準確度。
當執行緒區塊大小為 544 的情況下, 其三種資源佔有率皆小於其他三者,其執行時間也是最久的,可見佔有率過低執行效能將會較差,故本發明依照資源佔有率篩選標準將佔有率過低的組合刪除。
假設藉由針對三種集合的元素篩選過程後,留下的需執行組合數為 y,而資源佔有率淘汰率為 z,藉由資源佔有率篩選後,必須測試的組合將從原本的 y 減少為 𝑦 × (1
–z)。假設原先必須測試的組合個數為 |X| × |M| × |O|,而算式經展開後為
× (
2 – 2 + 1) ∗ |O|;藉由上述的 4 個篩選組合過程後,在每個執行緒所需執行的運算量 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑為固定量,且資源佔有率的淘汰率為 z 的情況下,將從原本的
× (
2 –
2 + 1) ∗ |O| 縮減為
× ⌈
× 1 × (1 – 𝑧)。
本發明將原本極為龐大的執行組合,藉由篩選機制大幅地減少需執行組合,降低時間與空間成本,並留下相對優良的特徵資料作為線上階段時建立模型所需的訓練資料。
[線上階段]
接著,線上階段將前述離線階段篩選過的剩餘組合中提取並調整訓練資料,並將訓練資料匯入模型以建立模型。最後即可利用建立好的模型進行組態設定之預測。
參照圖2,該線上階段可分為二部分:
(1) 提取訓練資料;
(2) 建立模型並進行預測。
[提取訓練資料]
在機器學習的建立預測模型過程中,需要特徵資料及其相對應的標籤資料;據此,訓練資料提取模組需要從離線階段獲得的執行組合之執行結果中,提取適合的資料作為訓練資料,其中並分為特徵與標籤資料。
示例性地,可將數據量組合作為特徵資料,與其相對應的必要組態及可選組態則提取作為標籤資料。原先每一個數據量皆會與所有的必要組態組合與可選組態組合進行測試,該步驟則可將這些執行組合之中最好執行結果的組合作為此數據量組合的代表。
在每個執行緒工作量 𝑂𝑝
𝑝𝑒𝑟 _ 𝑡 ℎ 𝑟𝑒𝑎𝑑為固定量情況下,該步驟會在 ⌈
個組合中挑選出一個擁有最佳執行結果的執行組合,最後會將訓練資料減少為
筆。目的是為了讓機器學習中的預測模型在進行訓練時, 能夠明確地分辨在特定數據量組合之下,要將該數據量組合判定為何種類別,降低誤判的機率。
[建立模型]
示例性地,建模模組採用機器學習中的監督式學習法,並可挑選 K-鄰近演算法 (KNN) 或邏輯式迴歸 (Logistic Regression:LR) 演算法 作為模型來應用。
在此部分,建模模組可能須調整訓練資料維度。在特徵資料部分,KNN 與 LR 模型必須最少二個維度;而在標籤資料的部分,KNN 模型對於維度沒有限制,LR 模型需為一維;然而不同的核心函式,會使從執行組合的執行結果中提取出的訓練資料維度有所不同,因此可能還需要對訓練資料的維度進行調整,才能匯入模型中。若一核心函式提取出之訓練資料中,特徵資料與標籤資料皆為二維,則匯入K-鄰近演算法不需要調整維度;提取出的特徵資料若是一維即需要進行增維,增維時為了不要影響特徵資料,可在增加的維度上統一將值填充為 1。
據此,建立一通用型圖形處理器核心函式之組態設定預測模型;而利用該模型可建議出一組有較佳效能的組態設定。
綜上,利用本發明的通用型圖形處理器核心函式之組態設定預測系統及方法所建立的模型,可快速且精準地預測擁有較佳效能的組態設定;而該系統及方法亦能夠有效篩選建立預測模型之資料量,以相對低的時間及空間成本建立準確度高的核心函式組態設定預測模型。
[實施例一]
使用KNN作為預測模型,並採用卷積運算核心函式。以R(a, b)_KNN代表預測機制,R代表在離線階段的篩選,a代表數據量集合篩選機制中選取間隔
的設定值,b為資源佔有率篩選機制中設定的標準值,此標準值有兩種:(1)以P代表使用比例值淘汰方式;(2)以T代表使用極限值淘汰方式。
卷積運算核心函式的數據量集合中的輸入圖像陣列寬(高)度大小範圍的最小值與最大值分別為1,000至2,000,且選取間隔
為5、10、15與20;過濾器陣列寬(高)度大小範圍的最小值與最大值則分別3與74;資源佔有率篩選機制中的比例值淘汰機制值設定為20%、40%與60%,當設定比例值為20%時,代表刪除20%的資源佔有率較低的組態設定,留下80%有高佔有率的組態設定;極限值淘汰機制值設定為50%、55%與60%,當設定極限值為50%時,表示將平均資源佔有率值小於50%的組態設定刪除。
圖3所示為預測所花費的時間在其預測出的組態設定的執行時間佔比比較,該佔比值越小代表本實施例中預測階段所花費的時間成本越低。圖中可見在不同篩選參數
、P值或T值時,其佔比都小於0.7%,這代表我們提出的預測機制,在預測階段時,其時間成本極小,故可極快速地推薦出一組組態設定。
[實施例二]
使用邏輯式迴歸演算法作為預測模型,並採用平行歸約核心函式。以R(a, b)_LR代表預測機制,R代表在離線階段的篩選,a代表數據量集合篩選機制中選取間隔
的設定值,b為資源佔有率篩選機制中設定的標準值,此標準值有兩種:(1)以P代表使用比例值淘汰方式;(2)以T代表使用極限值淘汰方式。
平行歸約核心函式的數據量集合中的輸入陣列長度為八百萬至一千兩百萬,且選取間隔為10,000、20,000、30,000與40,000。資源佔有率比例值設定為0%、70%、80%和90%,極限值設定為50%、55%和60%。
用於分析平行歸約核心函式的執行效能的測試資料總共有500筆,其測試資料中的輸入陣列大小則為隨機選取。
1:通用型圖形處理器核心函式之組態設定預測系統
11:集合篩選模組
12:資源佔有率篩選模組
13:執行模組
14:訓練資料提取模組
15:建模模組
〔圖1〕通用型圖形處理器核心函式之組態設定預測系統之方塊示意圖。
〔圖2〕通用型圖形處理器核心函式之組態設定預測方法之流程示意圖。
〔圖3〕預測所花費的時間在其預測出的組態設定的執行時間佔比比較。
〔圖4〕預測所花費的時間在其預測出的組態設定的執行時間佔比比較。
1:通用型圖形處理器核心函式之組態設定預測系統
11:集合篩選模組
12:資源佔有率篩選模組
13:執行模組
14:訓練資料提取模組
15:建模模組
Claims (10)
- 一種通用型圖形處理器核心函式之組態設定預測系統,其適用於該通用型圖形處理器,其特徵係包含:一集合篩選模組,對該通用型圖形處理器核心函式之組態設定的參數集合進行初步篩選,將篩選完的該參數集合作為輸入參數;一資源佔有率篩選模組,將該輸入參數藉由在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值進行二次篩選,得到第一執行組態設定;一執行模組,將該第一執行組態設定以該通用型圖形處理器執行,得到執行時間;一訓練資料提取模組,根據該執行時間由該第一執行組態設定提取出第二執行組態設定,作為訓練資料;及一建模模組,藉由該訓練資料建立出一該通用型圖形處理器核心函式之組態設定預測模型。
- 如請求項1所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該參數集合包含數據量集合、必要組態集合及可選組態集合。
- 如請求項2所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該訓練資料提取模組針對每一個該數據量集合,根據該執行時間由該必要組態集合及該可選組態集合中進行提取,並將該數據量集合、該提取後的該必要組態集合及該可選組態集合作為該訓練資料。
- 如請求項1或2所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該建模模組採用K-鄰近演算法或邏輯式迴歸演算法建立模型。
- 如請求項2所述之通用型圖形處理器核心函式之組態設定預測系 統,其中,該集合篩選模組藉由設定該數據量集合中之元素屬性的間隔初步篩選該數據量集合。
- 如請求項2所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該集合篩選模組藉由以32為倍數選取執行緒區塊的執行緒個數來初步篩選該必要組態集合。
- 如請求項2所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該集合篩選模組進一步優化該可選組態集合,該優化方法為平鋪或共享記憶體補丁。
- 如請求項2所述之通用型圖形處理器核心函式之組態設定預測系統,其中,該集合篩選模組對該可選組態集合的初步篩選方法為:選定數個該數據量集合,在數個該數據量集合範圍內挑選該些範圍中的前、中、後段子範圍,測試該些子範圍、所有該必要組態集合及所有該可選組態集合,將擁有多數執行效能較佳的執行結果中的該可選組態集合篩選出。
- 一種通用型圖形處理器核心函式之組態設定預測方法,其適用於該通用型圖形處理器,其特徵係包含:對該通用型圖形處理器核心函式之組態設定的參數集合進行初步篩選,將篩選完的該參數集合作為輸入參數;將該輸入參數藉由在串流複合處理器中Warp、暫存器與共享記憶體的資源佔有率值進行二次篩選,得到第一執行組態設定;將該第一執行組態設定以該通用型圖形處理器執行,得到執行時間;根據該執行時間由該第一執行組態設定提取出第二執行組態設定,作為訓練資料; 藉由該訓練資料建立出一該通用型圖形處理器核心函式之組態設定預測模型;及藉由該預測模型預測出一組組態設定。
- 如請求項9所述之通用型圖形處理器核心函式之組態設定預測方法,其中,該參數集合包含數據量集合、必要組態集合及可選組態集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111100267A TWI782845B (zh) | 2022-01-04 | 2022-01-04 | 通用型圖形處理器核心函式之組態設定預測系統及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111100267A TWI782845B (zh) | 2022-01-04 | 2022-01-04 | 通用型圖形處理器核心函式之組態設定預測系統及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI782845B true TWI782845B (zh) | 2022-11-01 |
TW202328905A TW202328905A (zh) | 2023-07-16 |
Family
ID=85794370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111100267A TWI782845B (zh) | 2022-01-04 | 2022-01-04 | 通用型圖形處理器核心函式之組態設定預測系統及方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI782845B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201541404A (zh) * | 2012-11-06 | 2015-11-01 | Intel Corp | 動態再平衡圖型處理器資源的方法、裝置與系統 |
CN111190712A (zh) * | 2019-12-25 | 2020-05-22 | 北京推想科技有限公司 | 一种任务调度方法、装置、设备及介质 |
CN112363842A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 图形处理器的频率调整方法、装置、电子设备及存储介质 |
CN112870726A (zh) * | 2021-03-15 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图形处理器的资源分配方法、装置和存储介质 |
-
2022
- 2022-01-04 TW TW111100267A patent/TWI782845B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201541404A (zh) * | 2012-11-06 | 2015-11-01 | Intel Corp | 動態再平衡圖型處理器資源的方法、裝置與系統 |
CN111190712A (zh) * | 2019-12-25 | 2020-05-22 | 北京推想科技有限公司 | 一种任务调度方法、装置、设备及介质 |
CN112363842A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 图形处理器的频率调整方法、装置、电子设备及存储介质 |
CN112870726A (zh) * | 2021-03-15 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 图形处理器的资源分配方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW202328905A (zh) | 2023-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021057746A1 (zh) | 神经网络处理方法、装置、计算机设备及存储介质 | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
US10853544B2 (en) | Selective execution for partitioned parallel simulations | |
US8166479B2 (en) | Optimizing data analysis through directional dependencies of a graph including plurality of nodes and attributing threading models and setting status to each of the nodes | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
CN107612886A (zh) | 一种Spark平台Shuffle过程压缩算法决策方法 | |
CN114862656B (zh) | 基于多gpu的分布式深度学习模型训练代价的获取方法 | |
CN109815267A (zh) | 数据建模中特征的分箱优化方法及系统、存储介质及终端 | |
CN110825522A (zh) | Spark参数自适应优化方法及系统 | |
US20220343146A1 (en) | Method and system for temporal graph neural network acceleration | |
CN116501505B (zh) | 负载任务的数据流生成方法、装置、设备及介质 | |
CN112434785B (zh) | 一种面向超级计算机的分布式并行深度神经网络性能评测方法 | |
US11579680B2 (en) | Methods and devices for power management based on synthetic machine learning benchmarks | |
CN109409746A (zh) | 一种生产调度方法及装置 | |
CN113886092A (zh) | 一种计算图执行方法、装置及相关设备 | |
Pimpley et al. | Towards Optimal Resource Allocation for Big Data Analytics. | |
Hosny et al. | Characterizing and optimizing EDA flows for the cloud | |
CN114217930A (zh) | 一种基于混合任务调度的加速器系统资源优化管理方法 | |
CN113220466A (zh) | 一种基于长短期记忆模型的云服务负载通用预测方法 | |
TWI782845B (zh) | 通用型圖形處理器核心函式之組態設定預測系統及方法 | |
CN114021733B (zh) | 模型训练优化方法、装置、计算机设备及存储介质 | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
Larracoechea et al. | Towards Services Profiling for Energy Management in Service-oriented Architectures. | |
Sinaei et al. | Run-time mapping algorithm for dynamic workloads using association rule mining | |
CN117273115B (zh) | 一种反向计算图的静态生成方法、装置、设备及介质 |