概要

  • まさかの3.0リリース前に2.4.10.1がリリースされた (2014-11-06)
  • ターゲットはWindows 7 (64bit)
  • OpenCVのバージョンは2.4.10.1
  • ビルド環境はVS2012
  • CMakeのバージョンは3.0.1
  • 今回はGitでソースコードを取ってくる

ソースコードのダウンロード

  • git でリポジトリをクローンしてくる。URL は git://code.opencv.org/opencv.git
    git clone git://code.opencv.org/opencv.git
  • リポジトリがcloneされるのを待つ
  • 取得したリポジトリから、ブランチの2.4.10.1にスイッチする
  • 今回はWindowsのTortoiseGitを使ったので、添付図の様に、TortoiseGit→Switch/Checkoutを選択
    switch_checkout_git.png
  • Switch To で Branch の横の参照ボタンをクリックし、Browse references を表示する
    branch_select.png
  • tags から、2.4.10.1を選択
  • Switchされるのを待つ(12121ms)
    switch-checkout_2_4_10_1.png

ビルド前準備

  • リポジトリは予め適当な場所に移動させる
  • cmakeでソリューションファイルを作成する
  • cmake(GUI版を起動する)
  • Sourceの場所を指定する
    • 今回はD:\OpenCV2410
  • Buildの場所を指定する
    • 今回は D:\OpenCV2410\build を指定する。
  • Configureボタンを押す
  • D:\OpenCV2410\build が無いと文句を言われるので、ディレクトリの作成に同意する
  • コンパイラのバージョンを聞かれるので、Visual Studio 2012を指定する
    • 違うコンパイラを指定する場合はここでターゲットを変更する
    • Visual Studio 2010→VS10
    • Visual Studio 2012→VS11
    • Visual Studio 2013→VS12
    • と、微妙に表記と数字がずれるので注意
  • Configureボタンを押す
    • Warningがわんさか出たが、無視する
  • Generateボタンを押す
    opencv_24101_cmake.png
    • Warningがわんさか出たが、無視する
  • D:\OpenCV2410\build\OpenCV.sln が作成される。

ソースコードのビルド

  • 前のステップまでで生成されたOpenCV.sln を Visual Studio 2012で開く
  • 大量にプロジェクトが読み込まれるので、バッチビルドする。
  • ビルド(B)→バッチビルド(T)でバッチビルド画面を出す
  • バッチビルドでALL_BUILDのdebug/release両方を選択する
    batch_build_2_4_10_1.png
  • 今回は5時間31分ぐらいビルドに要した

インストール

  • INSTALLプロジェクトをビルドするとインストールされる
  • 詳細は割愛

OpenCVビルド時のコンフィグなど

cvconfig.h

/* OpenCV compiled as static or dynamic libs */
#define BUILD_SHARED_LIBS

/* Compile for 'real' NVIDIA GPU architectures */
#define CUDA_ARCH_BIN " 11 12 13 20 21 30 35"

/* Create PTX or BIN for 1.0 compute capability */
/* #undef CUDA_ARCH_BIN_OR_PTX_10 */

/* NVIDIA GPU features are used */
#define CUDA_ARCH_FEATURES " 11 12 13 20 20 30 35 30"

/* Compile for 'virtual' NVIDIA PTX architectures */
#define CUDA_ARCH_PTX " 30"

/* AVFoundation video libraries */
/* #undef HAVE_AVFOUNDATION */

/* V4L capturing support */
/* #undef HAVE_CAMV4L */

/* V4L2 capturing support */
/* #undef HAVE_CAMV4L2 */

/* Carbon windowing environment */
/* #undef HAVE_CARBON */

/* AMD's Basic Linear Algebra Subprograms Library*/
/* #undef HAVE_CLAMDBLAS */

/* AMD's OpenCL Fast Fourier Transform Library*/
/* #undef HAVE_CLAMDFFT */

/* Cocoa API */
/* #undef HAVE_COCOA */

/* C= */
/* #undef HAVE_CSTRIPES */

/* NVidia Cuda Basic Linear Algebra Subprograms (BLAS) API*/
/* #undef HAVE_CUBLAS */

/* NVidia Cuda Runtime API*/
#define HAVE_CUDA

/* NVidia Cuda Fast Fourier Transform (FFT) API*/
#define HAVE_CUFFT

