1. ホーム
  2. c++

[解決済み] 式はポインタからオブジェクトへの型でなければならない

2022-02-24 14:35:26

質問

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行目でエラーになることです。私の式はポインタからオブジェクトへの型を持っていなければならないと書いてあります。

どのように解決するのですか?

エラーの原因は、ポインタを2次元配列として扱っていることです。 以下のように定義します。 MAT として int *MAT としてアクセスしますが MAT[i][j] .

正しく割り当てられたと仮定して MAT に変更します。 MAT[i*X + j] . あるいは MAT として int **MAT この場合も、正しく割り当てられたと仮定しています。

(ちなみに、これはCUDAの問題ではなく、単純なC言語の構文エラーです)。