1

これは私の最初の投稿です。不明な点や投稿ルールを完全に順守できていない場合は、お詫び申し上げます。いずれにせよ、私は自分自身の質問の準備として、広範囲に調査しました。

一緒に働く:

  • Windows 7 エンタープライズ バージョン 6.1.7600
  • Intel Xeon CPU クアッドコア 3.07GHz
  • NVidia Quadro 4000 GPU
  • Windows x64 ビルド用の CUDA v5.0 ツールキット
  • OpenCV v2.4.4
  • opencv v2.4.4 に属する OpenCV Cuda パッケージ
  • Microsoft Visual Studio C++ 2010 Express ('vc10')
  • (!) CMake なし (!)

私が行った手順、チュートリアル、チェック:

  • opencv.org チュートリアルに従って、opencv 2.4.4 に必要なソフトウェアをインストールして構成しました。
  • vc10 では、vc10 での opencv のビルドに関する opencv.org のチュートリアルに従います (そこに記載されているグローバルメソッドを適用し、gpu 関連の dll を一番上に配置します)。
  • 計算を GPU に移動しようとするまで、CMake ソフトウェアをインストールしたことがなく、その必要もありませんでした。
  • さらに、この vc10 ソリューションで適用しているすべての .dll ファイルを「デバッグ」フォルダー (このソリューションの .sln ファイルと同じフォルダーに配置) にコピーして貼り付けました。
  • 最後に、NVidia 開発者ゾーン CUDA 5.0 入門ガイドに従って、「インストールの確認」の段落まで成功し、「既存のプロジェクトのビルドのカスタマイズ」の指示に従って、CUDA コンパイルを含むようにビルド構成を構成しました。

この質問は、私がデバッグ モードで作成した win32 コンソール .cpp を高速化しようとすることに関するものです (つまり、win32 OpenCV ライブラリを使用したビジュアル スタジオ ソリューションはかなり単純な画像処理プロジェクトですが、大規模なカーネルを使用したぼかしがあります。多くの時間) gpu 上で実行することによって。ただし、cuda 5.0 で opencv を実行すると問題が発生します (OpenCV Cuda Package の readme.txt で Cuda 5.0をダウンロードしてインストールするように指示されていても)

vc10 でコンパイルして実行すると (=Win32 プラットフォームで F5 キーを押す)、または同様に対応する .exe 実行可能ファイルを実行すると、「コンピューターに cudart32_42_9.dll が見つからないため、プログラムを開始できませんでした」というシステム エラーが発生します。 "。

どうやら、 opencvの readme で cuda5.0 を使用するように指示されていても、 32 ビットの cuda 4.2 ツールキット (cudart 32 _ 42 _9.dll)に属する cuda-libraries をまだ探していますが、インストールされていないため明らかに見つかりません。

この 質問では、OpenCV v2.4.4 は単に cuda 5.0 でコンパイルされておらず、これを実行する唯一の方法は CMake を使用して独自のライブラリをコンパイルすることであると述べられています。

私の質問:

とりあえず、x64 cuda 5.0 を使用して OpenCV v2.4.4 を実行できるようにすることが可能になったかどうか疑問に思っていますが、CMake を使用して独自のライブラリをコンパイルする必要はありません。

どのような手順を踏むべきかを正確に教えてください。C++ 言語、コンパイラ ライブラリ dll などを使用するのは 3 週間目なので、ソリューションに詳しく書いてください。

よろしくお願いします!

編集

この質問は、実際には(@talonmies のコメントにより)、

  • 「OpenCV with cuda MS Visual Studio 2008」というタイトルのユーザー「duttasankha」、および
  • ユーザー「zebullon」は、「64 ビット マシンで 64 ビット SDK が必要ですか」というタイトルです。
4

1 に答える 1

1

私自身の質問に完全に答えるには:

