0

OS: Windows 7 64 ビット コンパイラ: Visual Studio 2010 Professional ドライバー: 306.23 デバイス: GeForce GTX 680 または GeForce GT 650M非同期で実行された並行カーネルをタイムラインに表示します (これは CUDA Toolkit 4.2 では不可能です)。このため、このツールキット (5.0) を PC にインストールして OpenCV 2.4.2 のソース コードをビルドし (成功)、コンパイルして正しく実行することができました。並行カーネルを使用するアプリケーション: モジュール OpenCV_GPU の関数によって呼び出されるものもあれば、CUDA で直接記述したカーネルもあります。残念ながら、この機能を有効にすると、CUDA 5.0 NVIDIA Visual Profiler はアプリケーションのタイムラインを追跡できません:"

ご清聴ありがとうございました。

4

1 に答える 1

1

さて、私の問題を解決しようとして、それがCUDAコンテキストの問題ではないことを実験しました。CUDAとOpenCVの両方を使用して作成されたアプリケーションは、プロファイラーによって適切にトレースされます。代わりに、それはメモリの問題でした。単純に、アルゴリズムのCUDAバージョンとOpenCVバージョンの両方を含むアプリケーションでは、1つのバージョンしかないアプリケーションで使用するサイズの2倍の数のストリームを使用します。アルゴリズムの、そしてこれはプロファイラーのメモリ容量を超えています。2つの方法でアプリケーションが正しく実行され、タイムラインをトレースするために「同時カーネル実行を有効にする」モダリティでプロファイラーから実行した場合にのみ停止するため、プロファイラーの問題だと思いました。これは、プロファイラーがこのモダリティのタイムラインをトレースするためにはるかに多くのメモリを使用するという事実によって説明する必要があります。したがって、ストリーム数の制限は同期モダリティよりも低くなります。しかし、私は初心者なので、危険を冒して仮説を立てないほうがいいです。私はより少ないストリームを使用してそれを解決しました。誤解を招く質問をお詫び申し上げます。

于 2012-10-06T16:31:35.057 に答える