VS2017 CUDA编程学习1:CUDA编程两变量加法运算
文章目錄
- 前言
- 1. CUDA編程基礎(chǔ)
- 2. CUDA編程實現(xiàn)兩變量加法運算
- 總結(jié)
- 參考
前言
今天開始學習CUDA編程,在這里當成筆記,分享給大家
1. CUDA編程基礎(chǔ)
(1)CUDA編程需要將CPU上數(shù)據(jù)拷貝到GPU顯存上,然后在GPU上進行高效計算并得到計算結(jié)果,最終將結(jié)果拷貝到CPU上打印;
(2)CUDA編程區(qū)分GPU函數(shù)(設(shè)備代碼)和CPU上函數(shù)(主機代碼)是通過關(guān)鍵字 “_global_”;
(3)使用cuda API cudaMalloc(), cudaFree()在GPU顯存上分配釋放內(nèi)存空間,類似CPU上Malloc()和Free();cudaMemcpy()將數(shù)據(jù)在CPU(host)和GPU(device)間拷貝,類似于CPU上的Memcpy();
(4)調(diào)用GPU上函數(shù)時需要指定模塊(block)和每個模塊上線程數(shù)(thread), 被稱為配置內(nèi)核參數(shù), 比如 gpuAdd<<<1,1>>>(…),這里表示1個模塊,每個模塊執(zhí)行1個線程。
(5)內(nèi)核調(diào)用:主機代碼(host, CPU)調(diào)用設(shè)備代碼(device, GPU)
2. CUDA編程實現(xiàn)兩變量加法運算
#include <stdio.h> #include <cuda.h> #include<cuda_runtime.h>// define kernel function to add two variable __global__ void gpuAdd(int d_a, int d_b, int* d_c) {*d_c = d_a + d_b; }int main() {//define host(cpu) variable to store answerint h_c;//define device(gpu) variable pointer to store answerint *d_c;//Allocating memory for device pointercudaMalloc((void**)&d_c, sizeof(int));//kernel call by passing 1 and 4 as inputs and storing answer in d_c//<<<1,1>>> means 1 block is executed with 1 thread per blockgpuAdd << <1, 1 >> > (1, 4, d_c);//copy result from device memory to host memorycudaMemcpy(&h_c, d_c, sizeof(int), cudaMemcpyDeviceToHost);//print resultprintf("1+4=%d\n", h_c);// free device memorycudaFree(d_c);system("pause");return 0; }總結(jié)
今天開始進入cuda編程的世界,感覺還不錯,繼續(xù)努力!
參考
《基于GPU加速的計算機視覺編程》
總結(jié)
以上是生活随笔為你收集整理的VS2017 CUDA编程学习1:CUDA编程两变量加法运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis数据结构
- 下一篇: [hdu5372 Segment Gam