OpenMP* ソース互換とその他のコンパイラーとの相互運用性

インテル® コンパイラーには、2 種類の OpenMP ライブラリー・セットがあります。

OpenMP 互換ライブラリー (デフォルト) またはレガシー・ライブラリーを選択するには、インテル® コンパイラーでアプリケーションをリンクし、インテル® コンパイラー・オプションの /Qopenmp-lib (Windows) または -openmp-lib (Linux および Mac OS X) を指定します。

「オブジェクト・レベルの相互運用性」とは、あるコンパイラーで生成されたオブジェクト・ファイルと別のコンパイラーで生成されたライブラリーで作成された実行ファイルが正常に動作することを意味します。これに対し、「ソース互換 」とはアプリケーション全体が 1 つのコンパイラーによりコンパイル、リンクされ、ソースを修正しなくても実行ファイルが正常に動作することを意味します。

コンパイラーが異なるとサポートされる OpenMP 仕様も異なります。アプリケーションが使用する OpenMP 機能に基づいて、どのバージョンの OpenMP 仕様が必要かを判断してください。すべてのコンパイラーによりサポートされている OpenMP 仕様レベルと等しいか、またはそれ以下の OpenMP 仕様をアプリケーションで採用している場合は、すべてのコンパイラーとソース互換があります。ただし、すべてのオブジェクト・ファイルとライブラリーを同じコンパイラーの OpenMP ライブラリーでリンクする必要があります。

インテル® コンパイラーの OpenMP 互換ライブラリー

互換ライブラリーは、以下の OpenMP サポートとのソース互換とオブジェクト・レベルの相互運用性を提供します。

Linux システムの Fortran アプリケーションの場合、インテル® Fortran コンパイラー (ifort) でコンパイルされたオブジェクトと GNU Fortran コンパイラー (gfortran) でコンパイルされたオブジェクトをリンクさせることはできません。このように、言語が混在した C++ および Fortran アプリケーションでは、次のいずれかを行ってください。

インテル® コンパイラーの OpenMP レガシー・ライブラリー

OpenMP レガシー・ライブラリー・セットはインテル® コンパイラーの複数のリリースで提供され、現在のレガシー・ライブラリーと以前のバージョンのインテル® コンパイラー (10.0 より前のバージョンも含む) で提供されている OpenMP ライブラリーとのソース互換と相互運用性を提供しています。レガシー・ライブラリーは、Microsoft Visual C++、GNU gcc、GNU Fortran などのインテル® コンパイラー以外の OpenMP サポートとの互換性はありません。

レガシー・ライブラリーは、インテル® コンパイラー 10.0 よりも前のバージョンの OpenMP ライブラリーとのオブジェクト・レベルの相互運用性がアプリケーションで必要な場合にのみ使用します。

インテル® コンパイラーの異なるバージョンを使用する際のガイドライン

リンク時または実行時の問題を回避するため、次のガイドラインに従ってください。

インテル® コンパイラーとその他のコンパイラーを使用する際のガイドライン

リンク時または実行時の問題を回避するため、次のガイドラインに従ってください。

OpenMP 互換ライブラリーをその他のコンパイラーで使用する際の制限

オブジェクト・レベルの相互運用性における threadprivate オブジェクトの制限は次のとおりです。