Showing posts with label stream. Show all posts
Showing posts with label stream. Show all posts

2015-02-28

CUDA の Stream を使って多重データ転送

下記のページに Stream を使って多重データ転送する方法と
ベンチマークが載っている。

How to Overlap Data Transfers in CUDA C/C++ | Parallel Forall:
http://devblogs.nvidia.com/parallelforall/how-overlap-data-transfers-cuda-cc/

最初に全てのストリームでデータを転送してカーネルを実行する方法と
データを転送してカーネルを実行するのをストリーム数繰り返す方法とでは
デバイスによってパフォーマンスが違うようだ。

CUDA の Stream 間の同期方法

CUDA の Stream 間の同期方法が API を見ても分からなかったが、下記サイトを読むと、cudaEventRecord と cudaStreamWaitEvent を使えばいいようだ。

Declaring dependencies with cudaStreamWaitEvent - Cedric Augonnet:
http://cedric-augonnet.com/declaring-dependencies-with-cudastreamwaitevent/

Java で例えるなら、cudaEventRecord が Object#notifyAll で、cudaStreamWaitEvent が Object#wait になるだろうか。

私の個人的な感覚では、cudaEventRecord はイベント API に属さずにストリームの API に属した方が直感的ではないかと思う。