GPU溫度的採集

        隨着高清,4K視頻的推廣,視頻GPU硬件編碼,解碼,轉碼已經開始成爲主流。同時人工智能的興起,深度學習也離不開硬件GPU的模型訓練和計算。GPU硬件參數越來得到開發人員的關注,對GPU 溫度,佔用率,顯存等參數也納入監控平臺的重要監控指標。本文以溫度爲例介紹如何監控顯卡GPU相關參數。

監控GPU參數通常由以下幾種方式:

  • 直接查看Windows資源管理器裏面GPU參數。

Windows資源監控管理器,能看到GPU各種佔有率參數,但看不到GPU的溫度,且通過這UI種方式只能在Windows系統中查看,無法將數據傳的傳輸後臺監控。同時win7的任務管理器不支持GPU參數顯示。

  • GPU-Z查看,魯大師等第三方軟件。

第三方軟件都是UI界面,只能臨時查看使用。無法集成到項目中,實時採集數據。我們的需求是完成了類似第三方工具的GPU相關參數的採集。

  • 顯卡廠家命令行工具

像英偉達提供命令行工具,如:nvidia-smi.exe

可以將命令行工具集成到代碼工程中,將命令行輸出重定向到工程代碼中的一個字符buffer中,然後解析字符buffer中的溫度等相關字段。該方法簡單,快速。不足之處如下:

  1. 每採集一次溫度調一次命令行,相當於啓動一個進程,有一定開銷。或者該命令行常駐執行,每N秒刷新一次參數,但如果被用戶幹掉了也就麻煩了,需要寫一個守護程序保護這個進程。
  2. 解析字符有點繁瑣,命令行工具打印字符如果格式發送變化可能造成解析錯誤。如版本升級,或者出現小數點,或者採集數據位數增加等造成打印參數格式變了等。不過這些問題可以代碼解析時做好兼容,不是問題。
  3. 有些顯卡驅動默認不帶該命令行參數採集工具,需要自己打包帶入系統

總體來說命令行工具打印重定向還是可以快速集成使用。筆者最初也是採用這個方式集成使用。但考慮這種方式有點囉嗦,不如直接調API來的利索,後面還是找到API方式獲取GPU監控參數。

對於AMD顯卡目前沒有找到官方相關命令行工具。如果有,請大家分享一下。

  • API調用獲取GPU相關參數

這種方法纔是最優雅的方法,像魯大師,GPU-Z等地方工具也都是通過API獲取。基本思路:調用GPU廠家的SDK庫的API來完成。

英偉達顯卡API採集溫度實現:

我們通過調用英偉達的SDK提供的API完成一個demo如下:

資源下載地址:https://download.csdn.net/download/fengliang191/12538530

AMD顯卡API採集溫度實現:

AMD顯卡我們通過調用顯卡驅動自帶的dll庫提供的API來完成溫度參數的採集(AMD顯卡比較坑,庫中有幾套API,不同顯卡API還不一樣,如果遇到API調用返回-8,說明顯卡版本和API沒有匹配上,API用錯了)。資源下載地址:

https://download.csdn.net/download/fengliang191/12538537

本文只是以GPU溫度採集爲例,介紹了GPU參數監控的方法,其他如GPU利用率,GPU顯存利用率等都可以使用同樣思路完成,Linux下也是類似的思路。更多更詳細資源請關注公衆:AV_Chat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章