0

私はカーネルKerAKerB非同期で呼び出します。カーネルは仕上げKerCに依存しますが、独立しています。では、終了するのを待つが終了しないことを意味する方法で呼び出す方法は?KerBKerAcudaDeviceSynchronize()KerCKerBKerA

Time -------------------------->
| KerA ------------------------>
| KerB ------> | KerC --------->
4

1 に答える 1

3

これは、CUDA ストリームを使用して実現できます。

ストリームを使用しない場合、デフォルト ストリーム (別名ストリーム '0') が使用され、同時実行性は得られません (cudaDeviceSynchronize()すべての CUDA 操作の前後に が挿入されているかのように、これらのスライドを参照してください)。

ただし、KerAストリーム 0 でKerB実行KerCし、ストリーム 1 で実行するKerBKerC、目的のものが得られますKerAcudaStreamSynchronize(streamid)特定のストリームと同期するために使用できます。

Time ------------------------------------>
| Stream 0: KerA ------------------------>
| Stream 1: KerB ------> | KerC --------->

例は、私がリンクしたスライドにあります。simpleStreamsまたはconcurrentKernelsSDK のサンプルも確認できます。

于 2013-05-07T13:22:40.363 に答える