【问题标题】:Expression must have pointer-to-object type表达式必须具有指向对象的类型
【发布时间】:2012-08-29 03:36:38
【问题描述】:

我在 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 行我有一个错误。它说我的表达式必须有一个指向对象的类型。

【问题讨论】:

    标签: c++ cuda


    【解决方案1】:

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

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

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

    【讨论】:

    • 欢迎来到 Stack Overflow!请不要发布其他信息作为答案。相反,单击原始帖子下的“编辑”并将附加信息(代码)放在那里。然后删除您发布的错误答案。
    猜你喜欢
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多