C++类和 CUDA 错误

C++ class and CUDA error

本文关键字:错误 CUDA 类和 C++      更新时间:2023-10-16

我正在尝试编写一个具有一些 CUDA 功能的简单C++类。我收到此错误,无法弄清楚出了什么问题:

main.cu:错误:指向绑定函数的指针只能用于调用函数

这是代码:

//add_values.cu
#include "add.h"
__global__ void add::add_values(int *a, int *b, int *c){
  int tid  = threadIdx.x + blockIdx.x * blockDim.x;
  while (tid < N){
  {
    c[tid] = a[tid] + b[tid];
    cout << c[i] << endl;
    tid += blockDim.x * gridDim.x;
  }
}
//main.cu
#include "add.h"
#define N (33*1024)
int main(void){
  add add_test;
  int a[N], b[N], c[N];
  int *dev_a, *dev_b, *dev_c;
  cudaMalloc((void**)&dev_a, N*sizeof(int));
  cudaMalloc((void**)&dev_b, N*sizeof(int));
  cudaMalloc((void**)&dev_c, N*sizeof(int));
  for (int i = 0; i < N; i++){
    a[i] = i;
    b[i] = i*i;
    c[i] = 0;
  }
  cudaMemcpy (dev_a, a, N*sizeof(int), cudaMemcpyHostToDevice);
  cudaMemcpy (dev_b, b, N*sizeof(int), cudaMemcpyHostToDevice);

  add_test.add_values<<<128, 128>>>(dev_a, dev_b, dev_c); //Error?
  cudaMemcpy (dev_c, c, N*sizeof(int), cudaMemcpyDeviceToHost);
  cudaFree(dev_a);
  cudaFree(dev_b);
  cudaFree(dev_c);
  return 0;
}

当我尝试在main中调用add_values函数时出错。谢谢!!

__global__ void add::add_values(int *a, int *b, int *c){ // level1
 ...
  while (tid < N){ // level2
  { // level3
    c[tid] = a[tid] + b[tid];
    cout << c[i] << endl;
    tid += blockDim.x * gridDim.x;
  } // end of level3
} // end of level2

您没有关闭级别 1