CUDA 6.5 && VS2013 && Win7:建立CUDA項目

運行環境:工具

Win7+VS2013+CUDA6.5spa

1.建立win32空項目.net

 2.右鍵項目解決方案-->生成項目依賴項-->生成自定義調試

3.右鍵項目解決方案-->屬性-->配置屬性-->常規-->平臺工具集code

配置屬性-->VC++目錄-->包含目錄,添加orm

 

$(CUDA_INC_PATH)

 

鏈接器-->常規-->附加庫目錄,添加blog

 

$(CUDA_PATH)/lib/$(PlatformName)

 

 

連接器-->輸入-->附加依賴項,添加get

 

cudart.lib

 

肯定!io

如今就能夠建立/使用/編譯*.cu文件了。編譯

4.右鍵項目名稱,添加-->新建項-->C++文件-->修更名稱及後綴=>*.cu

5.在新文件中添加如下頭文件

1 #include "cuda.h"
2 #include "cuda_runtime.h"
3 #include "device_launch_parameters.h"

 6.建立kernel內核文件,一個能夠在GPU上執行的文件

 1 #include "cuda.h" 
 2 #include "cuda_runtime.h"
 3 #include "device_launch_parameters.h"
 4 #include <stdio.h>
 5 
 6 __global__ void SaXPY(float a, float* X_d, float* Y_d, int n)
 7 {
 8     if (threadIdx.x < n)
 9         Y_d[threadIdx.x] = a * X_d[threadIdx.x] + Y_d[threadIdx.x];
10 }
11 
12 int main()
13 {
14     int n = 64;
15     float a = 2;
16     float *X_h, *X_d, *Y_h, *Y_d;
17     X_h = (float*)malloc(n * sizeof(float));
18     Y_h = (float*)malloc(n * sizeof(float));
19     for (int i = 0; i < n; i++)
20     {
21         X_h[i] = (float)i;
22         Y_h[i] = 1.0;
23     }
24     cudaMalloc(&X_d, n * sizeof(float));
25     cudaMalloc(&Y_d, n * sizeof(float));
26     cudaMemcpy(X_d, X_h, n * sizeof(float), cudaMemcpyHostToDevice);
27     cudaMemcpy(Y_d, Y_h, n * sizeof(float), cudaMemcpyHostToDevice);
28     SaXPY <<<1, 64 >>>(a, X_d, Y_d, n);
29     cudaMemcpy(Y_h, Y_d, n * sizeof(float), cudaMemcpyDeviceToHost);
30     for (int i = 0; i < n; i++)
31         printf("%2.1f X[%d] + Y[%d] = %f\n", a, i, i, Y_h[i]);
32     cudaFree(X_d);
33     cudaFree(Y_d);
34     free(X_h);
35     free(Y_h);
36     system("Pause");
37     return 0;
38 }

7.在調試模式下啓動,觀察結果。到此結束。

本身跑的文件下載連接

相關文章
相關標籤/搜索