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小时内删除。
发表评论