< OpenCV + IPP + TBB 빌드하는 방법 >
- !! 일반빌드와 속도 테스트 결과 저는 차이가 없었습니다!
* OpenCV 2.4.8 빌드
- 다운로드, 압축풀기 http://opencv.org/
IPP설치방법 : http://codens.info/642
TBB설치방법 : http://codens.info/641
- 환경변수 설정
IPPROOT = ipp 설치 경로 (끝이 ipp)
IPP_H_PATH = IPP include 경로(옵션)
TBB_INCLUDE_DIRS = TBB include 경로
- CMake 실행
source code : ..xx../OpenCV-2.4.8/sources
build the binaries : ..xx../OpenCV-2.4.8/build2
- Configure 버튼 클릭
- 옵션 조정(체크할 옵션)
BUILD_EXAMPLES
WITH_IPP
WITH_TBB
- 솔루션 빌드
- build2 폴더로 가서 OpenCV.sln 로드
-> ALL_BUILD 프로젝트를 시작 프로젝트로 설정하고 선택
-> 메뉴 : Build -> Build Solution
-> INSTALL 프로젝트 선택 해서 빌드
%OPENVC%\install 경로에 빌드한 파일들이 설치된다.
//===============
* 속도 비교
http://www.shervinemami.info/timingTests.html
- IPP와 TBB를 포함한 빌드와 포함하지 않은 빌드에 속도 차이가 없다. T.T
http://code.opencv.org/projects/opencv/wiki/ChangeLog 을 보면
2.4.3 버전 부터 내부적으로 병렬 처리를 하고있어서 TBB등이 없어도 된다고 한다.
//==============
* bgfg_gmg 프로젝트 속도 테스트 결과
- BackgroundSubtractorGMG
- 속도 차이는 Debug, Release 만 속도 차이가 남
Debug : 80ms, Release : 50ms
- 다음은 바꿔도 속도차이 없는 것들
- IPP, TBB 포함 빌드
- HAVE_IPP
- setUseOptimized(true); //CPU 기능 활용
- setNumThreads(8);
cv::setNumThreads() 함수에서 TBB( HAVE_TBB )가 선언되있지 않은 경우,
Microsoft Visual Studio를 이용하고 있으면 Concurrency Runtime ( HAVE_CONCURRENCY ) 을 기본으로 사용하게 된다.
2.4.3 부터는 기본으로 병렬프로그래밍을 지원한다.
//=======================
//아래는 그냥 참고용
- 전처리기
HAVE_IPP;HAVE_TBB;
- include 경로 추가
$(TBBROOT)\include;$(IPPROOT)\include;$(OpenCV_IT)\include;
- library 경로 추가
Debug : $(TBBROOT)\lib\ia32\vc10;$(IPPROOT)\lib\ia32;$(OpenCV_IT)\lib\debug;
Release : $(TBBROOT)\lib\ia32\vc10;$(IPPROOT)\lib\ia32;$(OpenCV_IT)\lib\release;
- 라이브러리 추가
ippvmmt.lib;ippccmt.lib;ippcvmt.lib;ippimt.lib;ippsmt.lib;ippcoremt.lib;
opencv_core248d.lib;opencv_flann248d.lib;opencv_imgproc248d.lib;opencv_highgui248d.lib;opencv_ml248d.lib;opencv_video248d.lib;
opencv_objdetect248d.lib;opencv_photo248d.lib;opencv_nonfree248d.lib;opencv_features2d248d.lib;opencv_calib3d248d.lib;
opencv_legacy248d.lib;opencv_contrib248d.lib;opencv_nonfree248d.lib;opencv_gpu248d.lib;opencv_photo248d.lib;opencv_legacy248d.lib;
opencv_ocl248d.lib;opencv_ml248d.lib;opencv_video248d.lib;opencv_objdetect248d.lib;opencv_calib3d248d.lib;opencv_features2d248d.lib;
opencv_flann248d.lib;opencv_highgui248d.lib;opencv_imgproc248d.lib;opencv_core248d.lib