C/C++プログラマーのための
OpenMP 並列プログラミング [第2版]
- 著者 菅原 清文
- 判型 B5変型, 336頁
- 本体価格 4,200円
- ISBN 978-4-87783-199-8
2012年7月10日 初版第1刷発行
本書の記載内容について訂正があります。
こちらを参照してください。
本書について
アプリケーションの並列化がさまざまな分野で求められる昨今、開発者に求められる並列プログラミングのスキルは科学技術計算の分野のみならず、一般のコンシューマーアプリケーションや自社開発のアプリケーションでも求められるようになっています。
WindowsやLinuxをはじめとする近年のオペレーティングシステムは、マルチプロセスおよびマルチスレッドのプログラミング環境をサポートしていますが、残念ながらそれらは統一されたものではありません。開発者はそれぞれの環境ごとにAPIなどの使い方を学習し、OSごとに異なるプログラムを開発しなければいけません。マルチスレッド環境以前にも皆さんはGUIのプログラミングなどで同じことを経験していることでしょう。プログラムがさらに複雑になるのは大変なことです。
異なるOS環境で同じプログラミング手法が利用できればそれに越したことはありません。OpenMPはそのような開発環境を提供する優れたプログラミング手法であり、スレッド化に際しプログラムの構造を変えることなく容易にマルチスレッド機能を実装することができます。
本書はC/C++プログラマー向けのOpenMP入門書として書かれています。皆さんが利用しているコンパイラーはすでにOpenMPをサポートしているかもしれません。ぜひこの機会にOpenMPプログラミングを始めてください。
2009年7月に本書初版が出版された後、2011年7月にOpenMP 3.1の仕様が公開されました。本書では第2版(増補版)として付録Fに新しい仕様の説明を加えるとともに、一部改訂しています。
目 次
- 第1章 並列プログラミングを始めるにあたり
- 1-1 なぜ並列プログラミングが必須となるのか
- 1-2 マルチプロセスとマルチスレッド
- 1-3 コンカレンシー(並行性)とパラレリズム(並列性)
- 1-4 スレッドプログラミングと抽象化
- 第2章 OpenMPとは
- 2-1 OpenMPの経緯
- 2-2 OpenMPプログラミングを始める前に
- 2-3 OpenMPの仕組み
- 2-4 OpenMPプログラミングを始める
- 第3章 OpenMPを使ってみる
- 3-1 OpenMPで並列領域を定義する必須要件
- 3-2 並列領域とスレッド数
- 3-3 OpenMPの並列領域の範囲
- 3-4 データスコープとデータ属性
- 3-5 作業の分割とワークシェア
- 3-6 同期
- 3-7 タスク制御
- 第4章 OpenMP指示文
- 4-1 OpenMP標準指示文
- 4-2 インテルコンパイラー拡張指示文
- 第5章 OpenMP APIと環境変数
- 5-1 OpenMP環境変数
- 5-2 OpenMPランタイムAPI
- 第6章 OpenMPの活用例
- 6-1 forループ構文を利用するうえでの注意点
- 6-2 並列領域のネスト
- 6-3 タスク制御の例
- 6-4 OpenMPスレッドとアフィニティー
- 6-5 OpenMPスレッドとハイパースレッディング
- 6-6 プロセッサーに依存するスレッド固有のペナルティー
- 第7章 OpenMPスレッドの最適化とデバッグツール
- 7-1 OpenMPスレッドプログラムのデバッグ
- 7-2 OpenMPスレッドプログラムのパフォーマンスチューニング
- 第8章 他のAPIやツールとの共存
- 8-1 Windows APIとの共存
- 8-2 MPIとの共存
- 8-3 他のモジュールを呼び出してリンクする場合
- 付 録
- 付録A OpenMP宣言子一覧
- 付録B OpenMP API一覧
- 付録C OpenMP環境変数一覧
- 付録D インテルコンパイラーのOpenMP関連コンパイラーオプション
- 付録E OpenMP 2.5と3.0の仕様の違い
- 付録F OpenMP 3.1でサポートされる機能
■正誤表■ 2017/7/4
本文の内容に誤りがありました。 お詫びして訂正いたします。
p.295 のタイム API の説明
誤
void omp_get_wtime(void)
void omp_get_wtick(void)
正
double omp_get_wtime(void)
double omp_get_wtick(void)