共計(jì) 1623 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) Ubuntu 9.04 下如何實(shí)現(xiàn) CUDA 編程的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
CUDA SDK 的實(shí)例都在 src 目錄下,每一個(gè)實(shí)例都有一個(gè)自己的目錄, 例如 deviceuery,在它的目錄下還有一個(gè)編譯時(shí)候使用的 Makefile 文件,這是編譯單個(gè)項(xiàng)目的?,F(xiàn)在我們將所有實(shí)例都編譯一遍,在 CUDA_SDK 根目錄下運(yùn)行 sudo make 之后,可以在 /bin/linux/release 下看到編譯之后的可執(zhí)行程序,運(yùn)行即可看到結(jié)果。
這是 deviceQuery 的運(yùn)行結(jié)果:
那么到這里相信讀者應(yīng)該想到了我們完全可以利用這些實(shí)例來(lái)創(chuàng)建我們自己的工程。再實(shí)例中有一個(gè) template,將該目錄下 src 中的.cu、.cpp 文件刪除,將 obj 目錄下的內(nèi)容清空,這就成為一個(gè)空的 CUDA 工程,可以再 src 下編寫(xiě)程序,然后在 Makefie 中將編譯的文件名修改正確,編譯即可。所生成的執(zhí)行文件在 CUDA_SDK_HOME/bin/linux/release 下。這里是一個(gè)測(cè)試代碼,執(zhí)行矩陣加法運(yùn)算的:
1 #include
2 #include
3 #include
4 #include
5 #include
6
7 #define VEC_SIZE 16
8
9 //kernel function
10 __global__ void vecAdd(float* d_A,float* d_B,float* d_C)
11 {
12 int index=threadIdx.x;
13 d_C[index]=d_A[index]+d_B[index];
14 }
15
16 int main()
17 {
18 // 得到分配空間的大小
19 size_t size=VEC_SIZE*sizeof(float);
20
21 // 為本地分配內(nèi)存
22 float* h_A=(float*)malloc(size);
23 float* h_B=(float*)malloc(size);
24 float* h_C=(float*)malloc(size);
25
26 // 初始化
27 for (int i=0;i VEC_SIZE;++I) p
28 {
29 h_A[i]=1.0;
30 h_B[i]=2.0;
31 }
32
33 // 將本地內(nèi)存的中的數(shù)據(jù)復(fù)制到設(shè)備中
34 float* d_A;
35 cudaMalloc((void**) d_A,size);
36 cudaMemcpy(d_A,h_A,size,cudaMemcpyHostToDevice);
37
38 float* d_B;
39 cudaMalloc((void**) d_B,size);
40 cudaMemcpy(d_B,h_B,size,cudaMemcpyHostToDevice);
41
42 // 分配存放結(jié)果的空間
43 float* d_C;
44 cudaMalloc((void**) d_C,size);
45
46 // 定義 16 個(gè)線(xiàn)程
47 dim3 dimblock(16);
48 vecAdd 1,dimblock (d_A,d_B,d_C);
49
50 // 講計(jì)算結(jié)果復(fù)制回主存中
51 cudaMemcpy(h_C,d_C,size,cudaMemcpyDeviceToHost);
52
53 // 輸出計(jì)算結(jié)果
54 for (int j=0;j VEC_SIZE;++J) p
55 {
56 printf(%f\t ,h_C[j]);
57 }
58
59 // 釋放主機(jī)和設(shè)備內(nèi)存
60 cudaFree(d_A);
61 cudaFree(d_B);
62 cudaFree(d_C);
63
64 free(h_A);
65 free(h_B);
66 free(h_C);
67
68 return 0;
69 }
感謝各位的閱讀!關(guān)于“Ubuntu 9.04 下如何實(shí)現(xiàn) CUDA 編程”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!