- アプリケーションの並列化がさまざまな分野で求められる昨今、開発者に求められる並列プログラミングのスキルは科学技術計算の分野のみならず、一般のコンシューマーアプリケーションや自社開発のアプリケーションでも求められるようになっています。
WindowsやLinuxをはじめとする近年のオペレーティングシステムは、マルチプロセスおよびマルチスレッドのプログラミング環境をサポートしていますが、残念ながらそれらは統一されたものではなく独自に実装されています。開発者はそれぞれの環境ごとにAPIなどの使い方を学習し、OSごとに異なるプログラムを開発しなければいけません。マルチスレッド環境以前にも皆さんはGUIのプログラミングなどで同じことを経験していることでしょう。プログラムがさらに複雑になるのは大変なことです。
異なるOS環境で同じプログラミング手法が利用できればそれに越したことはありません。OpenMPはそのような開発環境を提供する優れたプログラミング手法であり、スレッド化に際しプログラムの構造を変えることなく容易にマルチスレッド機能を実装することができます。
本書はC/C++プログラマー向けのOpenMP入門書として書かれています。皆さんが利用しているコンパイラーはすでにOpenMPをサポートしているかもしれません。ぜひこの機会にOpenMPプログラミングを始めてください。
C/C++プログラマーのためのOpenMP並列プログラミング|菅原清文|カットシステム
- shinanobook.com HOME >
- C/C++プログラマーのためのOpenMP並列プログラミング
第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の仕様の違い
ページ先頭へ