CUDA程式設計實戰 並行向量求和

2021-08-21 03:03:23 字數 883 閱讀 6108

多個並行執行緒塊完成兩個向量的求和:

**如下(使用了10個並行執行緒塊):

#include #include "book.h"

using namespace std;

#define n 10

__global__ void add(int *a, int *b, int *c)

int main(void) {

int a[n], b[n], c[n];

int *dev_a, *dev_b, *dev_c;

//在gpu上分配記憶體

handle_error(cudamalloc((void**)&dev_a, n * sizeof(int)));

handle_error(cudamalloc((void**)&dev_b, n * sizeof(int)));

handle_error(cudamalloc((void**)&dev_c, n * sizeof(int)));

//在cpu上為a和b賦值

for (int i = 0; i> >(dev_a, dev_b, dev_c);

//將陣列c從gpu複製到cpu

handle_error(cudamemcpy(c, dev_c, n * sizeof(int),

cudamemcpydevicetohost));

for (int i = 0; i執行結果:

CUDA( ) 向量求和運算

問題描述 將兩組資料對應的元素兩兩相加,並將結果儲存在第三個陣列中。即向量求和運算 目錄 1.基於cpu的向量求和 分析 問題 索引取值範為0 到 n 1 下面兩種函式add 有什麼區別嗎?完整的 實現及執行結果 2.基於gpu的向量求和 分析 問題 裡面引數式什麼含義?問題 既然gpu將執行ker...

cuda並行程式設計基礎(二)

二 一些基礎 上接 cuda並行程式設計基礎 一 二 cuda基礎 gridblock.cu 4.總計算量與block grid的關係 假設一維陣列總計算量為total c,怎麼確定block與grid呢?一維陣列 int cal array xx int thd num 16 dim3 block...

cuda程式設計 CUDA程式設計入門(四)並行歸約演算法

這一篇我們一起學習一下如何使用cuda實現並行歸約演算法。首先我們要知道什麼是並行歸約。並行歸約 reduction 是一種很基礎的並行演算法,簡單來說,我們有n個輸入資料,使用乙個符合結合律的二元操作符作用其上,最終生成1個結果。這個二元操作符可以是求和 取最大 取最小 平方 邏輯與或等等。我們以...