CUDA返回值错误35的含义是什么

What is the meaning of CUDA return value error 35?

本文关键字:是什么 返回值 错误 CUDA      更新时间:2023-10-16

我的简单C++库代码源代码

#include <iostream>
#include <cuda.h>
using namespace std;
__global__ void AddIntsCUDA(int *a, int *b, int *c)
{
*c = *a + *b;
}
int main()
{
int a, b, c;
int *d_a, *d_b, *d_c;
int size = sizeof(int);
cudaMalloc((void **)&d_a, size);
cudaMalloc((void **)&d_b, size);
cudaMalloc((void **)&d_c, size);

a = 10;
b = 35;
c = 0;
cudaMemcpy(d_a, &a, size, cudaMemcpyHostToDevice);
cudaMemcpy(d_b, &b, size, cudaMemcpyHostToDevice);
AddIntsCUDA<<<1, 1>>>(d_a, d_b, d_c);
cudaMemcpy(&c, d_c, size, cudaMemcpyDeviceToHost);
cout << "The Answer is "<< c << endl;
cudaFree(d_a);
cudaFree(d_b);
cudaFree(d_c);
system("pause");
return 0;
}

控制台输出输出显示c=0,但我期望a和b的输出之和(应该像这样45,因为a=10,b=35(解释一下这个代码到底发生了什么

尝试在内核启动之后和拷贝之前添加cudaError_t err = cudaDeviceSynchronize();。并打印err的值。

使用const char* cudaGetErrorString ( cudaError_t error )在运行时获取错误字符串,或者查看此处:
https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__TYPES.html#group__CUDART__TYPES_1gf599e5b8b829ce7db0f5216928f6ecb6

根据你的评论,这是错误编号35,似乎你需要更新你的驱动程序。