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

同カテゴリーの次の記事

OpenMP* を使用して既存のシリアルコードで並列処理の可能性を見つけよう

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「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* によって並列化したアプリケーションを他の環境に移動させて実行する場合には、この点にご注意ください。

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

関連記事

  • Parallel Universe マガジンParallel Universe マガジン Parallel Universe へようこそ。 米国インテル社が四半期に一度オンラインで公開しているオンラインマガジンです。インテルの技術者によるテクノロジーの解説や、最新ツールの紹介など、並列化に関する記事を毎号掲載しています。第1号からのバックナンバーを PDF 形式で用意しました、ぜひご覧ください。 12 […]
  • マルチスレッド開発ガイド: 4.6 インテル® Parallel Composer を利用して並列コードを開発するマルチスレッド開発ガイド: 4.6 インテル® Parallel Composer を利用して並列コードを開発する コードの並列化にはさまざまな手法があります。この記事では、インテル® Parallel Composer で利用可能な手法の概要を説明し、各手法の主な長所を比較します。インテル® Parallel Composer は Windows* 上の C/C++ を使用した開発のみを対象としていますが、これらの手法の多くは Fortran や […]
  • インテル® MKL 2017: 複雑な問題を解くためのクックブックインテル® MKL 2017: 複雑な問題を解くためのクックブック インテル® マス・カーネル・ライブラリー (インテル® MKL) には、行列を乗算する、連立方程式を解く、フーリエ変換を行うなど、さまざまな数値問題を解く際に役立つ多くのルーチンが含まれています。専用のインテル® MKL ルーチンが用意されていない問題については、インテル® MKL […]
  • データとコードの並べ替え: 最適化とメモリー – パート 2データとコードの並べ替え: 最適化とメモリー – パート 2 この記事は、インテル® デベロッパー・ゾーンに公開されている「Putting Your Data and Code in Order: Data and layout - Part 2」の日本語参考訳です。 この記事の PDF 版はこちらからご利用になれます。 パフォーマンスとメモリーに関するこのシリーズ (全 2 […]
  • インテル® MKL の無料オプション、サポートなし、ロイヤルティー・フリーインテル® MKL の無料オプション、サポートなし、ロイヤルティー・フリー この記事は、インテル® デベロッパー・ゾーンに公開されている「No Cost Options for Intel Math Kernel Library (MKL), Support Yourself, Royalty-Free」 […]