OpenMPとIntel C++コンパイラをリンクする手順は何ですか?インテルコンパイラはOpenMPライブラリを同梱していますか?libgomにリンクする必要がありますか?Linux上のICC:OpenMPへのリンク
ありがとうございました!
OpenMPとIntel C++コンパイラをリンクする手順は何ですか?インテルコンパイラはOpenMPライブラリを同梱していますか?libgomにリンクする必要がありますか?Linux上のICC:OpenMPへのリンク
ありがとうございました!
明らかに独自の実装が付属しています。 -openmp
フラグを指定してコンパイルする限り、追加のライブラリを指定する必要はありません。
$ icc -openmp t.c
$ ldd ./a.out
...
libiomp5.so => /opt/intel/Compiler/11.1/072/lib/intel64/libiomp5.so (0x00007fd8e7ac6000)
...
iccの組み込みopenmp実装を使用する必要があります。コマンドラインで-openmpスイッチを渡すだけです。
インテル®C++コンパイラーは独自のOpenMPライブラリーを提供しますが、libgompとリンクしません。 icc/icpcで-static-intel
フラグを使用すると、libiomp5.soの依存関係を取り除くことができます。この方法では、インテル®C++コンパイラーがインストールされていないシステムでバイナリーが実行されます。
$ icpc -openmp -static-intel t.cpp
$ ./a.out
何とか-openmpだけで行います。私は__kmpc_begin 'リンカーのエラーに未定義の参照を取得しています。 libiomp5に明示的にリンクする必要があります。 – pic11
@ pic11:iccのmanページでは、実際はかなり変です。 openmpの静的/動的リンクを選択できる '-openmp-link'オプションもあります。私はそれがそれ自身でライブラリを扱うことになっていると確信しています。 – Mat
@ pic11:iccvarsを使ってコンパイラをセットアップしていますか? iccのどのバージョンを使用しようとしていますか?静的または動的にリンクしようとしていますか?どのバージョンのLinuxを使用していますか? – ejd