インテル® IPP における OpenMP* サポートの変更

インテル® IPPインテル® oneMKLインテル® Parallel Studio XE

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「OpenMP support changes in Intel Performance libraries (http://software.intel.com/en-us/articles/openmp-support-changes-in-intel-performance-libraries/)」の日本語参考訳です。


OpenMP* スタティック・ライブラリー (Windows* では libomp5*.lib、Linux* では libomp5*.a) の提供は、インテル® IPP 7.0 で終了しました。

以下のスクリーンショットは、インテル® Parallel Studio Windows* 版で提供されるさまざまなバージョンの OpenMP* スタティック・ライブラリーを示したものです。

static-openmp-libs.jpg

OpenMP* ライブラリーは、スタティック・バージョンではなく、ダイナミック・バージョンを使用することを推奨します。

OpenMP* ダイナミック・ライブラリーは、Composer[XE] 20xx\redist\compiler\ フォルダーにあります。例えば、Linux* 版の場合、インテル® 64 用の OpenMP* ダイナミック・ライブラリーは /opt/intel/Composer[XE] 20xx/redist/intel64/compiler フォルダーにあります (以下のスクリーンショットを参照)。

dynamic-openmp.jpg


インテル® IPP 6.0 とインテル® MKL 10.1 で、OpenMP* ランタイム・ライブラリーが変更されました。

インテル® IPP 6.0 とインテル® MKL 10.1 で、OpenMP *ライブラリー (スレッディング・ランタイム・ライブラリー) は、以前の OpenMP* ランタイム・ライブラリー (libguide*) から互換性のあるライブラリー (libiomp*) に変更されました。

ダイナミック・ライブラリー libguide40.dll は、下位互換性のためにそれ以降のバージョンにも含まれていましたが、インテル® IPP 7.0 およびインテル® MKL 10.3 から提供されなくなりました。

ほかのライブラリーが静的にリンクされていても、互換性のある OpenMP* ランタイム・ライブラリー libiomp (つまり、[Compiler Dir]\lib ディレクトリーにある libiomp5md.liblibiomp5md.dll ) へは動的にリンクすることを強く推奨します。
OpenMP* スタティック・ランタイム・ライブラリー (libiomp5mt.lib) へのリンクは推奨しません。1 つのアプリケーションで複数の OpenMP* ライブラリーを使用すると、(スレッドが多すぎることで) パフォーマンス問題を引き起こします。また、2 つ以上のコピーが初期化されると、正当性問題も引き起こす可能性があります。「OMP Abort エラーが発生した場合の対処方法」を参照してください。

インテル® Parallel Composer、インテル® Composer XE (旧インテル® コンパイラー・プロフェッショナル・エディション)、あるいはこれらに含まれるインテル® IPP またはインテル® MKL では、すべての OpenMP* ライブラリーは [Composer InstallDir]\lib 以下にあります。例えば、インテル® C++/Fortran Composer XE Mac OS* 版に含まれるインテル® IPP では、libiomp5.dylib、libiomp5.a はデフォルトでは /opt/intel/Compiler/xx.x/0xx/lib ディレクトリーにあります。

インテル® Parallel Composer では、これらのファイルは C:\Program Files\Intel\Parallel Studio\Composer\lib\ia32 にあります。
インテル® Composer XE 2011 Windows* 版 では、libiomp*.lib は C:\Program Files (x86)\Intel\ComposerXE-2011\compiler\lib\ia32 に、libiomp*.dll は C:\Program Files (x86)\Intel\ComposerXE-2011\redist\ia32\compiler\ にあります。

関連する既知の問題: インテル® IPP 7.0 Update 2 で ippiDemo または ippsDemo の実行時に起こる libiomp5md.dll が見つからないエラー

PATH 環境変数に OpenMP* ランタイム・ライブラリーのフォルダーを追加する必要があります。

例: “C:\Program Files (x86)\Intel\ComposerXE-2011\redist\ia32\compiler\”

再配布可能なコンポーネントについては、”C:\Program Files (x86)\Intel\ComposerXE-2011\Documentation\en_US\ipp\redist.txt” ファイルを参照してください。

オペレーティング・システム ダイナミック・リンク スタティック・リンク
Linux* libiomp5.so libiomp5.a
Mac OS* X libiomp5.dylib libiomp5.a
Windows* libiomp5md.lib(ダイナミック・インポート・ライブラリー)
libiomp5md.dll
libiomp5mt.lib

* libiomp5md.lib は、DLL libiomp5md.dll と対のスタブ・ライブラリー (“インポート・ライブラリー” とも呼ばれる) です。

詳細は、インテル® C++ コンパイラーに含まれるヘルプの『ユーザー・リファレンス・ガイド』 (「アプリケーションの最適化」 > 「並列処理の使用: OpenMP* サポート」 > 「ライブラリー、宣言子、節、環境変数」と「OpenMP* ライブラリー・サポート」) を参照してください。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

編集部追加

本記事でも紹介されているように、OpenMP* ランタイム・ライブラリー (libiomp5) はパフォーマンスの観点から動的にリンクすることが推奨されています。現在のインテル® C++/Fortran コンパイラーは、その他のライブラリーが静的リンクでコンパイルされていても、デフォルトでは OpenMP* ライブラリーを動的リンクします。インテル コンパイラーを使用し、OpenMP* によって並列化したアプリケーションを他の環境に移動させて実行する場合には、この点にご注意ください。

インテル® ソフトウェア開発製品についての詳細や、お問い合わせはエクセルソフト株式会社まで。

コメント

  1. […] 7/numpy/core/multiarray.pyd」をDependency Walkerで確認すると,「libiomp5md.dll」以外には特殊なDLLに依存していないことがわかります(libiomp5md.dll の必要性についてはこちらのページなどを参照) […]

タイトルとURLをコピーしました