CUDA 安裝完成以后如何判斷安裝是否成功


最近在家里過寒假,可能這是還在學校里帶着最大的福利了,無意之中翻出了多年前買的幾本關於CUDA編程的書,於是隨便在自己電腦上配置了一下環境,試試能不能把當年沒有看完的書給看完了,於是有了今天這個判斷CUDA是否安裝成功的一個博客。

 

原本按照自己以前的安裝法子來配置環境,無奈開機后總是不成功,於是采用了Ubuntu默認的安裝方式,即 apt-get nvidia-cuda-toolkit ,  安裝好以后本打算着用CUDA自帶的測試sample 來試試是否安裝成功,無奈此種安裝方式是不帶sample的,於是采用如下步驟測試。

 

 

nvidia-setting

 

有了上圖后可以確認NVIDIA的驅動已經安裝好。

 

 

 

但是,這時出現了個比較神奇的事情,就是如下命令的失敗:

nvidia-detector

 

該命令顯示 顯卡並沒有被識別,而這恰恰和上圖出現的結果相反,十分令人費解,於是繼續探索。

 

 

 

 

lspci  | grep -i vga

該命令證明 NVIDIA 顯卡也沒有被識別,但這也是與第一個命令結果相反的,於是繼續在網上搜索。

 

 

最后在無意中發現了這個 帖子: https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=14898

該帖子最后的一個回答解答了我的疑慮:

 

lspci |  egrep 'VGA|3D'

 

該結果清楚的顯示我的電腦上的NVIDIA顯卡已經被識別,驗證了一個命令的驅動安裝成功的結果。

 

 

 

 

由於此種安裝方式並不會有自帶的sample因此需要我自己去編寫測試,這時在網上找到了這么一個demo,感覺不錯,如下:

#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h>

//初始化CUDA
int count=0;

bool InitCUDA()
{
    printf("Start to detecte devices.........\n");//顯示檢測到的設備數

    cudaGetDeviceCount(&count);//檢測計算能力大於等於1.0 的設備數

    if(count == 0)
    {
        fprintf(stderr, "There is no device.\n");
        return false;
    }

    printf("%d device/s detected.\n",count);//顯示檢測到的設備數

    int i;
    for(i = 0; i < count; i++)
    {//依次驗證檢測到的設備是否支持CUDA
        cudaDeviceProp prop;
        if(cudaGetDeviceProperties(&prop, i) == cudaSuccess) 
        {//獲得設備屬性並驗證是否正確
            if(prop.major >= 1)//驗證主計算能力,即計算能力的第一位數是否大於1
            {
                printf("Device %d: %s supportsCUDA %d.%d.\n",i+1,prop.name,prop.major,prop.minor);//顯示檢測到的設備支持的CUDA 版本
                break;
            }
        }
    }

    if(i == count) 
    {//沒有支持CUDA1.x 的設備
        fprintf(stderr, "There is no device supporting CUDA 1.x.\n");
        return false;
    }

    cudaSetDevice(i);//設置設備為主叫線程的當前設備
    return true;
}

int main()
{
    if(!InitCUDA()) 
    {//初始化失敗返回系統int argc, char** argv
        return 0;
    }

    printf("Hello GPU! CUDA has been initialized.\n");

    //exit(argc ? EXIT_SUCCESS : EXIT_FAILURE);
    return 0;//返回系統
}

 

 

 

 

 

 

其中需要注意的一個問題是運行編譯好的程序時需要使用  sudo ,  即使用管理員權限, 可能是在安裝NVIDIA驅動和CUDA的時候本身就是安裝使用管理員權限的,所以要調用它們的時候也是需要使用sudo來操作的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM