乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      手把手教你cuda5.5與VS2010的編譯環(huán)境搭建

       知識池塘 2014-10-12

      目前版本的cuda是很方便的,它的一個安裝里面包括了Toolkit`SDK`document`Nsight等等,而不用你自己去挨個安裝,這樣也避免了版本的不同步問題。

      1 cuda5.5的下載地址,官方網(wǎng)站即可:

           https://developer./cuda-downloads   在里面選擇你所對應(yīng)的電腦版本即可。

      2 VS2010這個沒什么說的了,網(wǎng)上各種的免費資源,下載一個不需要錢的就行。

      3 Cuda的安裝:(win7版32bit)


       安裝cuda

        3.1 cuda的安裝文件

        

        直接雙擊exe文件,彈出后,首先會監(jiān)測一下你的運行環(huán)境,如果找不到Nividia對應(yīng)的顯卡設(shè)備,他會提示你是否要繼續(xù)安裝。這里面nvidia的顯卡,最起碼也是8800以上的,要不是無法編寫CUDA的。千萬不要電腦上面是intel或者AMD的顯卡,卻要編寫cuda,除非你有錢買一個cuda-x86這個編譯器。

        3.2 彈出的對話框直接OK就行,這個是CUDA的一些安裝文件,無所謂的:

       

        3.3 他會監(jiān)測你的電腦是否支持cuda的搭建,等待就行

        3.4 系統(tǒng)檢查

        3.5 選擇同意并繼續(xù)

        3.6 推薦先選擇自定義安裝

        3.7 最主要的是cuda document\cuda Toolkit \cuda samples(SDK),Nsight\圖形驅(qū)動程序,3D如果需要的話安裝,不安裝也無所謂。這里主要就是能看見都有什么,免得漏掉了,博主當(dāng)初就因為選了精簡安裝,沒安裝上SDK。

        

        3.7 安裝的位置,推薦自己建三個好找的文件夾,不用他默認(rèn)的路徑,免得稍后配置環(huán)境變量麻煩。

      博主的安裝路徑為:

        3.8 下一步安裝就行了。

      至此,cuda的安裝就搞定了。


       

      4 接下來配置cuda的環(huán)境變量,默認(rèn)安裝好后,他會自動幫你設(shè)置好2個環(huán)境變量,但是最好還自己添加下其他的幾個,方便日后配置vs使用

       

      上面的兩個環(huán)境變量是cuda默認(rèn)配置的,接下來添加

      復(fù)制代碼
      CUDA_BIN_PATH  %CUDA_PATH%\bin
      
      CUDA_LIB_PATH  %CUDA_PATH%\lib\Win32
      
      CUDA_SDK_BIN  %CUDA_SDK_PATH%\bin\Win32
      
      CUDA_SDK_LIB  %CUDA_SDK_PATH%\common\lib\Win32
      
      CUDA_SDK_PATH  C:\cuda\cudasdk\common
      復(fù)制代碼

       

      添加完就行了

       


       

      5 接下來是cuda的安裝成功與否的監(jiān)測了,這個步驟我們用到兩個東西,這兩個東西,都是cuda為我們準(zhǔn)備好的。

      deviceQuery.exe 和 bandwithTest.exe

        首先啟動cmd DOS命令窗口(博主的cuda安裝到c:\cuda文件夾下)

        默認(rèn)進(jìn)來的是c:\users\Admistrator\>路徑,輸入 cd .. 兩次,來到c:目錄下

        輸入dir 找到安裝的cuda文件夾

      進(jìn)入Release文件夾后,直接執(zhí)行bandwithTest.exe

      再執(zhí)行deviceQuery.exe

      得到以上信息,因為我的顯卡比較古老9300屬于第一代的cuda顯卡了。Rsult=PASS及說明,都通過了。如果Rsult=Fail 那不好意思,重新安裝吧(或者是您的顯卡真心不給力)。


       關(guān)于VS項目測試(推薦)

      打開VS,新建項目

      利用安裝好的cuda向?qū)?,直接建立工程,里面會自動有一段kernel累加的代碼

      View Code

      在main函數(shù)return之前加入getchar(),停止自動退出,以便觀測效果

      進(jìn)入后,點擊運行按鈕,可能發(fā)生LINK錯誤(如果沒有錯誤,跳過此段

      這時進(jìn)入-》項目-》屬性-》通用配置-》輸入和輸出-》嵌入清單 ---- 修改成,原來可能為“

      再次編譯,成功運行后,會顯示下面的結(jié)果

       

      恭喜,cuda已經(jīng)在您的機(jī)器上安裝成功了。

       

      如果是新手,推薦這樣新建工程后,在里面修改代碼成為自己的工程,配置屬性不會出錯。

      如果想要自己手動配置也可以參考下面的例子。

       

       


       

      手動配置VS項目(不推薦)

      最后就是VS的配置了(這個是自己手動配置的,有時候容易出現(xiàn)問題,不是很推薦,建議用上面的方法建立項目進(jìn)行測試

        5.1 啟動VS2010

        5.2 新建一個win32的控制臺工程,空的。

        5.3 右鍵源文件文件夾->新建項->選擇cuda c/c++->新建一個以.cu結(jié)尾的文件

        5.4 右鍵工程-》生成自定義-》選擇cuda生成

        5.5 右鍵test.cu-》屬性-》選擇cuda c/c++編譯器

        5.6 右鍵工程-》屬性-》鏈接器-》常規(guī)-》附加庫目錄-》添加目錄 $(CUDA_PATH_V5_5)\lib\$(Platform);

        5.7 在鏈接器-》輸入中添加 cudart.lib

       

        5.8 在工具-》選項-》文本編輯器-》文件擴(kuò)展名-》添加cu \cuh兩個文件擴(kuò)展名

       

      至此,編譯環(huán)境的相關(guān)搭建就完成了。

       


       

       

      下面提供了一段test.cu的代碼,供測試使用:

       

      復(fù)制代碼
       1 #include <stdio.h>
       2 #include <stdlib.h>
       3 #include <cuda_runtime.h> 
       4 
       5 #define DATA_SIZE 1024
       6 #define checkCudaErrors(err)  __checkCudaErrors (err, __FILE__, __LINE__)
       7 #define getLastCudaError(msg)  __getLastCudaError (msg, __FILE__, __LINE__)
       8 
       9 int data[DATA_SIZE];
      10 
      11 ////////////////////////////////////////////////////////////////////////////////
      12 // These are CUDA Helper functions
      13 
      14 // This will output the proper CUDA error strings in the event that a CUDA host call returns an error
      15 
      16 
      17 inline void __checkCudaErrors(cudaError err, const char *file, const int line )
      18 {
      19     if(cudaSuccess != err)
      20     {
      21         fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n",file, line, (int)err, cudaGetErrorString( err ) );
      22         return ;        
      23     }
      24 }
      25 
      26 // This will output the proper error string when calling cudaGetLastError
      27 
      28 
      29 inline void __getLastCudaError(const char *errorMessage, const char *file, const int line )
      30 {
      31     cudaError_t err = cudaGetLastError();
      32     if (cudaSuccess != err)
      33     {
      34         fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",
      35         file, line, errorMessage, (int)err, cudaGetErrorString( err ) );
      36         return ;
      37     }
      38 }
      39 
      40 // end of CUDA Helper Functions
      41 
      42 __global__ static void sumOfSquares(int *num, int * result){
      43     int sum=0;
      44     int i;
      45     for(i=0;i<DATA_SIZE;i++) {
      46         sum += num[i]*num[i];
      47         }
      48     *result = sum;
      49 }
      50 void GenerateNumbers(int *number, int size){
      51     for(int i = 0; i < size; i++) {
      52         number[i] = rand() % 10;
      53         printf("number[%d] is %d\n",i,number[i]);
      54     }}
      55     
      56 int main(){
      57 
      58         cudaSetDevice(0);
      59         cudaDeviceSynchronize();
      60         cudaThreadSynchronize();
      61 
      62         GenerateNumbers(data, DATA_SIZE);
      63 
      64         int * gpudata, * result;
      65         int sum;
      66 
      67         checkCudaErrors( cudaMalloc((void**) &gpudata, sizeof(int)*DATA_SIZE));
      68         checkCudaErrors(cudaMalloc((void**) &result, sizeof(int)));
      69         checkCudaErrors(cudaMemcpy(gpudata, data, sizeof(int)*DATA_SIZE,cudaMemcpyHostToDevice));
      70 
      71         sumOfSquares<<<1, 1, 0>>>(gpudata, result);
      72 
      73         checkCudaErrors(cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost));
      74 
      75         cudaFree(gpudata);
      76         cudaFree(result);
      77 
      78         printf("-----------sum: %d\n",sum);
      79 
      80         sum = 0;
      81         for(int i = 0; i < DATA_SIZE; i++) {
      82             sum += data[i] * data[i];
      83         }
      84         printf("sum (CPU): %d\n", sum);
      85 
      86         getchar();
      87         return 0;
      88 }
      復(fù)制代碼

       

       

       

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多