OpenMP入門 マルチコアCPU時代の並列プログラミング
概 要
マルチコアCPUの性能を100%ひきだす並列プログラミング「OpenMP」の入門書です。OpenMPを利用すると、少しの指示文を追加するだけで普通のプログラムを並列プログラムに変換することができます。また、プラットフォームにも依存せず、コンパイラがOpenMP対応であればどのような環境でも使用できます。本書では、C/C++言語プログラマ向けに、簡単なプログラム例、並列化の仕組み、ほかの並列化との比較、OpenMPのリファレンスなどを豊富なサンプルを用意し、初心者にもわかるようにやさしく解説しています。OpenMP特有な機能についても解説しているので、並列化プログラミングに習熟したプログラマにも有益な内容です。
| 著者 | 北山洋幸 |
| 価格 | 円(税込)(本体3200円) |
| ISBN | 978-4-7980-2343-4 |
| 発売日 | 2009/8/22 |
| 判型 | B5変 |
| 色数 | 1色 |
| ページ数 | 360 |
| CD/DVD | - |
| 対象読者 | 初級 |
| シリーズ | - |
目次
Chapter 01 OpenMP概論
1-1 逐次処理プログラムと並列処理プログラム
1-2 並列化の分類
分散・共有メモリによる分類
メモリ共有型を分類
プロセス・スレッドによる分類
命令・データによる分類
1-3 何故並列化するか
1-4 並列化のアキレス腱
Chapter 02 はじめてのプログラム
2-1 初めてのプログラム
OpenMPに対応したプログラムのコンパイル方法
2-2 並列化数を明示的に指定
2-3 ループを並列化
2-4 セクションで並列化
2-5 指示文
2-6 条件コンパイル
2-7 まとめ
Chapter 03 共有変数とプライベート変数
3-1 共有変数
3-2 プライベート変数
3-3 ループのインデックス
Chapter 04 簡単な具体的例
4-1 ビットマップファイルの構造
4-2 逐次プログラム
4-3 OpenMPループプログラム
4-4 逐次プログラミングとOpenMPループプログラムのベンチマーク
4-5 OpenMPセクションプログラム
4-6 スレッドプログラム
4-7 ベンチマーク
Chapter 05 指示文と実行時ライブラリ
5-1 指示文
parallel構文
for構文
sections構文
single構文
parallel for構文
parallel sections構文
master構文
critical構文
barrier構文
atomic構文
flush構文
ordered構文
threadprivate構文
5-2 指示句
default指示句
shared指示句
private指示句
firstprivate指示句
lastprivate指示句
reduction指示句
copyin指示句
copyprivate指示句
if指示句
nowait指示句
num_threads指示句
schedule指示句
5-3 実行時ライブラリ
omp_get_num_procs
omp_set_dynamic
omp_get_dynamic
omp_set_num_threads
omp_get_num_threads
omp_get_max_threads
omp_get_thread_num
omp_in_parallel
5-4 環境変数
OMP_SCHEDULE
OMP_NUM_THREADS
OMP_DYNAMIC
Chapter 06 OpenMPで音響処理プログラム
6-1 WAVファイルの基礎
6-2 WAVファイル処理用クラスの開発
6-3 ステレオWAVファイルの左チャンネルの音を消す
6-4 ベンチマークとその環境
テストマシン
テストファイル
6-5 左右チャンネルを合成してモノラル化
6-6 エコー
6-7 カラオケ化(逐次,OpenMP,Sections,Simd,スレッド)
for指示文で並列化
sections指示文で並列化
sections指示文で並列化したプログラムをスレッド化
SIMD命令で高速化
SSE3命令で高速化
Chapter 07 OpenMPで画像処理プログラム
7-1 緑成分だけを抜き出す
7-2 ベンチマークとその環境
テストマシン
テストファイル
7-3 モノクローム変換
7-4 水平エッジの検出
7-5 水平エッジの検出・その2
7-6 垂直エッジの検出
7-7 ラプラシアンフィルタ
7-8 エンボス
7-9 エッジを強調(RGBを独立して処理)
コア数による逐次処理とOpenMP比較
プログラム拡張
7-10 ソフトフォーカス
7-11 2つの画像の差分
7-12 2つの画像の合成
Chapter 08 同期・非同期・性能改善
8-1 性能改善
スレッドの起動・消滅を低減
8-2 非同期処理
非同期で高速処理
8-3 同期処理
1~99まで総和を求める
1~99まで総和を求める・性能改善版
最小値と最大値(正常動作しない例)
最小値と最大値(正常動作する例)
差分計算前に同期が取れていないため誤動作
差分計算前に同期を取る
最小値と最大値を異なる方法で求める
Chapter 09 並列化困難なコード
9-1 ループが入れ子
並列化されるループは?
入れ子のループのどちらを並列化するか?
9-2 データ依存のあるループ
9-3 並列化が許可されないループ
break文
goto文
continue文
exit文
ループ内でインデックス変数を操作
ループの終了を操作

