zl程序教程

您现在的位置是:首页 >  后端

当前栏目

CUDA编程之 02 数组加法

编程数组 02 CUDA 加法
2023-09-11 14:18:29 时间

在此博客中,我将指导您完成如何编写用于数组添加的 cuda 内核代码。

需要的库:

#include <stdio.h>
#include <cuda_runtime.h>

Kernel:

__global__ void add(int *a, int *b, int *c, int n)
{
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    if (i < n) 
        c[i] = a[i] + b[i];
}

在这个程序中,我们有一个名为“add”的内核函数,它有四个参数:两个整数数组“a”和“b”、一个整数数组“c”和一个整数“n”。内核函数将数组“a”和“b”的相应元素相加,并将结果存储在数组“c”中。if 语句确保仅访问数组“a”、“b”和“c”的有效元素。

运行内核:

int main() {
    int n = 10;
    int *a, *b, *c;
    int *d_a, *d_b, *d_c;
    int size = n * sizeof(int);

    a = (int *)malloc(size);
    b = (int *)malloc(size);
    c = (int *)malloc(size);

    for (int i = 0; i < n; i++) {
        a[i] = i;
        b[i] = i * 2;
    }

    cudaMalloc((void **)&d_a, size);
    cudaMalloc((v