表达式必须具有指向对象类型的指针

Expression must have pointer-to-object type

本文关键字:对象 类型 指针 表达式      更新时间:2023-10-16

我在CUDA中有以下代码

__global__ void matvec(int *MAT, int *VEC, int *SOL)
{
   int bx = blockIdx.x;
   int tx = threadIdx.x;
   int i = 32*bx+tx;
   for (int j = 0; j < X; j++){
    SOL[i] = ((MAT[i][j] * VEC[j]) + SOL[i]) % 2;
   }
}

我的问题是在第6行我有一个错误。它说我的表达式必须有一个指向对象类型的指针

错误的原因是您将指针视为2D数组。将MAT定义为int *MAT,但将其访问为MAT[i][j]

假设您已正确分配了MAT,我会将其更改为MAT[i*X + j]。或者,再次将MAT定义为int **MAT,前提是您已正确分配了它。

(顺便说一句,这不是CUDA问题,这是一个简单的C语法错误。)