2013-07-17 129 views
2

我正在運行下面的代碼。但是,我得到輸出 遇到錯誤代碼爲38 測試= 0 的deviceCount = 0 遇到錯誤代碼爲38 測試2 = 0 我在Ubuntu的NVIDIA GTX 690顯卡。這是否意味着駕駛員未被激活?cudaGetDeviceCount返回0

#include <iostream> 

using namespace std; 
__device__ __constant__ float* data; 

template<class T> void allocOnly(T* deviceDest, size_t numElem) 
{ 
    cudaError_t errCode = cudaMalloc((void**)&deviceDest, numElem*sizeof(T)); 
    if(errCode != cudaSuccess) 
     cout << "Got error with code " << errCode << endl; 
} 

int main() 
{ 
    float* test(0); 
    allocOnly<float>(test,10); 
    cout << "test = " << test << endl; 
    int deviceCount = 0; 
    cudaGetDeviceCount(&deviceCount); 
    cout << "deviceCount= " << deviceCount << endl; 

    float* test2(0);  
    cudaError_t errCode = cudaMalloc((void**)&test2, 10*sizeof(float)); 
    if(errCode != cudaSuccess) 
     cout << "Got error with code " << errCode << endl; 
    cout << "test2 = " << test2 << endl; 

    return 0; 
} 
+0

我不知道是否有幫助,但如果你是在最近的筆記本電腦運行Ubuntu,你可能需要,因爲Nvidia的擎天柱大黃蜂的,以便安裝驅動程序。 – Brugere

回答

1

是的,系統設置有問題。嘗試從終端運行nvidia-smi -a並查看報告內容。

您應該在cudaGetDeviceCount(以及所有cuda API調用和內核調用)的調用上做proper cuda error checkingerror returned from that API call也是有啓發性的。

這也將是有意義的我之前執行調用cudaGetDeviceCount任何其他CUDA API調用(如allocOnly調用cudaMalloc)。

+0

感謝羅伯特我得到了錯誤jumioadmin @ cudaGPU:〜/ cuda-convnet $ nvidia-smi -a NVIDIA:無法打開設備文件/ dev/nvidiactl(沒有這樣的文件或目錄)。 Nvidia-smi失敗了,因爲它無法與NVIDIA驅動程序通信。確保已安裝並運行最新的NVIDIA驅動程序。 我有NVIDIA網站上的.run文件。我還需要做些什麼才能讓它每次都運行? – vkaul11

+0

我不確定你在問什麼。您可能需要通過像root用戶那樣運行'nvidia-smi'來實例化必要的文件。或者,也許你只需要安裝驅動程序。或者,也許你正在與一個新的驅動程序發生衝突。根據這些信息,我無法真正診斷您的系統。此外,幫助您正確設置系統是SO的主題。您可能想閱讀linux [入門指南](http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html),因爲其中包含了一些主題。 –

+0

從'cudaGetDeviceCount'返回的錯誤不會是「有教育意義的」。該呼叫被定義爲始終返回'cudaSuccess':請參見[手冊](https://www.cs.cmu.edu/afs/cs/academic/class/15668-s11/www/cuda-doc/html/group__CUDART__DEVICE_g665468e8cb33be42434f11bee2684ec9 .html) –

0

執行以下命令。應該解決的問題..

sudo nvidia-xconfig --enable-all-gpus