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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CUDA10.1配置VS2017

發(fā)布時(shí)間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CUDA10.1配置VS2017 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一 ?CUDA 安裝

二? CUDA環(huán)境變量配置

三? CUDA配置VS2017


一 ?CUDA 安裝

? ?1.1 CUDA下載

? ? ?網(wǎng)址:https://developer.nvidia.com/cuda-toolkit-archive

?

可以根據(jù)需要下載不同版本的CUDA安裝包。

?

1.2 CUDA安裝

? ?1.2.1?雙擊下載的.exe文件安裝

? 1.2.2 點(diǎn)擊‘OK’

?1.2.3 上一步解壓完成后,會(huì)自動(dòng)跳到下圖,點(diǎn)擊‘同意并繼續(xù)’即可,由于我已經(jīng)安裝過了,下圖是我在網(wǎng)上找的一個(gè)圖,各版? ? ? ? ? ? ?本都一樣

?

二? CUDA環(huán)境變量配置

? ? 2.1 右擊此電腦→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量

?

?

2.2 系統(tǒng)變量里添加:

? ? ? CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1

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

注意:CUDA _PATH與CUDA _PATH_V10_1是CUDA安裝時(shí)自動(dòng)添加的;

? ? ? ? ? CUDA _PATH_V10_1中的10_1是你安裝CUDA的版本號(hào)

?

2.3 添加以下到系統(tǒng)變量path中,添加完點(diǎn)確定

? ? ? %CUDA_LIB_PATH%

? ? ? %CUDA_BIN_PAHT%

? ? ?%CUDA_SDK_BIN_PAHT%

? ? ? %CUDA_SDK_LIB_PATH%

?

?

2.4 重啟電腦,然后打開cmd,輸入: set cuda?? 即可看到下圖

?

2.5 檢查cuda是否安裝好, 打開cmd,

? ? ? 2.5.1? 輸入:cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite

? ? ? ? ? ? ? ? ?輸入之后,注意是否為自己安裝的目錄,然后按‘Enter’鍵

? ? ?2.5.2 找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite目錄下的deviceQuery.exe,在? ? ? ? ? ? ? ? ?cmd里輸入:deviceQuery.exe

上圖中Result=PASS,表示安裝好,否則Result=Fail重裝或更換cuda版本吧。

?

2.5.3 找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite目錄下的bandwidthTest.exe,在? ? ? ? ? ? ? ? cmd里輸入:bandwidthTest.exe

上圖中Result=PASS,表示安裝好,否則Result=Fail重裝或更換cuda版本吧。

?

三? CUDA配置VS2017

3.1? 打開VS2017新建工程

?

3.2 右擊源文件→添加→新建項(xiàng)→CUDA C/C++ File;創(chuàng)建一個(gè).cu文件

?

?

?

3.3 右擊項(xiàng)目名稱test_cuda2→生成依賴項(xiàng)→生成自定義,→選擇CUDA10.1→確定

?

?

3.4 右擊cuda_test.cu文件→屬性→配置屬性→常規(guī)→項(xiàng)類型→CUDA C/C++

?

?

3.5 右擊test_cuda2→屬性

?

3.5.1→VC++目錄。在包含目錄中添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include;在庫(kù)目錄中添加? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64。

注意:要根據(jù)自己的CUDA安裝添加正確的目錄

?

?

3.5.2 →鏈接器→輸入→附加依賴項(xiàng)。再附加依賴項(xiàng)中添加相應(yīng)的.lib文件名稱

?? 我這里加的比較多cublas.lib

cublasLt.lib

cuda.lib

cudadevrt.lib

cudart.lib

cudart_static.lib

cufft.lib

cufftw.lib

curand.lib

cusolver.lib

cusparse.lib

nppc.lib

nppial.lib

nppicc.lib

nppicom.lib

nppidei.lib

nppif.lib

nppig.lib

nppim.lib

nppist.lib

nppisu.lib

nppitc.lib

npps.lib

nvblas.lib

nvgraph.lib

nvml.lib

nvrtc.lib

OpenCL.lib

?

?

3.6? 配置成功后,這里附帶一個(gè)測(cè)試程序:

