0

MKL を使用するための例であるmkl_lab_solution.cを実行しています。正しくコンパイルできますが、実行中にセグメンテーション違反が発生しました。ランタイムは以下のとおりです。

  1. OSはcentos6.3
  2. gcc のバージョンは 4.1.2 です
  3. mkl は mkl_10.3.12.361 です
  4. メイクファイルは以下

    gcc -g -L/opt/intel/composer_xe_2011_sp1.12.361/mkl/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_lp64 -lmkl_intel_sp2dp -lmkl_intel_thread -lmkl_core -lpthread -L/opt/intel/composer_xe_2011_sp1.14/lib/intellio5 L/usr/lib64 -lstdc++ -I/opt/intel/composer_xe_2011_sp1.12.361/mkl/include -o テスト mkl-lab-solution.c

4

1 に答える 1

3

これは私のシステムでは問題なく動作するため、考えられるエラーを指摘させてください。. /path/to/intel/compilervars.sh intel64まず、 のようにすべての環境変数が設定されているように実行する必要がありますMKLROOT。次に、インテル mkl リンク ライン アドバイザーで、システムのオプションを確認します。コンパイルコマンドを読んで、Linux、GNUコンパイラ、ダイナミックリンク、64ビットターゲットアーキテクチャ、64ビットロングポインタ、マルチスレッド、インテルompライブラリだと思います。

これらの設定は私に与えます:

リンカー オプション:

-L$(MKLROOT)/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm

コンパイル オプション:

-DMKL_ILP64 -m64 -I$(MKLROOT)/include

何らかの理由で、MKLROOT を囲む括弧は bash では機能しないため、削除してください。次に、すべてのコンパイル オプションをリンカー オプションの前に置くことを忘れないでください。最終的なコマンド ラインは次のようになります。

gcc mkl-lab-solution.c -DMKL_ILP64 -m64 -I$MKLROOT/include -L$MKLROOT/lib/intel64 -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm

実行時エラーが発生するため、インテル® MKL ライブラリーをさまざまなインターフェイス層用にコンパイルされたオブジェクトにリンクしていると思われます。

于 2013-05-15T15:45:52.217 に答える