天天看點

《CUDA C程式設計權威指南》——2.4節裝置管理

本節書摘來自華章社群《cuda c程式設計權威指南》一書中的第2章,第2.4節裝置管理,作者[美] 馬克斯·格羅斯曼(max grossman) ,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視

2.4 裝置管理

nvidia提供了幾個查詢和管理gpu裝置的方法。學會如何查詢gpu裝置資訊是很重要的,因為在運作時你可以使用它來幫助設定核心執行配置。

在本節,你将通過以下兩種方法學習查詢和管理gpu裝置:

cuda運作時api函數

nvidia系統管理界面(nvidia-smi)指令行實用程式

2.4.1 使用運作時api查詢gpu資訊

在cuda運作時api中有很多函數可以幫助管理這些裝置。可以使用以下函數查詢關于gpu裝置的所有資訊:

《CUDA C程式設計權威指南》——2.4節裝置管理

代碼清單2-8提供了一個示例,查詢了大家通常感興趣的一般屬性。可以使用下列指令編譯并運作:

《CUDA C程式設計權威指南》——2.4節裝置管理
《CUDA C程式設計權威指南》——2.4節裝置管理

2.4.2 确定最優gpu

一些系統支援多gpu。在每個gpu都不同的情況下,選擇性能最好的gpu運作核函數是非常重要的。通過比較gpu包含的多處理器的數量選出計算能力最佳的gpu。如果你有一個多gpu系統,可以使用以下代碼來選擇計算能力最優的裝置:

《CUDA C程式設計權威指南》——2.4節裝置管理

2.4.3 使用nvidia-smi查詢gpu資訊

nvidia-smi是一個指令行工具,用于管理和監控gpu裝置,并允許查詢和修改裝置狀态。

你可以從指令行調用nvidia-smi。例如,要确定系統中安裝了多少個gpu以及每個gpu的裝置id,可以使用以下指令:

《CUDA C程式設計權威指南》——2.4節裝置管理
《CUDA C程式設計權威指南》——2.4節裝置管理

2.4.4 在運作時設定裝置

支援多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。

繼續閱讀