// CUDA runtime 庫(kù) + CUBLAS 庫(kù) #include "cuda_runtime.h" #include "cublas_v2.h" #include <time.h> #include <iostream> using namespace std;// 定義測(cè)試矩陣的維度 int const M = 5; int const N = 10;int main() {// 定義狀態(tài)變量 cublasStatus_t status;// 在 內(nèi)存 中為將要計(jì)算的矩陣開辟空間 float *h_A = (float*)malloc(N*M * sizeof(float));float *h_B = (float*)malloc(N*M * sizeof(float));// 在 內(nèi)存 中為將要存放運(yùn)算結(jié)果的矩陣開辟空間 float *h_C = (float*)malloc(M*M * sizeof(float));// 為待運(yùn)算矩陣的元素賦予 0-10 范圍內(nèi)的隨機(jī)數(shù) for (int i = 0; i < N*M; i++) {h_A[i] = (float)(rand() % 10 + 1);h_B[i] = (float)(rand() % 10 + 1);}// 打印待測(cè)試的矩陣 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 計(jì)算矩陣相乘*/// 創(chuàng)建并初始化 CUBLAS 庫(kù)對(duì)象 cublasHandle_t handle;status = cublasCreate(&handle);if (status != CUBLAS_STATUS_SUCCESS){if (status == CUBLAS_STATUS_NOT_INITIALIZED) {cout << "CUBLAS 對(duì)象實(shí)例化出錯(cuò)" << endl;}getchar();return EXIT_FAILURE;}float *d_A, *d_B, *d_C;// 在 顯存 中為將要計(jì)算的矩陣開辟空間 cudaMalloc((void**)&d_A, // 指向開辟的空間的指針 N*M * sizeof(float) // 需要開辟空間的字節(jié)數(shù) );cudaMalloc((void**)&d_B,N*M * sizeof(float));// 在 顯存 中為將要存放運(yùn)算結(jié)果的矩陣開辟空間 cudaMalloc((void**)&d_C,M*M * sizeof(float));// 將矩陣數(shù)據(jù)傳遞進(jìn) 顯存 中已經(jīng)開辟好了的空間 cublasSetVector(N*M, // 要存入顯存的元素個(gè)數(shù) sizeof(float), // 每個(gè)元素大小 h_A, // 主機(jī)端起始地址 1, // 連續(xù)元素之間的存儲(chǔ)間隔 d_A, // GPU 端起始地址 1 // 連續(xù)元素之間的存儲(chǔ)間隔 );cublasSetVector(N*M,sizeof(float),h_B,1,d_B,1);// 同步函數(shù) cudaThreadSynchronize();// 傳遞進(jìn)矩陣相乘函數(shù)中的參數(shù),具體含義請(qǐng)參考函數(shù)手冊(cè)。 float a = 1; float b = 0;// 矩陣相乘。該函數(shù)必然將數(shù)組解析成列優(yōu)先數(shù)組 cublasSgemm(handle, // blas 庫(kù)對(duì)象 CUBLAS_OP_T, // 矩陣 A 屬性參數(shù) CUBLAS_OP_T, // 矩陣 B 屬性參數(shù) M, // A, C 的行數(shù) M, // B, C 的列數(shù) N, // A 的列數(shù)和 B 的行數(shù) &a, // 運(yùn)算式的 α 值 d_A, // A 在顯存中的地址 N, // lda d_B, // B 在顯存中的地址 M, // ldb &b, // 運(yùn)算式的 β 值 d_C, // C 在顯存中的地址(結(jié)果矩陣) M // ldc );// 同步函數(shù) cudaThreadSynchronize();// 從 顯存 中取出運(yùn)算結(jié)果至 內(nèi)存中去 cublasGetVector(M*M, // 要取出元素的個(gè)數(shù) sizeof(float), // 每個(gè)元素大小 d_C, // GPU 端起始地址 1, // 連續(xù)元素之間的存儲(chǔ)間隔 h_C, // 主機(jī)端起始地址 1 // 連續(xù)元素之間的存儲(chǔ)間隔 );// 打印運(yùn)算結(jié)果 cout << "計(jì)算結(jié)果的轉(zhuǎn)置 ( (A*B)的轉(zhuǎn)置 ):" << endl;for (int i = 0; i < M*M; i++) {cout << h_C[i] << " ";if ((i + 1) % M == 0) cout << endl;}// 清理掉使用過的內(nèi)存 free(h_A);free(h_B);free(h_C);cudaFree(d_A);cudaFree(d_B);cudaFree(d_C);// 釋放 CUBLAS 庫(kù)對(duì)象 cublasDestroy(handle);getchar();return 0; }

?

程序運(yùn)行結(jié)果:

?

總結(jié)

以上是生活随笔為你收集整理的CUDA10.1配置VS2017的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。