我想将动态并行用于我的一种算法,我从 CPU 启动一个具有 12 个块 * 512 个线程的内核,我想知道何时使用动态并行,每个线程都会启动新内核。
void main(){
dynamic<<<12,512,0>>>(x,y,z);
}
__global__ void dynamic(int x,int y, int z){
preprocessing<<<1,100>>>(x,y);
}
__global__ void preprocessing(int x,int y){
//do stuff
}
这是否意味着我的每个 ~6000 个线程都会尝试启动 100 个线程?还是我的第一个动态内核会暂停所有约 6000 个线程,启动 100 个线程并返回要由我之前的 6000 个线程处理的结果?
如果是的话,我可以简单地使用 100 个线程吗?我应该使用类似的条件
if(tid==1){
preprocessing<<<1,100>>>(x,y)
}