2014-07-21 49 views
-2

我想運行CULA的multiGPU示例,但出現以下錯誤。有人試過這個例子並設法讓它起作用嗎?我有兩塊GPU。CULA multiGPU.c

[ⅩⅩⅩⅩ@ XXXXXXXXXX multiGPU] $ ./multiGPU 找到2臺設備,將推出2個線程

線程0 - 推出 線程0 - 綁定到設備0 線程1 - 推出 線程1 - 綁定到裝置1個 主題0 - CUDA錯誤:獨家線程設備已在使用不同的線程(見程序員指南) 線程1 - 分配矩陣 線程1 - 初始化CULA 線程1 - 調用culaSgeqrf 線程1 - 關閉CULA

線程0 - 失敗

回答

2

我能夠通過將2 GPU系統上的計算模式設置爲EXCLUSIVE_PROCESS並從CULA運行multiGPU示例來重現此問題。

問題是multiGPU進程變成綁定到GPU,並阻止pthreads產生的線程訪問該GPU,導致錯誤消息指示(CUDA錯誤:獨佔線程設備已被不同使用線)。

此問題的一個解決方案是將GPU設置爲「默認」計算模式,以便它們可以一次被多個線程訪問。

#NVIDIA-SMI -c 0

該程序也可以與在EXCLUSIVE_PROCESS計算模式中的GPU的設備上運行,但CUDA多進程服務(MPS)必須被使用。該守護進程將管理設備上的進程,以便生成的進程與設備進行交互,就像它處於DEFAULT計算模式下一樣。對我來說,一旦MPS守護進程運行衝突設備,程序就會正常運行。啓動守護進程的方向可以在MPS文檔的附錄中找到。

https://docs.nvidia.com/deploy/pdf/CUDA_Multi_Process_Service_Overview.pdf

-Dan