私は簡単な質問があります。私は(単純化)のようなユニークなcuda_streamに関連するメモリのn個のブロックを割り当てています、[それは-_-非常に悪い考えかもしれ]:複数のcuda_streamを1つのcudaカーネルにつける
void *ptr = NULL;
cudaStream_t stream;
cudaMallocManaged(&ptr, size);
cudaStreamAttachMemAsync(stream, ptr);
後の私のコードで私はこれを6で私のカーネルを呼び出していますメモリブロック(ランダムプロセスで決定)。 cudaランチャーはストリーム引数を1つだけ取ります。
update_gpu<<<256, 256,0,???>>>(block1,block2,block3,block4,block5,block6);
???ストリームでなければならないが、どちらを通過させるべきか?私は
cudaDeviceSynchronize()
と同期させることができるが、私はブロック
cudaStreamSynchronize(...)
の多くを持っているとして、それは、あまりにも多くて、私は私のストリームの5のためにそれを行う必要があり、解決策のように見えますか?
提案がありますか?
最高、
++トン
「特定のストリーム以外には見えないようにする必要があります」といっても意味があります。ありがとうございます。 –