2016-08-16 3 views
3

いくつかのデータをデバイスにコピーし、それぞれのストリーム上で複数のカーネルを呼び出し、異なるストリームに対してcudaMemcpyAsyncを呼び出してそれぞれのカーネルの後で実行する方法があります。CUDA:カーネル/ memcpyが終了する前にカーネル/ cudaMemcpyを呼び出すホストメソッドがありますか?

カーネルとcudaMemcpyAsyncの両方が起動され、ホストコードと並行して実行されていることを読んだので、これらの呼び出しが終了する前にそれらを呼び出すか、同じ機能のホストコードと並行して実行するか?

答えて

4

カーネル/ memcpyの終了前にカーネル/ cudaMemcpyを呼び出すホストメソッドがありますか?

はいです。あなたが行うすべてのコールカーネルとcudaMemcpyAsync操作である場合は、操作の前にこれらが終了してもよい/リターン呼び出して、CPUの機能は、(それはあなたのmainルーチンの場合でも!)完全である

これらの操作はすべて意味非同期、ありますそれらを呼び出すCPUスレッドをブロックしません。

カーネルコールとcudaMemcpyAsyncコールの後に実行されるCPUコードが大量であっても、デバイスとホストスレッドを同期させる機能を使用しない限り、GPUアクティビティが終了する通常のcudaMemcpyコールまたはcudaDeviceSynchronize()コールまたはcudaStreamSynchronize()コールまたは他の同様のコールなどのアクティビティが含まれます。

これは、CPU /ホストコードの機能構造の影響を受けません。

関連する問題