OpenMP* サポートの概要

インテル(R) コンパイラーでは、OpenMP C/C++ 2.5 の API の仕様をサポートしています。OpenMP 宣言子は、反復のパーティショニング、データの共用、スレッドのスケジューリング、および同期化に関する下位の詳細レベルを処理して、ユーザーの負担を軽減します。

OpenMP は、次の主な機能を持った対称型マルチプロセッシング (SMP) を提供します。

HT テクノロジーについての詳細は、「その他の資料」にリストされたハードウェアおよびソフトウェアのプログラミング・マニュアルを参照してください。

コンパイラーは、ソースプログラムのユーザーの OpenMP 宣言子の指定に従って、コード変換を実行し、マルチスレッド・コードを生成して、既存のソフトウェアへスレッドを追加しやすくします。インテル・コンパイラーは、現在の業界標準の OpenMP 宣言子のすべてに対応しています。ただし、workshare および OpenMP 宣言子の注釈のある並列実行プログラムのコンパイラーは除きます。

コンパイラーは、ランタイム・ライブラリー・ルーチンおよび環境変数を含む OpenMP C/C++ バージョン 2.5 仕様にインテル独自の拡張機能を提供します。

OpenMP 標準の詳細は、OpenMP Web サイト (http://www.openmp.org) を参照してください。C++ 言語の詳細な仕様については、OpenMP Web サイトで OpenMP 2.5 の仕様を参照してください。

OpenMP による並列処理

OpenMP でコンパイルするには、 OpenMP 宣言子でコードを注釈するプログラムを準備する必要があります。インテル・コンパイラーは、はじめにアプリケーションを処理して、コードのマルチスレッド・バージョンを生成してからコードをコンパイルします。 その出力は、並列領域または構造を実行するスレッドによって実装される並列処理の実行プログラムです。

Windows* における考慮事項

OpenMP 仕様は複数の実装の相互運用性について定義していません。このため、他のコンパイラーでサポートされている OpenMP 実装とインテル・コンパイラー Windows 版でサポートされている OpenMP 実装は相互運用できないことがあります。リンク時または実行時の問題を回避するには、次のガイドラインに従うようにしてください。

プロセッサーのランタイムチェック

ループを並列化するとき、インテル・コンパイラーのループ・パラレライザー、OpenMP は指定されたプロセッサー向けの最適なセットの構成を決定しようとします。実行時に、どのプロセッサーの OpenMP がループを最適化すべきかを決定するチェックが行われます。詳細は、IA-32 アーキテクチャー・ベース・システムの「プロセッサー固有のランタイムチェック」を参照してください。