自分で何もコンパイルしなくても (たとえば、CMake を使用しなくても)、または GPU ドライバー ソフトウェアを再インストールしなくても、CUDA 5.0 を実行できました

私は - とりわけ - duttasankha と zebullon の投稿 (質問の EDIT でこれらの名前を付けました) をたどり、さらに小さな信仰の飛躍を遂げました。

  1. 32 ビットの CUDA 4.2 SDK (ソフトウェア開発キット、他の CUDA ダウンロードと同じサイトで入手可能) をダウンロードし、インストール/解凍しました。64 ビットの新しい CUDA ツールキットとドライバー バージョン (5.0) をインストールしていたため、これは注目に値します。

  2. SDK ファイルが抽出された場所を探して (Windows 検索機能)、C:...\My Documents\NVIDIA GPU Computing SDK 4.2\C\common\bin フォルダーに cudart32_42_9.dll を見つけました。

  3. このフォルダー内のすべての 32 ビット dll (名前が「32_42_9.dll」で終わるすべての dll) をコピーし、それらを (上記の質問の要約で言及した opencv-dll と一緒に) 「Debug」という名前のフォルダーに配置しまし。' このプロジェクトの .sln ソリューション ファイルと同じフォルダーに配置されます (これは、Visual Studios がプロジェクトに属する .exe 実行可能ファイルを常に配置するフォルダーです)。この1つのcudart-dllが欠落しているというメッセージしか表示されなかったにもかかわらず、opencvのgpu関数にはコピーされたすべてのdllが必要なので、それらをすべてコピーしました。
  4. 必要な Visual Studio の設定に関する指示は既に完了しています。(Visual Studio 2010 の有効化に関する opencv.org のチュートリアルを参照してください。グローバル(ローカルではない) の方法で行います。このガイドも参照してください。しかし、今では、リンカー; 入力; 追加の依存関係フィールドで、cuda 関連のライブラリを使用して依存関係リストを完成させました。 . 次のようになりました: C:\opencv\build\x86\vc10\lib\opencv_gpu244d.lib C:\opencv\build\x86\vc10\lib\opencv_core244d.lib C:\opencv\build\x86\vc10\lib \opencv_highgui244d.lib C:\opencv\build\x86\vc10\lib\opencv_video244d.lib C:\opencv\build\x86\vc10\lib\opencv_ml244d.lib C:\opencv\build\x86\vc10\lib\opencv_legacy244d .lib C:\opencv\build\x86\vc10\lib\opencv_imgproc244d.libcuda 関連の lib の「opencv_gpu244d.lib」と「opencv_core244d.lib」がこのリストの一番上にあることに注意してください。(ちなみに、この core244d.lib は cuda 関連です。これは、Sourceforge.com からダウンロードした OpenCV-2.4.4-CUDA-vc10.7z パッケージに由来する opencv コア ライブラリであるためです。解凍/正しい配置の手順が利用可能です。 Sourceforge のこの 7z パッケージの付属の .text-file に含まれています)。
  5. Visual Studio の Project-Folder Explorer で、自分のプロジェクト (=vc10 ソリューション) の名前を右クリックし、Build-configuration を選択しました。ここで、対応するパス「 $(VCTargetsPath)\BuildCustomizations\CUDA 5.0.targets 」を示す CUDA 5.0(.targets, .props) にチェックを入れました。

現在、コードを実行しても、不足している DLL に関するシステム エラーは表示されず、opencv.org ドキュメントの CUDA 'Initialization and Information' 関数も、CUDA セットのグローバルな機能を確認するために作成した新しいテスト プロジェクトで機能しています。 -上。

どうやら、新しいバージョンのドライバーと CUDA Toolkit は、古いバージョンの CUDA SDK の DLL と連携する方法を知っています。

他の誰かがこれを読むときに時間を節約できることを願っています. 回答の説明で詳細を見逃した場合は、お知らせください。

于 2013-04-16T13:00:19.780 に答える