LoginSignup
2
1

More than 5 years have passed since last update.

Build OpenCV 2.4.13 with CUDA 7.5/7.0 and VC12 (Visual Studio 2013)

Last updated at Posted at 2016-06-30

試行錯誤でかなり苦労したので、これで動いてますというメモ。

作業環境

ハードウェア

Windows 7 世代のノートPC。

  • Intel i7 3rd-Gen リアル4コア:疑似8コア DRAM 8GB
  • NVIDIA GeForce GT 650M

ソフトウェア

  • MS Windows 10 pro 64 bit (最新)
  • MS Visual Studio 2013 Pro Update 2 (OpenCVとCUDAの対応指定による)
  • NVIDIA CUDA Toolkit 7.5 / 7.0 (安定版の最新/一世代前)
  • CMake 3.5.2 (最新)

ライブラリー

  • OpenCV 2.4.13 (2系の最新、2系指定は本稿作業要件による)
  • Qt 5.7 Open Source (最新)
  • Eigen 3.2.8 (最新)
  • Intel TBB 4.4 Update 5 (最新)

作業手順

CMake-GUI にて、Configure / Generate 。
最終的に下記指定内容となったが、試行錯誤の結果であり、論理的ではないかも。
所要時間が長いので、DOCS と EXAMPLES は除外した。
Qt は出来合いのパッケージをそのまま参照している。

  -- 
  -- General configuration for OpenCV 2.4.13 =====================================
  --   Version control:               unknown
  -- 
  --   Platform:
  --     Host:                        Windows 10.0.10586 AMD64
  --     CMake:                       3.5.2
  --     CMake generator:             Visual Studio 12 2013 Win64
  --     CMake build tool:            C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe
  --     MSVC:                        1800
  -- 
  --   C/C++:
  --     Built as dynamic libs?:      YES
  --     C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/cl.exe  (ver 18.0.40629.0)
  --     C++ flags (Release):         /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /wd4251 /wd4275 /wd4589 /wd4359 /wd4819 /MD /O2 /Ob2 /D NDEBUG  /Zi
  --     C++ flags (Debug):           /DWIN32 /D_WINDOWS /W4 /GR /EHa  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /wd4251 /wd4275 /wd4589 /wd4359 /wd4819 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
  --     C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/x86_amd64/cl.exe
  --     C flags (Release):           /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /MD /O2 /Ob2 /D NDEBUG  /Zi
  --     C flags (Debug):             /DWIN32 /D_WINDOWS /W3  /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS /Gy /bigobj /Oi  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
  --     Linker flags (Release):      /machine:x64  /INCREMENTAL:NO  /debug
  --     Linker flags (Debug):        /machine:x64  /debug /INCREMENTAL 
  --     Precompiled headers:         YES
  -- 
  --   OpenCV modules:
  --     To be built:                 core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib stitching superres ts videostab
  --     Disabled:                    world
  --     Disabled by dependency:      -
  --     Unavailable:                 androidcamera dynamicuda java python viz
  -- 
  --   Windows RT support:            NO
  -- 
  --   GUI: 
  --     QT 5.x:                      YES (ver 5.7.0)
  --     QT OpenGL support:           YES (Qt5::OpenGL 5.7.0)
  --     OpenGL support:              YES (glu32 opengl32)
  --     VTK support:                 NO
  -- 
  --   Media I/O: 
  --     ZLib:                        build (ver 1.2.7)
  --     JPEG:                        libjpeg (ver 62)
  --     PNG:                         build (ver 1.5.12)
  --     TIFF:                        build (ver 42 - 4.0.2)
  --     JPEG 2000:                   build (ver 1.900.1)
  --     OpenEXR:                     build (ver 1.7.1)
  -- 
  --   Video I/O:
  --     Video for Windows:           YES
  --     DC1394 1.x:                  NO
  --     DC1394 2.x:                  NO
  --     FFMPEG:                      YES (prebuilt binaries)
  --       codec:                     YES (ver 55.18.102)
  --       format:                    YES (ver 55.12.100)
  --       util:                      YES (ver 52.38.100)
  --       swscale:                   YES (ver 2.3.100)
  --       resample:                  NO
  --       gentoo-style:              YES
  --     OpenNI:                      NO
  --     OpenNI PrimeSensor Modules:  NO
  --     PvAPI:                       NO
  --     GigEVisionSDK:               NO
  --     DirectShow:                  YES
  --     Media Foundation:            NO
  --     XIMEA:                       NO
  --     Intel PerC:                  NO
  -- 
  --   Other third-party libraries:
  --     Use IPP:                     NO
  --     Use Eigen:                   YES (ver 3.2.8)
  --     Use TBB:                     YES (ver 4.4 interface 9005)
  --     Use OpenMP:                  NO
  --     Use GCD                      NO
  --     Use Concurrency              NO
  --     Use C=:                      NO
  --     Use Cuda:                    YES (ver 7.5)  【7.0】
  --     Use OpenCL:                  YES
  -- 
  --   NVIDIA CUDA
  --     Use CUFFT:                   YES
  --     Use CUBLAS:                  YES
  --     USE NVCUVID:                 NO
  --     NVIDIA GPU arch:             20 21 30 35   【30 35】
  --     NVIDIA PTX archs:            30          【-】
  --     Use fast math:               NO          【YES】
  --     Tiny gpu module:             NO
  -- 
  --   OpenCL:
  --     Version:                     dynamic
  --     Include path:                C:/DevCPP/OpenCV2413/sources/3rdparty/include/opencl/1.2
  --     Use AMD FFT:                 NO
  --     Use AMD BLAS:                NO
  -- 
  --   Python:
  --     Interpreter:                 NO
  -- 
  --   Java:
  --     ant:                         NO
  --     JNI:                         NO
  --     Java tests:                  NO
  -- 
  --   Tests and samples:
  --     Tests:                       YES         【NO】
  --     Performance tests:           YES         【NO】
  --     C/C++ Examples:              NO
  -- 
  --   Install path:                  C:/DevCPP/OpenCV2413/buildCUDA/install
  -- 
  --   cvconfig.h is in:              C:/DevCPP/OpenCV2413/buildCUDA
  -- -----------------------------------------------------------------
  -- 

CMakeにより生成された OpenCV.sln を処理。
OpenCV TEST を含み、対象CUDAコアアーキテクチャーを無指定とした場合の所要時間は4時間超、 TESTはOpenCVのバージョンによってはコンパイルリンク時エラーになることが多かったような記憶だが、この版、この手順では問題なく通った。ただし所要時間が長いのは確かで、あっさり外したほうが良いかも。

この後、GPUに関わるサンプルプログラムを実行し、CUDAコア群にアクセスしていることを確認する。
標準サンプルでは下記のようなインフォメーションが表示される。
(この例は CUDA 8.0 RC をインストールしている環境での CUDA 7.5 の実行なので、ドライバーが8.0の表示となっている。)

Device 0:  "GeForce GT 650M"  2048Mb, sm_30, 384 cores, Driver/Runtime ver.8.0/7.50

この手順では、Build ディレクトリに正常な include ディレクトリが生成されなかったので、Source ディレクトリから手動でコピーした。

参考文献

いろいろ参照したが、下記二稿に多く拠った。
ただし本稿と同様、構成指定の判断理由は明示されていない。

その後、下稿著者からご教示を頂戴した。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1