无法解析TILE_DIM和BLOCK_ROWS

时间:2013-04-14 16:31:51

标签: cuda

我尝试实现这个

__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];
}

为什么我会收到此错误?这里出了什么问题?为什么我会收到此错误?

1 个答案:

答案 0 :(得分:1)

你的问题与C和C ++有关,而不是CUDA。

在C或C ++中,如果我有这样的陈述:

int x = 5 * TESTVAL;

然后在我的代码之前的其他地方,我需要这样的东西:

#define TESTVAL 7

int TESTVAL = 7;

如果我的代码中没有任何定义TESTVAL的内容,编译器会给出错误。您不需要定义blockIdx.xthreadIdx.x之类的语句,因为它们是CUDA设备代码编译器知道如何处理的内置函数。

您的代码中需要一些内容来定义TILE_DIMBLOCK_ROWS