-2

私はこれを実装しようとします

__global__ void transposeNaive(float *odata, const float *idata)
{
  int x = blockIdx.x * TILE_DIM + threadIdx.x;
  int y = blockIdx.y * TILE_DIM + threadIdx.y;
  int width = gridDim.x * TILE_DIM;

  for (int j = 0; j < TILE_DIM; j+= BLOCK_ROWS)
    odata[x*width + (y+j)] = idata[(y+j)*width + x];
}

なぜこのエラーが発生するのですか? ここで何がうまくいかないのですか?なぜこのエラーが発生するのですか?

4

1 に答える 1

1

あなたの質問は、CUDA ではなく、C と C++ に関するものです。

C または C++ で、次のようなステートメントがあるとします。

int x = 5 * TESTVAL;

次に、このステートメントの前のコードのどこかで、次のようなものが必要です。

#define TESTVAL 7

また

int TESTVAL = 7;

コード内に何が定義されているかを定義していない場合TESTVAL、コンパイラはエラーを出します。CUDA デバイス コード コンパイラが処理方法を認識しているビルトインであるため、blockIdx.x何が好きかを定義するステートメントは必要ありません。threadIdx.x

TILE_DIMコードのどこかに、何が何であるかを定義する何かが必要ですBLOCK_ROWS

于 2013-04-14T20:00:11.080 に答える