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文

ループ内でインデックス変数を操作

ループの終了を操作

PR

秀和システム