免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
CUDA 6.0 安裝及配置( WIN7 64位 / 英偉達(dá)G卡 / VS2010 )

前言

  本文講解如何在VS 2010開發(fā)平臺(tái)中搭建CUDA開發(fā)環(huán)境

  當(dāng)前配置:

    系統(tǒng):WIN7 64位

    開發(fā)平臺(tái):VS 2010

    顯卡:英偉達(dá)G卡

    CUDA版本:6.0

  若配置不一樣,請(qǐng)勿參閱本文。

第一步

  點(diǎn)擊這里下載 cuda最新版,目前最高版本是6.0。下載完畢后得到 cuda_6.0.37_winvista_win7_win8.1_general_64.exe 文件。

第二步

  運(yùn)行安裝程序,彈出安裝過程中轉(zhuǎn)文件路徑設(shè)定框:

  

  這個(gè)路徑隨便填無所謂,安裝完后就會(huì)自動(dòng)刪除的,我就直接設(shè)置為默認(rèn)的。

第三步

  等待系統(tǒng)幫你檢測(cè)當(dāng)前平臺(tái)是否適合搭建CUDA:

  

第四步

  檢測(cè)完畢后,正式進(jìn)入CUDA安裝界面:

  

  同意并繼續(xù)

第五步

  然后選擇安裝模式:

  

  為了完全安裝所有功能,選擇自定義模式安裝。

第六步

  接下來勾選要安裝的組件:

  

  全部勾上

第七步

  接下來要設(shè)置三個(gè)安裝路徑:

  

  這三個(gè)路徑安裝的是什么在日后的文章中將會(huì)解釋,目前先不理會(huì),直接安裝到默認(rèn)路徑。點(diǎn)擊下一步之后開始正式安裝。

第八步

  安裝完畢后,可以看到系統(tǒng)中多了CUDA_PATH和CUDA_PATH_V6_0兩個(gè)環(huán)境變量,接下來,還要在系統(tǒng)中添加以下幾個(gè)環(huán)境變量:

  CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0

  CUDA_LIB_PATH = %CUDA_PATH%\lib\x64

  CUDA_BIN_PATH = %CUDA_PATH%\bin

  CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\x64

  CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

  然后,在系統(tǒng)變量 PATH 的末尾添加:

  ;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

第九步

  重新啟動(dòng)計(jì)算機(jī)以使環(huán)境變量生效

第十步

  打開VS2010并建立一個(gè)空的win32控制臺(tái)項(xiàng)目:

  

  附加選項(xiàng)那里請(qǐng)把“空項(xiàng)目”打鉤:

  

第十一步

  右鍵源文件 -> 添加 -> 新建項(xiàng) 如下圖所示:

  

  在打開的對(duì)話框中選擇新建一個(gè)CUDA格式的源文件 (如果你只是要調(diào)用 CUDA 庫(kù)編寫程序而不需要自行調(diào)用核函數(shù)分配塊,線程的話也可以就建立 .cpp 的源文件):

  

第十二步

  右鍵工程 -> 生成自定義 如下圖所示:

  

  在彈出的對(duì)話框中勾選“CUDA 6.0 *****"選項(xiàng):

  

第十三步

  右鍵項(xiàng)目 -> 屬性 -> 配置屬性 -> VC++目錄,添加以下兩個(gè)包含目錄:

  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\include

  C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0\common\inc

  再添加以下兩個(gè)庫(kù)目錄:

  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\lib\x64

  C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0\common\lib\x64

第十四步

  右鍵項(xiàng)目 -> 屬性 -> 配置屬性 ->連接器 -> 常規(guī) -> 附加庫(kù)目錄,添加以下目錄:

  $(CUDA_PATH_V6_0)\lib\$(Platform)

  如下圖所示:

  

