2013-04-14 19 views
-2

我嘗試實現這個TILE_DIM和BLOCK_ROWS無法解析

__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

這個問題就像「用適當的詞填補空白!」你從哪裏取回這個內核? – ahmad

回答

1

您的問題與C和C++,而不是CUDA有關。

在C或C++,如果我有這樣的說法:在此聲明之前我的代碼

int x = 5 * TESTVAL; 

然後在其他地方我需要的東西,如:

#define TESTVAL 7 

int TESTVAL = 7; 

如果我的代碼中沒有任何內容定義TESTVAL是什麼,編譯器會將gi有錯誤。您不需要定義blockIdx.xthreadIdx.x之類的語句,因爲這些是CUDA設備代碼編譯器知道如何處理的內置函數。

您需要在代碼中某處定義什麼TILE_DIMBLOCK_ROWS