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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2017 CUDA编程学习1:CUDA编程两变量加法运算

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2017 CUDA编程学习1:CUDA编程两变量加法运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 1. CUDA編程基礎
  • 2. CUDA編程實現兩變量加法運算
  • 總結
  • 參考


前言

今天開始學習CUDA編程,在這里當成筆記,分享給大家


1. CUDA編程基礎

(1)CUDA編程需要將CPU上數據拷貝到GPU顯存上,然后在GPU上進行高效計算并得到計算結果,最終將結果拷貝到CPU上打印;
(2)CUDA編程區分GPU函數(設備代碼)和CPU上函數(主機代碼)是通過關鍵字 “_global_”;
(3)使用cuda API cudaMalloc(), cudaFree()在GPU顯存上分配釋放內存空間,類似CPU上Malloc()和Free();cudaMemcpy()將數據在CPU(host)和GPU(device)間拷貝,類似于CPU上的Memcpy();
(4)調用GPU上函數時需要指定模塊(block)和每個模塊上線程數(thread), 被稱為配置內核參數, 比如 gpuAdd<<<1,1>>>(…),這里表示1個模塊,每個模塊執行1個線程。
(5)內核調用:主機代碼(host, CPU)調用設備代碼(device, GPU)

2. CUDA編程實現兩變量加法運算

#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; }

總結

今天開始進入cuda編程的世界,感覺還不錯,繼續努力!

參考

《基于GPU加速的計算機視覺編程》

總結

以上是生活随笔為你收集整理的VS2017 CUDA编程学习1:CUDA编程两变量加法运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。