2

Intelツールで実行をプロファイルするために、Linuxでiccを使用してOpenCVをコンパイルしようとしています。

デフォルトのオプションでiccの最新バージョンをインストールしました。"user" (icc は自宅にインストールされています) と "sudo" (icc は /opt にインストールされています) の両方のインストールを試しました。ICC のバージョンは 11.1 20090630 です。

また、必要なパスを PATH と LD_LIBRARY_PATH に追加して、iccvars.sh をソースすることも考えました。

OpenCV のいくつかのバージョンも試しました: - メインのもの: pre1.1。configure は icc をまったく認識しません - 'latest_tested_snapshot' および 'trunk' バージョン: icc は configure によって十分に認識されます (--enable-openmp は -openmp オプションを生成し、-fopenmp は生成しません)。

作ってみると、途中までは大丈夫そうです。次に、常に「オペレーター」に関する多くの警告 (おそらく数百) が表示されます。ここに例があります:

../include/opencv/cxcore.hpp(335): warning #597: "cv::Size_<_Tp>::operator cv::Size_<float>() const [with
_Tp=float]" will not be called for implicit or explicit conversions
      operator Size_<float>() const;
      ^
          detected during instantiation of class "cv::Size_<_Tp> [with _Tp=float]" at line 394

そして最後にエラー:

/bin/bash ../../../libtool --tag=CXX   --mode=compile icpc -DHAVE_CONFIG_H -I. -I../../..  -I../../../include/opencv -I. -DCV_NO_BACKWARD_COMPATIBILITY  -fPIC -I/usr/include/python2.6  -g -O2 -MT _highgui_la-pyhelpers.lo -MD -MP -MF .deps/_highgui_la-pyhelpers.Tpo -c -o _highgui_la-pyhelpers.lo `test -f 'pyhelpers.cpp' || echo './'`pyhelpers.cpp
_ml.cpp(36134): error: argument of type "uchar={unsigned char} *" is incompatible with parameter of type "int *"
        result = (int)(arg1)->get_ord_var_data(arg2,arg3,arg4,arg5,(float const **)arg6,(uchar const **)arg7); 
                                                              ^

_ml.cpp(36134): error: argument of type "const uchar={unsigned char} **" is incompatible with parameter of type "const int **"
        result = (int)(arg1)->get_ord_var_data(arg2,arg3,arg4,arg5,(float const **)arg6,(uchar const **)arg7); 
                                                                                        ^

compilation aborted for _ml.cpp (code 2)
make[4]: *** [_ml_la-_ml.lo] Erreur 1

OpenCV を icc でコンパイルすることに成功した人がいたら教えてください!

4

2 に答える 2

1

OK、ついにICCでOpenCVをコンパイルしました。Intel はこのプロジェクトに深く関わっているため、OpenCV は Intel に近いものです。バージョン 1.1 以降、OpenCV は icc コンパイラをネイティブにサポートすることになっています。configure で CC=icc を指定すると、(gcc スタイル) が(icc スタイル)-fopenmpに変換されるため、いくつかの微妙な変更があります。-openmpただし、OpenCV 1.1 (最新の安定版) のリリースから現在までの間に、icc は進化しています。以前のバージョンのiccでコンパイルしていたと思います。

svn の最新のテスト済みバージョンと一緒にコンパイルします: https://opencvlibrary.svn.sourceforge.net/svnroot/opencvlibrary/tags/latest_tested_snapshot/opencv/

svn が進化するにつれて変更される可能性がありますが、現時点 (8 月 27 日) では機能します。警告はまだここにあります (心配しないでください。たくさんあります)。ここで私のconfigure bash行:

./configure --prefix=/home/user/opencv/icc CC=icc CXX=icpc --enable-openmp --disable-apps --disable-optimization --disable-sse

icc との競合が発生するため、最適化と sse 命令を無効にしました。

于 2009-08-27T11:57:04.887 に答える
0

問題は、そのライブラリの作成に使用された ICC とは異なるバージョンを使用したことが原因である可能性があります。どのバージョンを使用するかは、ライブラリ プロバイダーに問い合わせる必要があります。

于 2009-08-13T21:55:26.033 に答える