2017-01-22 17 views
0

CUDAでは、cuMemcpy非同期関数とストリームを使用して計算とデータ転送をオーバーラップさせることができます。しかし、それはNPP(パフォーマンスプリミティブ)で可能ですか?NPP:重複計算とデータ転送

少し背景。私は、NPPイメージリサイズ関数(この場合はnppiResize_8u_C3R)を使用してGPUを利用しようとしています。私は固定メモリを使用して、cuMemcpy2DAsync_v2スレッドストリームを使用してGPUにデータを正常に転送しています。問題はnppiResize_8u_C3Rであり、他のすべての計算関数はストリームを受け入れないということです。

私はNvidiaのビジュアルプロファイラを実行すると、私は、次を参照してください。 - 〜6.524ギガバイト/秒

  1. 固定されたメモリーは、私はより速くデータを転送することができます。
  2. memcpyがcomputeと並行して実行されている時間のパーセンテージは0%です。

答えて

2

問題の[sic]はnppiResize_8u_C3Rおよび他のすべての計算機能がストリームを受け入れないことです。

NPPは基本的にステートレスAPIです。ただし、NPPでストリームを使用するには、nppSetStreamを使用して、後続操作のデフォルトストリームを設定します。ストリームを使用してNPPを使用し、ストリームを切り替える際に推奨される同期の方法については、2ページに記載されている注意点がいくつかあります。

+0

* nppSetStream *を使用してパフォーマンスを向上させることは可能ですか?私はそれを試みたが、成功しなかった。私は、NPPが同時または重複シナリオ用に設計されておらず、GPUを利用するためにCUDAドライバAPIを直接使用する必要があると感じています。 –