CMAKEを使用して、OpenCV 3.0.0をWindowsでCUDAサポート付きでコンパイルしています。 「構成」をクリックすると、次のようなエラーが発生します。
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_cufft_LIBRARY (ADVANCED)
linked by target "opencv_hal" in directory E:/dev-lib/opencv3/sources/modules/hal
...
CUDA_nppc_LIBRARY (ADVANCED)
...
CUDA_nppi_LIBRARY (ADVANCED)
...
CUDA_npps_LIBRARY (ADVANCED)
エントリの「WITH_CUDA」と「WITH_CUFFT」を確認しました。 「WITH_CUBLAS」もチェックすると、上記の出力にCUDA_cublas_LIBRARY
エラーがさらに1つ追加されます。
しかし、これらすべてのエラーメッセージの前に、
CUDA detected: 7.5
CUDA NVCC target flags: -gencode;Arch=compute_20,code=sm_20;-gencode;Arch=compute_20,code=sm_21;-gencode;Arch=compute_30,code=sm_30;-gencode;Arch=compute_35,code=sm_35;-gencode;Arch=compute_30,code=compute_30
これは、CUDAがCMAKEによって検出できることを示しています。ただし、必要な4つのライブラリが見つかりません。
以前にCUDA 7.5をインストールしてVisual Studio 2012でコンパイルしました。 CUDAサンプルは完全に実行されます。したがって、私のCUDAライブラリは正しくインストールされているはずです。
これらの値を手動で設定する必要がある場合でも、どうすればよいですか?
私の仕様:Windows 7 x64、Visual Studio 2012、CMAKE 3.4.0、CUDA Toolkit 7.5
コメントのドロップからのヒントのおかげで、私はこの問題を解決しました。この質問を締めくくるために、私は自分の質問に答えています。
「Win32またはx64」アーキテクチャの問題です。 NVIDIAはx_64用にcufft
、nvblas
、nppc
、nppi
、npps
libsのみを提供するため、CMAKEがこれらを見つけることは当然不可能です。 Win32 OpenCVライブラリを構成するためのライブラリ。
私の解決策は、CMAKEのジェネレーターとしてVisual Studio 11ではなくVisual Studio 11 Win64を選択することでした。そのため、CMAKEは<CUDA_DIR>\lib\x64
ではなく<CUDA_DIR>\lib\Win32
からlibsを自動的にロードします。さらに、OpenGLなど、64ビットバージョンのOpenCVに必要な他のすべてのライブラリもロードする必要があります。また、x64アーキテクチャーでOpenCVをコンパイルする必要があります。今後作成するコードはすべて、x64でのみビルドおよびデバッグする必要があります。
中国語の資料を読むのに問題がない場合、私は上の完全なガイドに関する投稿に向けて link を提供させていただきますCUDAをサポートするVS2012でOpenCV 3.0を構築します。
Linuxの場合、私は次の手順で解決しました:
(1)libフォルダーの.so
ファイルを確認します(例:cuda7-cudnn3/lib64)。
(2)Sudo ln -s libcublas.so.7.5.18 libcublas.so
のようにシンボリックリンクを作成します
私の場合、CMakeLists.txtとMakefile.configに正しくリンクを設定しましたが、.so
ファイルがありませんでした。
それは本当にバージョンに関連しています!!! Cudaでコンパイルしたい場合、opencv2413をcmakeすると、makefileがより多くの機能をサポートするサードパーティのライブラリを見つけようとすることに気づくでしょう:
CUDA_TOOLKIT_ROOT_DIR C:/ Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0
そのことから、CUDA v9.0をインストールしたことがわかっていますが、opencv_dep_CUDA_nppi_LIBRARYが見つからないというエラーが表示されるため、C:\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64で探します。 nppi.libという名前のファイルを取得できなかったため、テストのために、空のファイルを作成してnppi.lib、私が推測したように、私は働いたが、実際には十分ではなかった。テストはopencvのコンパイルに役立ちません。さらに、CUDA v8があったことがわかりました。そして驚いたことに、私はC:\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64にlibnppi.libを取得しました。環境パスを変更します
CUDA_TOOLKIT_ROOT_DIR C:/ Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0その後、再構成しました。出来た!!