OpenMP*

このページでは OpenMP に関する記事や参考資料へのリンクをまとめています。

概要

OpenMP* サポートの概要

インテル® コンパイラーは、OpenMP 4.0 API 仕様のいくつかの機能をサポートしています。OpenMP 言語仕様に関する詳細は、「OpenMP ウェブサイト (openmp.org) から「OpenMP Specifications」をクリックして「OpenMP Version 4.0 specification」をご覧ください。このページの OpenMP 言語特性の記述は、仕様書に定義される用語を用いています。

OpenMP API は、次の主要機能を備えたシンメトリック・マルチプロセシング(SMP)を提供します:

  • 反復空間の分割、データの共有、スレッドの生成とスケジュール、または同期など低レベルの細かい実装からユーザーを解放します。
  • インテル® ハイパースレッディング・テクノロジー(インテル® HT テクノロジー)を含むすべてのインテル・アーキテクチャー・プロセッサー上で、共有メモリー型マルチプロセッサーとマルチコア・プロセッサーによるパフォーマンスの利点を提供します。
  • インテル® Xeon Phi™ コプロセッサーのサポートを提供します。

既存のソフトウェアに簡単にスレッドを追加するため、ソースコードに配置された OpenMP プラグマに基づいて、コンパイラーがマルチスレッド・コードを生成する変換を行います。インテル® コンパイラーは、並列プログラムをコンパイルし業界標準である OpenMP プラグマのほとんどをサポートします。

コンパイラーは、ランタイム・ライブラリーと環境変数を含め、OpenMP 仕様に加えインテル固有の拡張機能を提供します。インテル固有拡張は、インテル・コンパイラーのみでサポートされます。コンパイラーのオプションは、OpenMP* オプション・クイック・リファレンスにまとめられています。

OpenMP による並列処理

OpenMP API を使用してコンパイルするにはソースコードにプラグマを追加します。インテル・コンパイラーは、追加されたプラグマを解析し、並列領域や構文を実行するスレッドによって実装されるマルチスレッド・バージョンを生成します。

他のコンパイラーを利用する

OpenMP 仕様は複数の実装における相互運用性を定義していないため、他のコンパイラーでサポートされる OpenMP 実装とインテル・コンパイラーの実装には相互運用性が無いことがあります。そのため、特定のコンパイラーでアプリケーション全体をコンパイルおよびビルドを行っている場合、同じソースを異なるコンパイラーでコンパイルしてリンクしても OpenMP のソース互換性の違いから、並列実行した結果が異なる恐れがあることに留意してください。

インテル・コンパイラーは 2 つの OpenMP ライブラリーを提供します。詳しくは、コンパイラーのドキュメント「OpenMP Source Compatibility and Interoperability with Other Compilers」 の記述をご覧ください。

利用する

OpenMP は、以下のインテルソフトウェア開発製品でサポートされます:

インテル® コンパイラー 14.0 でサポートされる OpenMP の機能については https://software.intel.com/en-us/node/583567 (英語) をご覧ください。

これらの製品の無料評価版はこちらで入手できます。

OpenMP.org のウェブサイトでは、OpenMPをサポートする他のコンパイラーなど多くの情報が提供されています。

学習する

技術記事

入門記事

中上級者向け記事

インテル® Xeon Phi™ 関連の記事

MPIとの併用に関する記事

Fortran 向け記事

OpenMP パフォーマンス解析

サポート

OpenMP* に関連するリンク集


コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。