2

私は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行目にエラーがあることです。私の式にはオブジェクトへのポインタ型が必要であると書かれています。

4

1 に答える 1

9

エラーの理由は、ポインターを 2D 配列として扱っているためです。MATとして定義しますint *MATが、 としてアクセスしますMAT[i][j]

を正しく割り当てたと仮定するとMAT、これを に変更しMAT[i*X + j]ます。または、正しく割り当てたと仮定して、再びMATasを定義します。int **MAT

(ところで、これは CUDA の問題ではなく、単純な C 構文エラーです。)

于 2012-08-29T03:50:08.653 に答える