我的意图就是各个BLOCK做最外层循环, 然后每个BLOCK里的线程做里层循环 不知道这样实现可行否, 因为看到好多例程都是直接用BLOCK数乘上线程数得到总线程大小后做一次循环完成. 现在我按我下面代码的方式实现,结果行不通,计算出的结果不对 我对各个BLOCK以及各线程运行机制还不太明白, 不知道要想实现我的意图该如何去改写代码
#define BLOCK_NUM 16
#define THREAD_NUM 256
…
global void kernel(…){
int tid = threadIdx.x;
int bid = blockIdx.x;
int m, n;
for(int i = bid; i < m; i++)
{
…
for(int j = tid; j < n; j++)//或者还是for(int j = tid; j < n; j += THREAD_NUM)
{
........
}
}
}