インテル® oneAPI DPC++/C++ コンパイラーは、OpenMP* アプリケーション・プログラミング・インターフェイス (API) バージョン 4.5 を完全にサポートしており、OpenMP* バージョン 5.0 の一部の機能もサポートしています。OpenMP* 仕様の詳細は、OpenMP* ウェブサイトで公開されている仕様 (http://www.openmp.org (英語) の OpenMP* Specifications) を参照してください。このドキュメントでは、OpenMP* の言語特性の説明において、通常この OpenMP* 仕様で定義されている用語を使用しています。
OpenMP* API は、次の主な機能を持った対称型マルチプロセシング (SMP) を提供します。
反復のパーティショニング、データの共用、スレッドの生成、スケジュール、および同期化に関する下位レベルの詳細を処理して、ユーザーの負担を軽減します。
サポートされるすべてのインテル® アーキテクチャー上のインテル® ハイパースレッディング・テクノロジー (インテル® HT テクノロジー) 対応プロセッサーを含む共有メモリーのマルチプロセッサー・システムおよびマルチコア・プロセッサー・システムから優れたパフォーマンスを引き出します。
コンパイラーは、ソースプログラムの OpenMP* プラグマの指定に従ってコード変換を実行し、マルチスレッド・コードを生成して、既存のソフトウェアへスレッドを追加しやすくします。インテル® コンパイラーは、業界標準の OpenMP* プラグマに対応し、並列プログラムをコンパイルします。
コンパイラーは、ランタイム・ライブラリー・ルーチンおよび環境変数を含む OpenMP* 仕様にインテル独自の拡張機能を提供します。コンパイラー・オプションの概要は、OpenMP* オプションのクイック・リファレンスを参照してください。
OpenMP* API を使用してコンパイルするには、コードにプラグマを追加します。インテル® コンパイラーはコードを処理し、マルチスレッド・バージョンを内部的に生成してから、コンパイルして並列領域または構造を実行するスレッドによって実装される並列処理の実行プログラムを生成します。
OpenMP* 仕様は複数の実装の互換性について定義していません。このため、他のコンパイラーでサポートされている OpenMP* 実装とインテル® oneAPI DPC++/C++ コンパイラーでサポートされている OpenMP* 実装は互換性がないことがあります。アプリケーション全体を 1 つのコンパイラーでコンパイルしてビルドしたとしても、異なるコンパイラーでは OpenMP* のソース互換性 (異なるコンパイラーで同じアプリケーション・ソース・セットをリンクして、コンパイルし、期待する並列実行結果を得られること) が提供されないことに注意してください。