盡管多媒體處理極大地受益于多核處理器可用性的提高,但直到最近,人們仍傾向于從基本同質的 CPU 架構的角度考慮多核。一種典型的方法提供雙核、四核和更多數量的內核,這些內核排列在對稱多處理器 (SMP) 或緩存一致的非統一內存架構 (ccNUMA) 組中。這些設備有時帶有額外的硬件加速來卸載特別困難的任務,例如 H.264 視頻處理中使用的上下文自適應可變長度編碼 (CAVLC) 或處理器密集型上下文自適應二進制算術編碼 (CABAC) 熵編碼功能。
許多公司現在在他們的設備中提供集成顯卡,主要是為了節省電路板空間和材料成本。擁有集成圖形處理單元 (GPU) 的另一個好處是它可以提供另一種途徑來攻擊具有挑戰性的計算任務。例如,AMD 的 R 系列處理器將 Bulldozer CPU 架構與離散級 AMD Radeon GPU 集成以產生加速處理單元 (APU)。
GPU 是一組單指令多數據 (SIMD) 處理元素。請注意陣列和 x86 內核之間的通用內存控制器。這種架構是轉向 AMD 異構系統架構 (HSA) 的早期步驟,它通過將集成圖形處理元素視為可應用于非圖形數據的計算資源池,顯著打破了傳統的多核方法。它類似于可以使用附加硬件加速器的方式,但具有作為大型可編程設備集群的優勢 - 高端多達 384 個內核 - 具有數百 GFLOPS 的計算吞吐量。
表 1 說明了與 AMD R 系列 APU 具有相同底層架構的 AMD 臺式機部件的基本操作參數?;?Bulldozer 的 CPU 的 121.6 GFLOPS 浮點性能與 GPU 相形見絀,GPU 為可以有效利用資源的應用程序提供 614 GFLOPS。在成像中利用添加的 GPU 處理器的關鍵是考慮將數據塊傳輸到 GPU、對其進行處理、然后將結果返回到主線程所需的時間。
表 1:運行參數的比較展示了 AMD 臺式機部件中 CPU 與 GPU 的性能。
視頻轉碼應用中的性能分析
盡管當前一代 AMD R 系列處理器需要在 GPU 和 CPU 之間進行緩沖區傳輸,但數據并行應用程序可以實現吞吐量和功率效率的提高,這大大超過了數據傳輸的成本。
數據并行應用程序的一個示例是 Handbrake,它是一種廣泛使用的視頻轉碼實用程序,可在各種操作系統和硬件平臺上運行。該實用程序值得注意的是,它具有良好集成的多核支持,因此可作為研究多核策略有效性的合適平臺。Handbrake 使用 x264,這是一種功能齊全的 H.264 編碼器,用于多種開源和商業產品,可提供足夠的多核支持。
在這兩個項目中都使用了 OpenCL,以最大限度地利用 APU 中可用的 GPU 計算資源。在 x264 中,與前瞻功能相關的質量優化被完全移植到 GPU 上的 OpenCL。這可用于轉碼應用程序以提高輸出視頻質量,通常會消耗高達約 20% 的 CPU 時間。Handbrake 直接使用 x264 作為視頻編碼器。此外,Handbrake 使用 OpenCL 執行視頻縮放和從 RGB 到 YUV 色彩空間的色彩空間轉換。AMD 的硬件視頻解碼器 (UVD) 也被用于 Handbrake 以執行一些視頻解碼任務。
數據是在 Trinity 100 W A10 臺式機上生成的;但是,底層架構與嵌入式產品中使用的架構相同。
為了簡化對 APU 復雜電源管理架構的分析,我們評估了頂級熱設計功耗 (TDP),而不是分解每個子系統消耗的功耗。表 2 中顯示的數據表明,當純粹在 CPU 中執行處理時,可以實現 14.8 fps 的幀速率,并且在 62 秒內完成處理。在處理過程中涉及 GPU 和 UVD 塊將幀速率提高到 18.3 fps,從而減少了處理時間,從而減少了 14 秒或 22% 的功耗。
表 2:對 A10 臺式機上的 Handbrake 應用程序的分析顯示了單獨使用 CPU 與使用 GPU 和 UVD 塊進行處理時的性能差異。
表 2 中的浮點運算總數是表 1 中的浮點吞吐量和處理時間的乘積,從中可以得出一個品質因數:每瓦操作數。查看每瓦特的總浮點運算和歸一化運算,很明顯處理資源被留在了桌面上。僅 CPU 的吞吐量為每瓦 75 次操作,而當添加 GPU 時,它提高到每瓦 353 次操作,理論浮點吞吐量提高了近 5 倍 (4.7)。
22% 是非常重要的節省,但是盡管這一代 APU 在 HSA 方向上取得了重大進展,但從延遲和吞吐量的角度來看,所有內存訪問并不統一。當內核訪問內存時,它會直接這樣做。在典型應用中,此類操作的理論速率為 22 GBps 或 16 到 18 GBps。但是,當在主機內存中創建緩沖區以訪問 GPU 數據時,該數據會通過不同的路徑,其中有效帶寬接近 8 MBps。這意味著內核在本地可以預期的內存帶寬與程序員為 GPU 內存設置本地緩沖區時可以預期的內存帶寬差距接近 3:1。這是對稱的。如果 GPU 需要駐留在 CPU 內存中的數據,那么同樣的關系也成立。
未來采用全 HSA 架構的設備將擁有統一的內存模型,無需在 CPU 和 GPU 內存區域之間復制數據。諸如 x264 的前瞻功能等算法,當移入 GPU 的處理域時,從內存帶寬的角度來看,將具有近乎同等的地位。
基準測試應用程序中的性能分析
數據并行應用程序的第二個示例是 LuxMark,它是一個面向圖形的基準測試包,它使用 OpenCL,并說明了當從等式中移除內存訪問時間的差異時可以實現的目標。默認的集成基準測試在 AMD Embedded R-464L APU 上運行,其特性如表 3 所示。
表 3:運行參數比較展示了 AMD 嵌入式 R-464L APU 中的 CPU 與 GPU 性能。
表 4 中的結果清楚地表明,對于此類處理任務,GPU 的性能優于 CPU 25% 以上。使用完整的 HSA 實施,人們會期望看到 CPU 加 GPU 的增加接近 GPU 加 CPU 的總和:344。在實踐中,得到的數字是 230,這是一個不平凡的 63% 提升,但不是反映充分利用的資源。這種差距主要是由于 CPU 解析數據的開銷以及以前面描述的較低速度在 CPU 和 GPU 之間來回傳輸數據的開銷。這些特性將能夠以最小的開銷同時利用 CPU 和 GPU,從而使 CPU 和 GPU 的綜合性能明顯優于單獨使用任何一個。
表 4:在 AMD 嵌入式 R-464L APU 上運行 LuxMark 2.0 基準測試的結果表明 GPU 在此處理任務中的表現優于 CPU。
最大化計算資源
新發布的 APU 產品為嵌入式計算產品的設計人員提供了重要的計算資源。利用這些資源需要對底層硬件架構有深入的了解,深入了解目標應用程序中的數據流問題,并熟悉 OpenCL 等最新工具。
作者:Frank Altschuler ,Jonathan Gallmeier
審核編輯:郭婷
-
amd
+關注
關注
25文章
5484瀏覽量
134351 -
嵌入式
+關注
關注
5087文章
19153瀏覽量
306427 -
gpu
+關注
關注
28文章
4760瀏覽量
129132
發布評論請先 登錄
相關推薦
評論