我与CUDA一个初学者,和我的同事总是设计的内核具有以下包装:我应该检查内核代码中的线程数量吗?
__global__ void myKernel(int nbThreads)
{
int threadId = blockDim.x*blockIdx.y*gridDim.x //rows preceeding current row in grid
+ blockDim.x*blockIdx.x //blocks preceeding current block
+ threadIdx.x;
if (threadId < nbThreads)
{
statement();
statement();
statement();
}
}
他们觉得有一些地方CUDA可能推出比对准/变形的缘故指定的多个线程的情况,所以我们需要每次检查一次。 但是,到目前为止,我没有看到互联网上的示例内核,他们实际上在进行此验证。
CUDA实际上是否可以启动比指定块/网格尺寸更多的线程?