OpenCVをOpenMPモードでコンパイルした
Visual C++ 2008 ExpressでOpenMPを見て、さっそくOpenCVをOpenMPモードでコンパイルしてみた。
手順は*1、
1. VC++ 2008 ExpressとWindows SDK for Windows Server 2008をインストール
Microsoft Visual Studio Express
Download: Windows SDK for Windows Server 2008 and .NET Framework version 3.5 - Microsoft Download Center - Download Details
VC++ 2008の設定で、SDKのディレクトリを参照するように設定。
2. VC++ 2008 ExpressでOpenCVのプロジェクトを開くと形式が違うと怒られるので変換
もう2005で開かない予定なのでやってしまう。
4. omp.hをインクルードしている箇所を修正
僻地のプログラマkmt-t - わりとどうでもいい日記 1.0より、
#ifdef _DEBUG #undef _DEBUG #include <omp.h> #define _DEBUG #else #include <omp.h> #endif
としておく。
5. コンパイル
afxres.hが無いといわれたので、afxres.hとwinres.hをSDKのサンプルディレクトリからOpenCVのディレクトリにコピった。
6. 試す
haartrainingを実行した。
OpenMPモードでないときは、C2D環境で最高でも50%までしかCPU使用率が上がらなかったが、80%以上を使用するようになった。
また、Process Explorerでスレッド数を確認すると、『2』になっていた。(OpenMPモードでないときは1だった)
*1:もともと2005でコンパイル環境は作っていた