運行環境:工具
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.在調試模式下啓動,觀察結果。到此結束。
本身跑的文件下載連接