インテル®コンパイラー OpenMP*入門 デュアルコア・マルチコア対応アプリケーション開発@ <<  13  >> 5  .  2     OpenMP*:共有メモリー並列プログラミングAPI OpenMP* は、マルチスレッド並列プログラミングのための API ( Application Programming Interfaceです。 OpenMP* は 1997 年に発表された業界標準規格であり、 多くのハードウェアおよびソフトウェア・ベンダーが参加する 非営利団体「OpenMP Architecture Review Board によって管理されています。OpenMP* APIは、Linux*お よび Windows* システムで利用可能です。OpenMP* は、C/C++ や Fortran* のようなコンパイラー言語ではなく、コン パイラーに対する並列処理の機能拡張を規定したものです。したがって、OpenMP* を利用するためには、「インテル® コンパイラー バージョン 9.0」のような OpenMP* をサポートするコンパイラーが必要になります。OpenMP*の詳細に ついては、OpenMP*のホームページ http://www.openmp.org/ に詳細な情報があります。 最新の OpenMP* のリリー スは、2005 年 5 月に発表された OpenMP* 2.5 であり、この仕様で初めて C/C++ と Fortran* の双方の規格が 統合 されました。 OpenMP* 開発とリリースの歴史 C/C++ や Fortran* には並列処理のための API が 無かったために、それを補うものとして規定されたのが OpenMP* であるとも言えます。OpenMP* は C/C++ や Fortran* の言語規格に準拠しているため、OpenMP* を利用してもプログ ラムの移植性や互換性を損なうことなく、 並列処理を容易に適用することができます。 プログラムの開発者は、コードの設計時から OpenMP* を利用した並列処理を実装することも、すでに開発された プログラムを、OpenMP* を利用して段階的に並列化することも可能です。実際に OpenMP* での並列化を適用して いて計算などが不正になった場合、簡単にその部分だけを逐次実行に切り替えることができますから、プログラムの デバッグが非常に容易です。さらに、 先に説明した自動並列化と OpenMP* を併用したり、プログラムの一部だけを OpenMP* で並列化したりして、 他の部分を自動並列化することもできます。 OpenMP* のアーキテクチャーは以下に示します。 OpenMP* アーキテクチャー 1997 1998 OpenMP* C/C++ 1.0 1999 OpenMP* Fortran 1.1 2000 2002 OpenMP* C/C++ 2.0 2005 OpenMP* Fortran C/C++ 2.5 OpenMP* Fortran 1.0 OpenMP* Fortran 2.0 エンドユーザー アプリケーション 宣言子 OpenMP*ライブラリー 環境変数 実行時ライブラリー スレッドライブラリー/オペレーティング・システム ユーザー層 プログラミング層 (OpenMP* API) システム層 API はソフトウェアを開発する際に使用できる命令や関数群、あるいは、それらを利用するプログラム上の規約を総称したものです。 OpenMP* API では、コン パイラー宣言子の規定と OpenMP* ライブラリー、および環境変数が API として規定されています。