2011-06-26 24 views
4

OpenMPとIntel C++コンパイラをリンクする手順は何ですか?インテルコンパイラはOpenMPライブラリを同梱していますか?libgomにリンクする必要がありますか?Linux上のICC:OpenMPへのリンク

ありがとうございました!

答えて

6

明らかに独自の実装が付属しています。 -openmpフラグを指定してコンパイルする限り、追加のライブラリを指定する必要はありません。

$ icc -openmp t.c 
$ ldd ./a.out 
    ... 
    libiomp5.so => /opt/intel/Compiler/11.1/072/lib/intel64/libiomp5.so (0x00007fd8e7ac6000) 
    ... 
+0

何とか-openmpだけで行います。私は__kmpc_begin 'リンカーのエラーに未定義の参照を取得しています。 libiomp5に明示的にリンクする必要があります。 – pic11

+0

@ pic11:iccのmanページでは、実際はかなり変です。 openmpの静的/動的リンクを選択できる '-openmp-link'オプションもあります。私はそれがそれ自身でライブラリを扱うことになっていると確信しています。 – Mat

+1

@ pic11:iccvarsを使ってコンパイラをセットアップしていますか? iccのどのバージョンを使用しようとしていますか?静的または動的にリンクしようとしていますか?どのバージョンのLinuxを使用していますか? – ejd

2

iccの組み込みopenmp実装を使用する必要があります。コマンドラインで-openmpスイッチを渡すだけです。

4

インテル®C++コンパイラーは独自のOpenMPライブラリーを提供しますが、libgompとリンクしません。 icc/icpcで-static-intelフラグを使用すると、libiomp5.soの依存関係を取り除くことができます。この方法では、インテル®C++コンパイラーがインストールされていないシステムでバイナリーが実行されます。

$ icpc -openmp -static-intel t.cpp 
$ ./a.out