/* IEEE1394 capturing support */
/* #undef HAVE_DC1394 */

/* IEEE1394 capturing support - libdc1394 v2.x */
/* #undef HAVE_DC1394_2 */

/* DirectShow Video Capture library */
#define HAVE_DSHOW

/* Eigen Matrix & Linear Algebra Library */
/* #undef HAVE_EIGEN */

/* FFMpeg video library */
#define HAVE_FFMPEG

/* ffmpeg's libswscale */
#define HAVE_FFMPEG_SWSCALE

/* ffmpeg in Gentoo */
#define HAVE_GENTOO_FFMPEG

/* GStreamer multimedia framework */
/* #undef HAVE_GSTREAMER */

/* GTK+ 2.0 Thread support */
/* #undef HAVE_GTHREAD */

/* Windows Runtime support */
/* #undef HAVE_WINRT */

/* Win32 UI */
#define HAVE_WIN32UI

/* GTK+ 2.x toolkit */
/* #undef HAVE_GTK */

/* Apple ImageIO Framework */
/* #undef HAVE_IMAGEIO */

/* Intel Perceptual Computing SDK library */
/* #undef HAVE_INTELPERC */

/* Intel Integrated Performance Primitives */
/* #undef HAVE_IPP */

/* JPEG-2000 codec */
#define HAVE_JASPER

/* IJG JPEG codec */
#define HAVE_JPEG

/* libpng/png.h needs to be included */
/* #undef HAVE_LIBPNG_PNG_H */

/* V4L/V4L2 capturing support via libv4l */
/* #undef HAVE_LIBV4L */

/* Microsoft Media Foundation Capture library */
/* #undef HAVE_MSMF */

/* NVidia Video Decoding API*/
/* #undef HAVE_NVCUVID */

/* OpenCL Support */
#define HAVE_OPENCL
/* #undef HAVE_OPENCL_STATIC */

/* OpenEXR codec */
#define HAVE_OPENEXR

/* OpenGL support*/
/* #undef HAVE_OPENGL */

/* OpenNI library */
/* #undef HAVE_OPENNI */

/* PNG codec */
#define HAVE_PNG

/* Qt support */
/* #undef HAVE_QT */

/* Qt OpenGL support */
/* #undef HAVE_QT_OPENGL */

/* QuickTime video libraries */
/* #undef HAVE_QUICKTIME */

/* QTKit video libraries */
/* #undef HAVE_QTKIT */

/* Intel Threading Building Blocks */
/* #undef HAVE_TBB */

/* TIFF codec */
#define HAVE_TIFF

/* Unicap video capture library */
/* #undef HAVE_UNICAP */

/* Video for Windows support */
#define HAVE_VFW

/* V4L2 capturing support in videoio.h */
/* #undef HAVE_VIDEOIO */

/* Win32 UI */
#define HAVE_WIN32UI

/* XIMEA camera support */
/* #undef HAVE_XIMEA */

/* Xine video library */
/* #undef HAVE_XINE */

/* Define if your processor stores words with the most significant byte
   first (like Motorola and SPARC, unlike Intel and VAX). */
/* #undef WORDS_BIGENDIAN */

version_string.inc

