cuda代码示例
CUDA是一种并行计算框架,可以在NVIDIA GPU上进行高效的并行计算。下面是一个简单的CUDA代码示例:
```c
#include <stdio.h>
#include <cuda_runtime.h>
__global__ void add(int *a, int *b, int *c)
{
    int i = threadIdx.x;
    c[i] = a[i] + b[i];
}
int main()
并行计算框架
{
    int a[3] = {1, 2, 3};
    int b[3] = {4, 5, 6};
    int c[3] = {0, 0, 0};
    int *dev_a, *dev_b, *dev_c;
    cudaMalloc((void**)&dev_a, 3 * sizeof(int));
    cudaMalloc((void**)&dev_b, 3 * sizeof(int));
    cudaMalloc((void**)&dev_c, 3 * sizeof(int));
    cudaMemcpy(dev_a, a, 3 * sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, b, 3 * sizeof(int), cudaMemcpyHostToDevice);
    add<<<1, 3>>>(dev_a, dev_b, dev_c);
    cudaMemcpy(c, dev_c, 3 * sizeof(int), cudaMemcpyDeviceToHost);
    printf("%d %d %d\n", c[0], c[1], c[2]);
    cudaFree(dev_a);
    cudaFree(dev_b);
    cudaFree(dev_c);
    return 0;
}
```
这个示例程序实现了向量加法,将两个长度为3的向量相加。在CUDA中,我们需要定义一个kernel函数来执行并行计算。在这个示例中,kernel函数是add,它接受三个指向整数数组的
指针,分别表示两个输入向量和输出向量。在kernel函数中,我们使用threadIdx.x来获取当前线程的索引,然后将对应位置的元素相加并存储到输出向量中。
在主函数中,我们首先定义了三个整数数组a、b和c,并将它们分别初始化为{1, 2, 3}、{4, 5, 6}和{0, 0, 0}。然后,我们使用cudaMalloc函数在GPU上分配内存,并使用cudaMemcpy函数将输入向量复制到GPU上。接着,我们调用add kernel函数,并指定线程块大小为1,线程数为3。最后,我们使用cudaMemcpy函数将输出向量从GPU复制回主机内存,并打印出结果。最后,我们使用cudaFree函数释放GPU上分配的内存。
总的来说,这个示例程序展示了如何使用CUDA进行简单的向量加法计算。CUDA的并行计算能力可以大大提高计算效率,特别是在处理大规模数据时。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。