使用流实现的并发执行实例
本文将介绍如何使用CUDA中的流(stream)实现GPU上的并发执行,为了更好地理解,我们会提供相应的源代码。
首先,我们需要了解CUDA的流和并发执行的概念。CUDA的流类似于CPU中的线程,一个GPU可以有多个流同时执行不同的任务,从而达到并发执行的效果。而并发执行可以提高GPU的利用率,加速程序运行。
下面是一个简单的示例代码,通过使用CUDA的流并发执行两个向量相加的任务:
#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h>
#define N 1024
__global__ void add(int *a, int *b, int *c)
{
int tid = blockIdx.x * blockDim.x + threadIdx.x;
if (tid < N) {
c[tid] = a[tid] + b[tid];
}
}
int main()
{
int *a, *b, *c;
int *dev_a, *dev_b, *dev_c;
// 分配内存
a = (int*)malloc(N*sizeof(int));
b = (int*)malloc(N*sizeof(int));
c = (int*)malloc(N*sizeof(int))