我在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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在第6行我有一个错误.它说我的表达式必须有一个指向对象的类型.
出错的原因是您将指针视为2D数组.您定义MAT
为int *MAT
,但您可以将其作为MAT[i][j]
.
假设您已正确分配MAT
,我会将其更改为MAT[i*X + j]
.或者,再次定义MAT
为int **MAT
假设您已正确分配它.
(顺便说一句,这不是CUDA问题,它是一个简单的C语法错误.)
归档时间: |
|
查看次数: |
7327 次 |
最近记录: |