2013-10-28 134 views
0

我想以這樣的方式來啓動一個內核:CUDA:網格中的最大塊數!= CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X?

kernel_code<<<NUMBER_BLOCKS, NUMBER_THREADS_PER_BLOCK>>> (param1, param2, param3, param4); 

因此,僅使用網格的x尺寸。我想用盡可能多的塊來調用內核。我認爲最大。一維網格中的塊數爲65535.

但是,我探索了常數CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X,這聽起來像我想要找出的完全相同的數字。但是,這個常數在我的GeForce 210(CUDA 1.2)上返回1899336。我錯了什麼?

+0

所以你的疑問是什麼CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X?或者是其他東西 ? –

+0

我正在尋找最大。當我以上面所示的方式調用它時,我可以分配給內核的塊的數量(僅使用了一個維度)。 根據API CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X是'塊的最大x維度',這似乎指的是我可以分配給一個塊維度的最大線程數。因此,這可能不是我正在尋找的數字。 –

+0

是的,這是正確的。 –

回答

2

參照爲cuDeviceGetAttribute駕駛員API文檔,這給出了在網格的x方向的塊的最大數目的參數是:

•CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X:網格的最大x維度;

如你推測,則所指示的參數給出了在塊中的線程的最大數目(x方向):

•CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X:一個塊的最大x維度;

在一個GeForce 210MAX_GRID_DIM_X參數應該是65535(True for all cc 1.x devices.

如果你得到了一些其他的號碼,則無論是什麼問題與您的代碼,您正在使用,以檢索此數據(你沒有顯示),或者你的機器設置有問題。

嘗試運行並檢查CUDA驅動程序API deviceQuery sample的代碼。