cuda安装配置VS2013
1.1 安裝cuda
首先官網下載安裝包,這個就不細說了 ,我下的是這個版本cuda_8.0.61_win10.exe,,注意win7和win10版本要對應,千萬別弄錯了 之后雙擊會出現如下截圖,
解壓完以后一直點下一步如下圖
?
出現這個等半個小時左右就好了
安裝結束后開始配置系統環境變量
win10可以這么操作win+s 搜索環境,自動匹配出系統環境變量
1.2 配置環境變量
打開環境變量后如下圖:
如圖中點擊環境變量的就是了打開后,如下圖設置:
點擊新建會出現:
?
CUDA_PATH = C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v8.0
CUDA_PATH_V7_5 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
將上面的變量名和變量值依次填入:
比如:
依次填入后,找到path如圖:
?
依次點擊新建,將?%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_LIB_PATH%;依次填入,填入后效果如上圖所示。全部安裝好后一定要記得重啟!,這里就將cuda 在win10中如何配置的完成了
?
1.4 VS2013 + CUDA7.5配置(其他版本VS、CUDA都類似)
·????????1.打開vs2013并創建一個空win32程序,創建一個cuda_samples的解決方案和cuda_test1項目:?
·????????2.右鍵源文件–>添加–>新建項,如下圖所示:
·????????3.選擇NIVIDIA CUDA7.5中 CUDA C/C++file,并在名稱那填上cuda_main
·????????4.選擇cuda_test1,點擊右鍵–>項目依賴項–>自定義生成
·????????5.選擇CUDA7.5
·????????6.點擊cuda_main.cu的屬性
·?????????
1.? 在配置屬性–>常規–>項類型–>選擇“CUDA C/C++”
1.5 項目配置
1.5.1 x64
1.5.1.1 包含目錄配置
·????????1.右鍵點擊項目屬性–>屬性–>配置屬性–>VC++目錄–>包含目錄
·????????2.添加包含目錄:?
$(CUDA_PATH)\include
1.5.1.2 庫目錄配置
·????????1.VC++目錄–>庫目錄
·????????2.添加庫目錄:?
$(CUDA_PATH)\lib\x64
1.5.1.3 依賴項
·?????????
1.? 配置屬性–>連接器–>輸入–>附加依賴項
·?????????
1.? 添加庫文件:?
cublas.lib?
cuda.lib?
cudadevrt.lib?
cudart.lib?
cudart_static.lib?
nvcuvid.lib?
OpenCL.lib`
注意:添加nvcuvenc.lib庫文件,編譯時,報找不到該文件的錯誤。去掉后,程序也能運行
1.5.2 x86(win32)
1.5.2.1 包含目錄配置
·?????????
1.? 右鍵點擊項目屬性–>屬性–>配置屬性–>VC++目錄–>包含目錄
·?????????
1.? 添加包含目錄:?
$(CUDA_PATH)\include
1.5.2.2 庫目錄配置
·????????1.VC++目錄–>庫目錄
·????????2.添加庫目錄:?
$(CUDA_PATH)\lib\Win32
1.5.2.3 依賴項
·?????????
1.? 配置屬性–>連接器–>輸入–>附加依賴項
·?????????
1.? 添加庫文件:?
cuda.lib?
cudadevrt.lib?
cudart.lib?
cudart_static.lib?
nvcuvid.lib?
OpenCL.lib`
備注: win32和x64位的lib庫有差別,配置時需注意,除了上述添加的lib文件外,x64還有其他的lib庫文件,如cublas.lib,如運行1.6的樣例時,要添加這個庫,不然會編譯失敗。
1.6 樣例
// CUDA runtime 庫 + CUBLAS 庫
#include"cuda_runtime.h"
#include"cublas_v2.h"
#include <time.h>
#include<iostream>
?
using namespace std;
// 定義測試矩陣的維度
int const M = 5;
int const N = 10;
int main()
{
// 定義狀態變量
cublasStatus_t status;
// 在內存中為將要計算的矩陣開辟空間
float *h_A =(float*)malloc(N*M*sizeof(float));
float *h_B =(float*)malloc(N*M*sizeof(float));
// 在 內存 中為將要存放運算結果的矩陣開辟空間
float *h_C =(float*)malloc(M*M*sizeof(float));
// 為待運算矩陣的元素賦予 0-10 范圍內的隨機數
for (int i = 0;i<N*M; i++) {
??? h_A[i] = (float)(rand() % 10 + 1);
??? h_B[i] = (float)(rand() % 10 + 1);
}
// 打印待測試的矩陣
cout << "矩陣 A :" <<endl;
for (int i = 0;i<N*M; i++){
??? cout << h_A[i] << "";
??? if ((i + 1) % N == 0) cout << endl;
}
cout << endl;
cout << "矩陣 B :" <<endl;
for (int i = 0;i<N*M; i++){
??? cout << h_B[i] << "";
??? if ((i + 1) % M == 0) cout << endl;
}
cout << endl;
/*
??? ** GPU 計算矩陣相乘
??? */
// 創建并初始化 CUBLAS 庫對象
cublasHandle_t handle;
status =cublasCreate(&handle);
if (status != CUBLAS_STATUS_SUCCESS)
{
??? if (status ==CUBLAS_STATUS_NOT_INITIALIZED) {
??????? cout << "CUBLAS 對象實例化出錯" << endl;
??? }
??? getchar();
??? return EXIT_FAILURE;
}
float *d_A, *d_B, *d_C;
// 在 顯存 中為將要計算的矩陣開辟空間
cudaMalloc(
??? (void**)&d_A, // 指向開辟的空間的指針
??? N*M * sizeof(float) // 需要開辟空間的字節數
??? );
cudaMalloc(
??? (void**)&d_B,
??? N*M * sizeof(float)
??? );
// 在 顯存 中為將要存放運算結果的矩陣開辟空間
cudaMalloc(
??? (void**)&d_C,
??? M*M * sizeof(float)
??? );
// 將矩陣數據傳遞進 顯存 中已經開辟好了的空間
cublasSetVector(
??? N*M, // 要存入顯存的元素個數
??? sizeof(float), // 每個元素大小
??? h_A, // 主機端起始地址
??? 1, // 連續元素之間的存儲間隔
??? d_A, // GPU 端起始地址
??? 1 // 連續元素之間的存儲間隔
??? );
cublasSetVector(
??? N*M,
??? sizeof(float),
??? h_B,
??? 1,
??? d_B,
??? 1
??? );
// 同步函數
cudaThreadSynchronize();
// 傳遞進矩陣相乘函數中的參數,具體含義請參考函數手冊。
float a = 1; float b =0;
// 矩陣相乘。該函數必然將數組解析成列優先數組
cublasSgemm(
??? handle, // blas 庫對象
??? CUBLAS_OP_T, // 矩陣 A 屬性參數
??? CUBLAS_OP_T, // 矩陣 B 屬性參數
??? M, // A, C 的行數
??? M, // B, C 的列數
??? N, // A 的列數和 B 的行數
??? &a, // 運算式的 α 值
??? d_A, // A 在顯存中的地址
??? N, // lda
??? d_B, // B 在顯存中的地址
??? M, // ldb
??? &b, // 運算式的 β 值
??? d_C, // C 在顯存中的地址(結果矩陣)
??? M //
??? );
// 同步函數
cudaThreadSynchronize();
// 從 顯存 中取出運算結果至 內存中去
cublasGetVector(M*M, //要取出元素的個數
??? sizeof(float), // 每個元素大小
??? d_C, // GPU 端起始地址
??? 1, // 連續元素之間的存儲間隔
??? h_C, // 主機端起始地址
??? 1 // 連續元素之間的存儲間隔
??? );
// 打印運算結果
cout << "計算結果的轉置 ( (A*B)的轉置 ):" << endl;
for (int i = 0;i<M*M; i++){
??? cout << h_C[i] << "";
??? if ((i + 1) % M == 0) cout << endl;
}
// 清理掉使用過的內存
free(h_A);
free(h_B);
free(h_C);
cudaFree(d_A);
cudaFree(d_B);
cudaFree(d_C);
// 釋放 CUBLAS 庫對象
cublasDestroy(handle);
getchar();
return 0;
}
運行結果如下圖所示:
?
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的cuda安装配置VS2013的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pro文件
- 下一篇: 以OpenCV为例配置VS第三方库