CUDA:网格中的最大块数!= CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X?

时间:2013-10-28 12:40:29

标签: cuda

我想以这种方式启动内核:

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。我错了什么?

1 个答案:

答案 0 :(得分:2)

参考cuDeviceGetAttribute的驱动程序API文档,给出网格x方向上最大块数的参数是:

  

•CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X:网格的最大x维;

正如您所推测的,您指定的参数给出了块中的最大线程数(x维):

  

•CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X:块的最大x维度;

GeForce 210上,MAX_GRID_DIM_X参数应为65535.(True for all cc 1.x devices.

如果您获得了其他一些号码,您使用的代码可能会出现问题(您尚未显示),或者您的机器设置有问题。

尝试运行并检查CUDA驱动程序API deviceQuery sample的代码。