日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cuda安装配置VS2013

發布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cuda安装配置VS2013 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 安裝cuda

首先官網下載安裝包,這個就不細說了 ,我下的是這個版本cuda_8.0.61_win10.exe,,注意win7win10版本要對應,千萬別弄錯了 之后雙擊會出現如下截圖,


解壓完以后一直點下一步如下圖

?

出現這個等半個小時左右就好了

安裝結束后開始配置系統環境變量

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配置(其他版本VSCUDA都類似)

·????????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`

備注: win32x64位的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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。