我刚开始使用 CUDA,但遇到了一些问题。我在下面发布的代码基本上是 NVIDIA 网站上最简单的示例,添加了一些内存副本和打印语句以确保它正确运行。
代码编译并运行时没有任何抱怨,但是当我打印向量 c 时,它全为零,就好像根本没有调用 GPU 内核函数一样。
这是几乎完全一样,这个帖子 基本CUDA -让内核使用C ++的设备上运行。
症状是一样的,虽然我似乎没有犯这个错误。有任何想法吗?
#include <stdio.h>
static const unsigned short N = 3;
// Kernel definition
__global__ void VecAdd(float* A, float* B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
float *A, *B, *C;
float a[N] = {1,2,3}, b[N] = {4,5,6}, c[N] = {0,0,0};
cudaMalloc( (void **)&A, sizeof(float)*N );
cudaMalloc( (void **)&B, sizeof(float)*N );
cudaMalloc( (void **)&C, sizeof(float)*N ); …
Run Code Online (Sandbox Code Playgroud)