CUDAGPUコンピューティングSDKとCUDAコンピューティングツールキットを4.1にアップグレードしました。simpleStreamsプログラムをテストしていましたが、一貫して、ストリーミングされていない実行よりも時間がかかります。私のデバイスはコンピューティング機能2.1を備えており、VS2008、WindowsOSを使用しています。
3 に答える
私もこれに気づきました。自分だけだと思っていたのですが、何の改善も見られず、フォーラムを検索してみましたが、他に問題のある人は見つかりませんでした。
また、Cuda By Exampleの本でソースコードを実行しました(これは非常に役立ちます。GPUプログラミングに真剣に取り組んでいる場合は、ソースコードを入手することをお勧めします)。
第10章の例では、ストリームの使用方法を示す例を進めています。 http://developer.nvidia.com/content/cuda-example-introduction-general-purpose-gpu-programming-0
ただし、1。非ストリーミングバージョン(基本的にはシングルストリームバージョン)2。ストリーミング(誤ってキューに入れられたasyncmemcpyとカーネルの起動)3。ストリーミングされた(正しくキューに入れられたasyncmemcpyとカーネルの起動)
cudaストリームを使用してもメリットはありません。ウィンビスタがcudaストリームを正しくサポートしていなかったとオンラインで議論しているいくつかの情報源を見つけたので、それはwin7の問題かもしれません。
私がリンクした例であなたが見つけたものを教えてください。私のセットアップは、Win7 64ビットPro、Cuda 4.1、Dual Geforce GTX460カード、8GBRAMです。
このサンプルには常に問題があります。カーネルとメモリ コピーの期間が同じになるようにサンプルを微調整すると、オーバーラップが改善されます。通常、同時実行には幅優先送信の方が適しています。ただし、WDDM OS では、カーネルの起動直後にメモリ コピーを発行すると、通常、このサンプルのオーバーラップが改善されます。
I'm pretty new to Cuda so may not be able to help but generally its very hard to help without you posting any code. If posting is not possible then I suggest you take a look at Nvidia's visual profiler. Its cross platform and can show you were your bottlenecks are.