本節書摘來自華章計算機《cuda c程式設計權威指南》一書中的第2章,第2.4節,作者 [美] 馬克斯·格羅斯曼(max grossman),譯 顔成鋼 殷建 李亮,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
nvidia提供了幾個查詢和管理gpu裝置的方法。學會如何查詢gpu裝置資訊是很重要的,因為在運作時你可以使用它來幫助設定核心執行配置。
在本節,你将通過以下兩種方法學習查詢和管理gpu裝置:
cuda運作時api函數
nvidia系統管理界面(nvidia-smi)指令行實用程式
在cuda運作時api中有很多函數可以幫助管理這些裝置。可以使用以下函數查詢關于gpu裝置的所有資訊:

cudadeviceprop結構體傳回gpu裝置的屬性,可以通過以下網址檢視其内容:
代碼清單2-8提供了一個示例,查詢了大家通常感興趣的一般屬性。可以使用下列指令編譯并運作:
根據你的配置,checkdeviceinfor将傳回所安裝裝置的不同資訊。下面是一個輸出示例:
一些系統支援多gpu。在每個gpu都不同的情況下,選擇性能最好的gpu運作核函數是非常重要的。通過比較gpu包含的多處理器的數量選出計算能力最佳的gpu。如果你有一個多gpu系統,可以使用以下代碼來選擇計算能力最優的裝置:
nvidia-smi是一個指令行工具,用于管理和監控gpu裝置,并允許查詢和修改裝置狀态。
你可以從指令行調用nvidia-smi。例如,要确定系統中安裝了多少個gpu以及每個gpu的裝置id,可以使用以下指令:
你可以使用以下指令擷取gpu 0的詳細資訊:
可以利用下列參數精簡nvidia-smi的顯示資訊:
memory
utilization
ecc
temperature
power
clock
compute
pids
performance
supported_clocks
page_retirement
accounting
例如,若隻顯示裝置記憶體資訊,可使用以下指令:
若隻顯示裝置使用資訊,可使用以下指令:
支援多gpu的系統是很常見的。對于一個有n個gpu的系統,nvidia-smi從0到n―1标記裝置id。使用環境變量cuda_visible_devices,就可以在運作時指定所選的gpu且無須更改應用程式。
設定運作時環境變量cuda_visible_devices=2。nvidia驅動程式會屏蔽其他gpu,這時裝置2作為裝置0出現在應用程式中。
也可以使用cuda_visible_devices指定多個裝置。例如,如果想測試gpu 2和gpu 3,可以設定cuda_visible_devices = 2, 3。然後,在運作時,nvidia驅動程式将隻使用id為2和3的裝置,并且會将裝置id分别映射為0和1。