アルゴリズムの1つに動的並列処理を使用したいのですが、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)
}