General configuration for OpenCV 2.4.10.1 =====================================
  Version control:               2.4.10.1

  Platform:
    Host:                        Windows 6.1 AMD64
    CMake:                       3.0.1
    CMake generator:             Visual Studio 11 2012
    CMake build tool:            C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe
    MSVC:                        1700

  C/C++:
    Built as dynamic libs?:      YES
    C++ Compiler:                C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/cl.exe  (ver 17.0.61030.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 /arch:SSE2 /Oi /fp:fast  /wd4251 /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 /arch:SSE2 /Oi /fp:fast  /wd4251 /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
    C Compiler:                  C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin/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 /arch:SSE2 /Oi /fp:fast  /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 /arch:SSE2 /Oi /fp:fast  /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 
    Linker flags (Release):      /machine:X86   /INCREMENTAL:NO  /debug
    Linker flags (Debug):        /machine:X86   /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:                          NO
    Win32 UI:                    YES
    OpenGL support:              NO
    VTK support:                 NO

  Media I/O: 
    ZLib:                        build (ver 1.2.7)
    JPEG:                        build (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)
      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:                   NO
    Use TBB:                     NO
    Use OpenMP:                  NO
    Use GCD                      NO
    Use Concurrency              YES
    Use C=:                      NO
    Use Cuda:                    YES (ver 5.5)
    Use OpenCL:                  YES

  NVIDIA CUDA
    Use CUFFT:                   YES
    Use CUBLAS:                  NO
    USE NVCUVID:                 NO
    NVIDIA GPU arch:             11 12 13 20 21 30 35
    NVIDIA PTX archs:            30
    Use fast math:               NO

  OpenCL:
    Version:                     dynamic
    Include path:                D:/OpenCV2410/3rdparty/include/opencl/1.2
    Use AMD FFT:                 NO
    Use AMD BLAS:                NO

  Python:
    Interpreter:                 NO

  Java:
    ant:                         NO
    JNI:                         C:/Program Files (x86)/Java/jdk1.7.0_07/include C:/Program Files (x86)/Java/jdk1.7.0_07/include/win32 C:/Program Files (x86)/Java/jdk1.7.0_07/include
    Java tests:                  NO

  Documentation:
    Build Documentation:         NO
    Sphinx:                      NO
    PdfLaTeX compiler:           NO

  Tests and samples:
    Tests:                       YES
    Performance tests:           YES
    C/C++ Examples:              NO

  Install path:                  D:/OpenCV2410/build/install

  cvconfig.h is in:              D:/OpenCV2410/build
-----------------------------------------------------------------

ビルドされたReleaseのdll 一覧

2014/11/19  12:05         4,262,400 opencv_core2410.dll
2014/11/19  12:05         8,866,816 opencv_core2410.pdb
2014/11/19  12:11         1,931,264 opencv_imgproc2410.dll
2014/11/19  12:11         7,310,336 opencv_imgproc2410.pdb
2014/11/19  12:11           526,848 opencv_flann2410.dll
2014/11/19  12:11         5,762,048 opencv_flann2410.pdb
2014/11/19  12:11         2,160,640 opencv_highgui2410.dll
2014/11/19  12:11         9,939,968 opencv_highgui2410.pdb
2014/11/19  12:11        10,535,057 opencv_ffmpeg2410.dll
2014/11/19  12:12           741,888 opencv_features2d2410.dll
2014/11/19  12:12         5,204,992 opencv_features2d2410.pdb
2014/11/19  12:12         1,012,224 opencv_calib3d2410.dll
2014/11/19  12:12         5,606,400 opencv_calib3d2410.pdb
2014/11/19  12:12           509,952 opencv_ml2410.dll
2014/11/19  12:12         2,919,424 opencv_ml2410.pdb
2014/11/19  12:13           364,544 opencv_video2410.dll
2014/11/19  12:13         2,747,392 opencv_video2410.pdb
2014/11/19  12:13           679,424 opencv_objdetect2410.dll
2014/11/19  12:13         6,302,720 opencv_objdetect2410.pdb
2014/11/19  12:13         1,261,056 opencv_legacy2410.dll
2014/11/19  12:13         7,465,984 opencv_legacy2410.pdb
2014/11/19  12:13           200,704 opencv_photo2410.dll
2014/11/19  12:13         2,272,256 opencv_photo2410.pdb
2014/11/19  14:38       379,078,656 opencv_gpu2410.dll
2014/11/19  14:38        56,937,472 opencv_gpu2410.pdb
2014/11/19  17:00         2,066,432 opencv_ocl2410.dll
2014/11/19  17:00         9,997,312 opencv_ocl2410.pdb
2014/11/19  17:01         1,171,968 opencv_nonfree2410.dll
2014/11/19  17:01         5,925,888 opencv_nonfree2410.pdb
2014/11/19  17:11           867,328 opencv_superres2410.dll
2014/11/19  17:11         6,474,752 opencv_superres2410.pdb
2014/11/19  17:20         1,213,952 opencv_contrib2410.dll
2014/11/19  17:20         9,718,784 opencv_contrib2410.pdb
2014/11/19  17:21         1,046,016 opencv_stitching2410.dll
2014/11/19  17:21         8,317,952 opencv_stitching2410.pdb
2014/11/19  17:22           163,840 opencv_haartraining.exe
2014/11/19  17:22         1,453,056 opencv_haartraining.pdb
2014/11/19  17:22           805,376 opencv_perf_calib3d.exe
2014/11/19  17:22         6,974,464 opencv_perf_calib3d.pdb
2014/11/19  17:22         1,710,592 opencv_perf_core.exe
2014/11/19  17:22        16,591,872 opencv_perf_core.pdb
2014/11/19  17:22           945,664 opencv_perf_features2d.exe
2014/11/19  17:22         8,481,792 opencv_perf_features2d.pdb
2014/11/19  17:23         4,862,976 opencv_perf_gpu.exe
2014/11/19  17:23        56,151,040 opencv_perf_gpu.pdb
2014/11/19  17:24           643,072 opencv_perf_highgui.exe
2014/11/19  17:24         4,787,200 opencv_perf_highgui.pdb
2014/11/19  17:24         2,718,720 opencv_perf_imgproc.exe
2014/11/19  17:24        33,139,712 opencv_perf_imgproc.pdb
2014/11/19  17:25           852,480 opencv_perf_nonfree.exe
2014/11/19  17:25         7,564,288 opencv_perf_nonfree.pdb
2014/11/19  17:25           714,752 opencv_perf_objdetect.exe
2014/11/19  17:25         5,975,040 opencv_perf_objdetect.pdb
2014/11/19  17:26         3,122,176 opencv_perf_ocl.exe
2014/11/19  17:26        33,606,656 opencv_perf_ocl.pdb
2014/11/19  17:26           709,120 opencv_perf_photo.exe
2014/11/19  17:26         5,671,936 opencv_perf_photo.pdb
2014/11/19  17:26           812,032 opencv_perf_stitching.exe
2014/11/19  17:26         7,105,536 opencv_perf_stitching.pdb
2014/11/19  17:26           729,088 opencv_perf_superres.exe
2014/11/19  17:26         6,016,000 opencv_perf_superres.pdb
2014/11/19  17:27           916,480 opencv_perf_video.exe
2014/11/19  17:27         8,719,360 opencv_perf_video.pdb
2014/11/19  17:27            23,040 opencv_performance.exe
2014/11/19  17:27         1,133,568 opencv_performance.pdb
2014/11/19  17:27         1,532,928 opencv_test_calib3d.exe
2014/11/19  17:27         9,219,072 opencv_test_calib3d.pdb
2014/11/19  17:27           542,720 opencv_test_contrib.exe
2014/11/19  17:27         4,754,432 opencv_test_contrib.pdb
2014/11/19  17:28         1,953,792 opencv_test_core.exe
2014/11/19  17:28        11,668,480 opencv_test_core.pdb
2014/11/19  17:28           826,368 opencv_test_features2d.exe
2014/11/19  17:28         5,483,520 opencv_test_features2d.pdb
2014/11/19  17:28           549,888 opencv_test_flann.exe
2014/11/19  17:28         4,418,560 opencv_test_flann.pdb
2014/11/19  17:29         7,225,856 opencv_test_gpu.exe
2014/11/19  17:29        74,394,624 opencv_test_gpu.pdb
2014/11/19  17:30           783,360 opencv_test_highgui.exe
2014/11/19  17:30         5,172,224 opencv_test_highgui.pdb
2014/11/19  17:31         1,383,936 opencv_test_imgproc.exe
2014/11/19  17:31         8,481,792 opencv_test_imgproc.pdb
2014/11/19  17:31           722,432 opencv_test_legacy.exe
2014/11/19  17:31         5,524,480 opencv_test_legacy.pdb
2014/11/19  17:31           710,656 opencv_test_ml.exe
2014/11/19  17:31         5,000,192 opencv_test_ml.pdb
2014/11/19  17:31         1,156,096 opencv_test_nonfree.exe
2014/11/19  17:31         9,473,024 opencv_test_nonfree.pdb
2014/11/19  17:31           628,736 opencv_test_objdetect.exe
2014/11/19  17:31         4,992,000 opencv_test_objdetect.pdb
2014/11/19  17:32         4,121,600 opencv_test_ocl.exe
2014/11/19  17:32        38,153,216 opencv_test_ocl.pdb
2014/11/19  17:33           585,728 opencv_test_photo.exe
2014/11/19  17:33         4,353,024 opencv_test_photo.pdb
2014/11/19  17:33           567,808 opencv_test_stitching.exe
2014/11/19  17:33         4,811,776 opencv_test_stitching.pdb
2014/11/19  17:33           572,928 opencv_test_superres.exe
2014/11/19  17:33         4,754,432 opencv_test_superres.pdb
2014/11/19  17:33           717,312 opencv_test_video.exe
2014/11/19  17:33         5,303,296 opencv_test_video.pdb
2014/11/19  17:33           246,784 opencv_traincascade.exe
2014/11/19  17:33         2,345,984 opencv_traincascade.pdb
2014/11/19  17:34           951,808 gpu_perf4au.exe
2014/11/19  17:34         9,530,368 gpu_perf4au.pdb
2014/11/19  17:35           552,960 opencv_videostab2410.dll
2014/11/19  17:35         5,336,064 opencv_videostab2410.pdb

ビルドに要した時間Top10

  • やはりGPUのカーネル系はビルドに時間がかかるが、それにしても2時間超えって。
  • 映画かよっ!!
    dllの名前所要時間(min)
    opencv_gpu2410.dll145
    opencv_ocl2410.dll142
    opencv_superres2410.dll10
    opencv_contrib2410.dll9
    opencv_imgproc2410.dll6
    opencv_stitching2410.dll1
    opencv_features2d2410.dll1
    opencv_video2410.dll1
    opencv_videostab2410.dll1
    opencv_nonfree2410.dll1
  • dll以外はビルドが早い。
  • もっとも、長いのがgpuモジュールとoclモジュールだけで、ほかは割と早いといえるかもしれないが。
    exeの名前所要時間(min)
    opencv_perf_nonfree.exe1
    opencv_test_gpu.exe1
    opencv_test_ocl.exe1
    opencv_perf_gpu.exe1
    opencv_perf_highgui.exe1
    opencv_perf_video.exe1
    opencv_test_core.exe1
    opencv_test_imgproc.exe1
    opencv_test_photo.exe1
    opencv_haartraining.exe1
  • 3.0系のビルドより、極端にビルド時間が偏っているのが気になる。

CUDAのアーキテクチャを指定した場合

CUDAのアーキテクチャって何?

ビルド前準備(アーキテクチャ指定時)

  • gitのclone、switchまでは同じ
  • CMakeを起動し、configureした後、図の黒枠の中の用に、CUDA_ARCH_BINを 3.0 に、CUDA_ARCH_PTX を空欄にする。
    cmake_2_4_10_1_architecture_specific.png
  • もう1度configureボタンを押し、Generate でソリューションファイルを作成する

ソースコードのビルド(アーキテクチャ指定時)

  • 以降は同様に、バッチビルドを行う。
  • Debug/ReleaseのALL_BUILD で、なんと、1時間21分でビルドが終了した!実にビルド時間が4時間以上短縮され、1/4程度で済むようになった!
  • なんと、1時間21分でビルドが終了した!実にビルド時間が4時間以上短縮されました!大事なことなので2回言いました!
  • twitterで2時間半でビルドできたと発言しましたが、1時間21分でビルドが終了しました!大事なことなので3回言いました!

OppenCVビルド時のコンフィグなど

cvconfig.h (アーキテクチャ指定時の差分のみ)

  • CUDA_ARCH_BINとCUDA_ARCH_FEATURESの文字列が変わっているのが見える
    /* Compile for 'real' NVIDIA GPU architectures */
    -#define CUDA_ARCH_BIN " 11 12 13 20 21 30 35"
    +#define CUDA_ARCH_BIN " 30"
    
    /* Create PTX or BIN for 1.0 compute capability */
    /* #undef CUDA_ARCH_BIN_OR_PTX_10 */
    
    /* NVIDIA GPU features are used */
    -#define CUDA_ARCH_FEATURES " 11 12 13 20 20 30 35 30"
    +#define CUDA_ARCH_FEATURES " 30"
    
    /* Compile for 'virtual' NVIDIA PTX architectures */
    -#define CUDA_ARCH_PTX " 30"
    +#define CUDA_ARCH_PTX ""
  • なお、この文字列定数は modules/dynamicuda/include/opencv2/dynamicuda/dynamicuda.hpp に渡される.
    1.  fromStr(CUDA_ARCH_BIN, bin);
    2.  fromStr(CUDA_ARCH_PTX, ptx);
    3.  fromStr(CUDA_ARCH_FEATURES, features);
  • Dynamic Cuda じゃなくて、dynamicuda なのか。typoかと思った。

version_string.inc (アーキテクチャ指定時の差分のみ)

  • NVIDIA GPU arch と NVIDIA PTX archs が違っているのが見える。
         Use CUBLAS:                  NO
    -    NVIDIA GPU arch:             11 12 13 20 21 30 35
    -    NVIDIA PTX archs:            30
    +    NVIDIA GPU arch:             30
    +    NVIDIA PTX archs:
         Use fast math:               NO
  • modules/gpu/opencv_gpu.vcxproj 内の AdditionalInputs 項目で指定されてるファイルが変更される
  • 感触的に、どんなnVidiaGPU上でも実行出来るようにprecompileするのが時間がかかるだけで、単一アーキテクチャに絞れば、確かにbuild時間が劇的に早くなるのが分かる。

buildされたReleaseのdll一覧(アーキテクチャ指定時の差分のみ)

  • ファイルサイズに違いのあったものだけ
    2014/11/19  20:03         2,588,672 opencv_core2410.dll
    2014/11/19  20:03         8,866,816 opencv_core2410.pdb
    2014/11/19  20:39        65,228,800 opencv_gpu2410.dll
    2014/11/19  20:39        56,912,896 opencv_gpu2410.pdb
    2014/11/19  21:08           748,032 opencv_nonfree2410.dll
    2014/11/19  21:08         5,925,888 opencv_nonfree2410.pdb
    2014/11/19  21:10           720,896 opencv_superres2410.dll
    2014/11/19  21:10         6,474,752 opencv_superres2410.pdb

buildに要した時間Top10

  • dllのファイルサイズでも現れているように、gpuモジュールのbuild時間が劇的に短くなっている。
  • oclモジュールも短くなっている割に、サイズが全く同じなのが非常に謎
  • しかもファイルサイズは全く同じなのに、バイナリレベルでは中身が違う。ファイルサイズが一緒なのはマジで謎。
  • superresモジュールもbuild時間が10分→2分と短くなっているのが分かる
    dllの名前所要時間
    opencv_gpu2410.dll29
    opencv_ocl2410.dll28
    opencv_imgproc2410.dll5
    opencv_superres2410.dll2
    opencv_contrib2410.dll2
    opencv_video2410.dll1
    opencv_nonfree2410.dll1
    opencv_stitching2410.dll1
    opencv_features2d2410.dll1
    opencv_core2410.dll0
  • 3.0系のビルドでは、満遍なくビルド時間が2.4.10.1より掛かるのだが、恐らくそれはoclMatがデフォルトで使われるようになっているから、どのモジュールでもGPU関連のビルドが実行されるから、だと推測される。
  • 参考資料:【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat*4
  • 参考資料:【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう*5
  • OpenCVの錬成ビルドに要する時間が短くなった反面、このOpenCVで作られたプログラムは、古いGPUでは動かなかったり、動いたとしてもパフォーマンスが出ない可能性がある。と思う。(未検証)

謝辞

関連ページ


*1  dandelionさんはTwitterを使っています: "@tomoaki_teshima CUDAのアーキテクチャを明示的に指定すると多少マシになるかもです. http://t.co/g2DyVaF8Uk", 2014-11-19投稿, 2014-11-19閲覧
*2  Why OpenCV building is so slow with CUDA? - OpenCV Q&A Forum, 2012-12-12投稿, 2012-12-12回答, 2012-12-14更新, 2014-11-20閲覧
*3  CUDA GPUs, 2014-11-20閲覧
*4  【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat, 2013-11-30発表, 2014-11-20閲覧
*5  【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう, 2013-06-01発表, 2014-11-20閲覧

添付ファイル: filecmake_2_4_10_1_architecture_specific.png 442件 [詳細] fileGT_650M_30.png 419件 [詳細] filebatch_build_2_4_10_1.png 456件 [詳細] fileopencv_24101_cmake.png 434件 [詳細] fileswitch-checkout_2_4_10_1.png 436件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-01-04 (月) 17:36:54 (654d)