インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
インテル® コンパイラーでは、OpenMP* バージョン 3.1 の API の仕様をサポートしています。 OpenMP* の Fortran 言語サポートの詳細は、OpenMP* Web サイト (http://www.openmp.org/、仕様リンクをクリック) の OpenMP* Application Program Interface バージョン 3.1 仕様を参照してください。 このドキュメントでは、OpenMP* の言語特性の説明において、通常 OpenMP* 仕様で定義されている用語を使用しています。
OpenMP* は、次の主な機能を持った対称型マルチプロセッシング (SMP) を提供します。
反復のパーティショニング、データの共用、スレッドのスケジューリング、および同期化に関する下位の詳細レベルを処理して、ユーザーの負担を軽減します。
サポートされるすべてのインテル® アーキテクチャー上のインテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) 対応プロセッサーを含む共有メモリーのマルチプロセッサー・システムおよびマルチコア・プロセッサー・システムから優れたパフォーマンスを引き出します。
コンパイラーは、ソースプログラムの開発者の OpenMP* 宣言子の指定に従ってコード変換を実行し、マルチスレッド・コードを生成して、既存のソフトウェアへスレッドを追加しやすくします。インテル® コンパイラーは、現在の業界標準の OpenMP* 宣言子のすべてに対応し、OpenMP* 宣言子のある並列実行プログラムをコンパイルします。
コンパイラーは、ランタイム・ライブラリー・ルーチンおよび環境変数を含む OpenMP* バージョン 3.1 仕様にインテル独自の拡張機能を提供します。 ただし、これらの拡張機能はインテル® コンパイラーでのみサポートされています。OpenMP* に適用するコンパイラー・オプションの概要は、OpenMP* オプションのクイック・リファレンスを参照してください。
OpenMP* をサポートするオプションはインテル製マイクロプロセッサーおよび互換マイクロプロセッサーの両方で利用可能ですが、両者では結果が異なります。両者の結果が異なる可能性のある OpenMP* 構造および機能の主なリストは次のとおりです: ロック (内部的なものおよびユーザーが利用可能なもの)、SINGLE 構造、バリア (暗黙的および明示的)、並列ループ・スケジューリング、リダクション、メモリーの割り当て、スレッド・アフィニティー、バインド。
OpenMP* でコンパイルするには、Fortran プログラムコメント形式の OpenMP* 宣言子でコードをアノテーションするプログラムを準備する必要があります。 インテル® コンパイラーはプログラムを処理して、マルチスレッド・バージョンのコードを内部的に生成してからコードをコンパイルします。その出力は、並列領域または構造を実行するスレッドによって実装される並列処理の実行プログラムです。
OpenMP* 仕様は複数の実装の相互運用性について定義していません。このため、他のコンパイラーでサポートされている OpenMP* 実装とインテル® コンパイラーでサポートされている OpenMP* 実装は相互運用できないことがあります。アプリケーション全体を 1 つのコンパイラーでコンパイルしてビルドしたとしても、異なるコンパイラーでは OpenMP* ソース互換 (異なるコンパイラーで同じアプリケーション・ソース・セットをリンクして、コンパイルし、期待する並列実行結果を得ることが可能) を提供しないことに注意してください。
「OpenMP* ソース互換とその他のコンパイラーとの相互運用性」で説明されているように、インテル® コンパイラーには 2 種類の OpenMP* ライブラリー・セットがあります。