第十五步

  右鍵項(xiàng)目 -> 屬性 -> 配置屬性 ->連接器 -> 輸入 -> 附加依賴項(xiàng),添加以下庫(kù):

  cublas.lib
  cublas_device.lib
  cuda.lib
  cudadevrt.lib
  cudart.lib
  cudart_static.lib
  cufft.lib
  cufftw.lib
  curand.lib
  cusparse.lib
  nppc.lib
  nppi.lib
  npps.lib
  nvblas.lib (32位系統(tǒng)請(qǐng)勿附加此庫(kù)!)
  nvcuvenc.lib
  nvcuvid.lib
  OpenCL.lib

  如下圖所示:

  

第十六步

  右鍵項(xiàng)目 -> 屬性,如下圖所示:

  

  將項(xiàng)類型設(shè)置為 CUDA C/C++:

  

第十七步

  打開配置管理器,如下圖所示:

  

  點(diǎn)擊 新建,如下圖所示:

  

  選擇 X64 平臺(tái):

  

好了,至此平臺(tái)已經(jīng)完全搭建完畢,可用以下代碼進(jìn)行測(cè)試:

  1 // CUDA runtime 庫(kù) + CUBLAS 庫(kù)   2 #include "cuda_runtime.h"  3 #include "cublas_v2.h"  4   5 #include <time.h>  6 #include <iostream>  7   8 using namespace std;  9  10 // 定義測(cè)試矩陣的維度 11 int const M = 5; 12 int const N = 10; 13  14 int main()  15 {    16     // 定義狀態(tài)變量 17     cublasStatus_t status; 18  19     // 在 內(nèi)存 中為將要計(jì)算的矩陣開辟空間 20     float *h_A = (float*)malloc (N*M*sizeof(float)); 21     float *h_B = (float*)malloc (N*M*sizeof(float)); 22      23     // 在 內(nèi)存 中為將要存放運(yùn)算結(jié)果的矩陣開辟空間 24     float *h_C = (float*)malloc (M*M*sizeof(float)); 25  26     // 為待運(yùn)算矩陣的元素賦予 0-10 范圍內(nèi)的隨機(jī)數(shù) 27     for (int i=0; i<N*M; i++) { 28         h_A[i] = (float)(rand()%10+1); 29         h_B[i] = (float)(rand()%10+1); 30      31     } 32      33     // 打印待測(cè)試的矩陣 34     cout << "矩陣 A :" << endl; 35     for (int i=0; i<N*M; i++){ 36         cout << h_A[i] << " "; 37         if ((i+1)%N == 0) cout << endl; 38     } 39     cout << endl; 40     cout << "矩陣 B :" << endl; 41     for (int i=0; i<N*M; i++){ 42         cout << h_B[i] << " "; 43         if ((i+1)%M == 0) cout << endl; 44     } 45     cout << endl; 46      47     /* 48     ** GPU 計(jì)算矩陣相乘 49     */ 50  51     // 創(chuàng)建并初始化 CUBLAS 庫(kù)對(duì)象 52     cublasHandle_t handle; 53     status = cublasCreate(&handle); 54      55     if (status != CUBLAS_STATUS_SUCCESS) 56     { 57         if (status == CUBLAS_STATUS_NOT_INITIALIZED) { 58             cout << "CUBLAS 對(duì)象實(shí)例化出錯(cuò)" << endl; 59         } 60         getchar (); 61         return EXIT_FAILURE; 62     } 63  64     float *d_A, *d_B, *d_C; 65     // 在 顯存 中為將要計(jì)算的矩陣開辟空間 66     cudaMalloc ( 67         (void**)&d_A,    // 指向開辟的空間的指針 68         N*M * sizeof(float)    // 需要開辟空間的字節(jié)數(shù) 69     ); 70     cudaMalloc ( 71         (void**)&d_B,     72         N*M * sizeof(float)     73     ); 74  75     // 在 顯存 中為將要存放運(yùn)算結(jié)果的矩陣開辟空間 76     cudaMalloc ( 77         (void**)&d_C, 78         M*M * sizeof(float)     79     ); 80  81     // 將矩陣數(shù)據(jù)傳遞進(jìn) 顯存 中已經(jīng)開辟好了的空間 82     cublasSetVector ( 83         N*M,    // 要存入顯存的元素個(gè)數(shù) 84         sizeof(float),    // 每個(gè)元素大小 85         h_A,    // 主機(jī)端起始地址 86         1,    // 連續(xù)元素之間的存儲(chǔ)間隔 87         d_A,    // GPU 端起始地址 88         1    // 連續(xù)元素之間的存儲(chǔ)間隔 89     ); 90     cublasSetVector ( 91         N*M,  92         sizeof(float),  93         h_B,  94         1,  95         d_B,  96         1 97     ); 98  99     // 同步函數(shù)100     cudaThreadSynchronize();101 102     // 傳遞進(jìn)矩陣相乘函數(shù)中的參數(shù),具體含義請(qǐng)參考函數(shù)手冊(cè)。103     float a=1; float b=0;104     // 矩陣相乘。該函數(shù)必然將數(shù)組解析成列優(yōu)先數(shù)組105     cublasSgemm (106         handle,    // blas 庫(kù)對(duì)象 107         CUBLAS_OP_T,    // 矩陣 A 屬性參數(shù)108         CUBLAS_OP_T,    // 矩陣 B 屬性參數(shù)109         M,    // A, C 的行數(shù) 110         M,    // B, C 的列數(shù)111         N,    // A 的列數(shù)和 B 的行數(shù)112         &a,    // 運(yùn)算式的 α 值113         d_A,    // A 在顯存中的地址114         N,    // lda115         d_B,    // B 在顯存中的地址116         M,    // ldb117         &b,    // 運(yùn)算式的 β 值118         d_C,    // C 在顯存中的地址(結(jié)果矩陣)119         M    // ldc120     );121     122     // 同步函數(shù)123     cudaThreadSynchronize();124 125     // 從 顯存 中取出運(yùn)算結(jié)果至 內(nèi)存中去126     cublasGetVector (127         M*M,    //  要取出元素的個(gè)數(shù)128         sizeof(float),    // 每個(gè)元素大小129         d_C,    // GPU 端起始地址130         1,    // 連續(xù)元素之間的存儲(chǔ)間隔131         h_C,    // 主機(jī)端起始地址132         1    // 連續(xù)元素之間的存儲(chǔ)間隔133     );134     135     // 打印運(yùn)算結(jié)果136     cout << "計(jì)算結(jié)果的轉(zhuǎn)置 ( (A*B)的轉(zhuǎn)置 ):" << endl;137 138     for (int i=0;i<M*M; i++){139             cout << h_C[i] << " ";140             if ((i+1)%M == 0) cout << endl;141     }142     143     // 清理掉使用過的內(nèi)存144     free (h_A);145     free (h_B);146     free (h_C);147     cudaFree (d_A);148     cudaFree (d_B);149     cudaFree (d_C);150 151     // 釋放 CUBLAS 庫(kù)對(duì)象152     cublasDestroy (handle);153 154     getchar();155     156     return 0;157 }

運(yùn)行結(jié)果

  

  PS: 矩陣元素是隨機(jī)生成的

小結(jié)

  不論什么開發(fā)環(huán)境的搭建,都應(yīng)該確保自己電腦的硬件配置,軟件版本和參考文檔的一致,這樣才能確保最短的時(shí)間內(nèi)完成搭建,進(jìn)入到具體的開發(fā)環(huán)節(jié)。

  

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Pytorch最全安裝教程(一步到位)
win7 64位下自行編譯OpenCV2.4.10+CUDA toolkit 5.5的整個(gè)過程以及需要注意的問題(opencv+cuda并行計(jì)算元素的使用)
Visual Studio 2010 中CUDA 4.0的安裝與配置
CUDA編程之快速入門
Windows +TensorFlow+Faster Rcnn 詳細(xì)安裝步驟(一)
VS2008 CUDA 配置
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服