Cilk がやってきた
C/C++プログラマーのための並列プログラミング言語
- 菅原 清文 著
- 判型 A5判, 272頁,
- 本体価格 2,800円
- ISBN 978-4-87783-260-5
本書について
並列プログラミングを容易にするため様々なプログラミングモデルが開発されてきました。それらはスレッド制御にかかわる処理を抽象化することで開発者の負担を減らし、効率よくプロセッサーコアに負荷分散することを目標にしています。
OpenMPによるプログラムの並列化は優れた抽象化技術であり、多くの技術者に利用されていますが、高度な並列指向の下で記述されたアルゴリズム(例えば再帰呼び出しを含む)を並列に実行するには、実装が困難もしくは十分なスケーラビリティーを達成できない事があります。
インテルCilk Plusはインテルコンパイラーに実装される並列プログラミング言語機能であり、現時点で並列プログラムを導入する最も簡単な方法です。インテルCilk Plusは、スレッドプログラミングにける抽象化をさらに高め、並列指向のアルゴリズムを適切に並列化することを目的としています。インテルCilk Plusを十分に活用するにはアルゴリズムが並列指向のもとに記述されていると、より大きな効果を得られます。本書では並列プログラミングに必要な並列指向についても触れています。
本書はインテルCilk Plus入門書として書かれています。Cilk Plusはインテルコンパイラーでのみ実装されますが、現在Windows、LinuxそしてMac OS X環境で利用可能です。ぜひこの機会にCilk Plusプログラミングを体験してください。
目 次
- 第1章 インテルCilk Plusとは
- 1-1 歴史と背景
- 1-2 Cilkプログラミングを始める前に
- 1-3 Cilkに関連するコンパイラーのファイル
- 1-4 Cilk Plusでできること
- 1-5 Cilkの特徴
- 1-6 Cilk Plusの言語機能
- 1-7 Cilkの仕組み
- 1-8 CilkとOpenMPによる並列化の手順と性能比較
- 第2章 Cilkプログラミングで知らなければいけないこと
- 2-1 Cilkのキーワード
- 2-2 CilkのランタイムAPI
- 2-3 Cilkの環境変数
- 2-4 Cilk Plusに関連するコンパイラーオプション
- 2-5 Cilkのincludeファイル
- 第3章 レデューサー
- 3-1 レデューサーの利用例
- 3-2 レデューサーの動作
- 3-3 C++言語向けレデューサー・ライブラリー
- 3-4 C言語向けレデューサー・ライブラリー
- 3-5 レデューサーの利用例
- 3-6 カスタムレデューサーの作成
- 第4章 Cilkプログラムの実行モデル
- 4-1 ストランド
- 4-2 ワークとスパン
- 4-3 ワーカーへのストランドの割り当て
- 4-4 2つのcilk_forループの構造
- 4-5 cilk_for本体の実装
- 4-6 cilk_forの要件と制限
- 4-7 cilk_forの粒度
- 4-8 例外処理
- 4-9 他の並列化手法との共存
- 4-10 マイクロソフトFoundation Classとの共存(Windowsのみ)
- 第5章 競合とロック
- 5-1 Cilkプログラムにおける競合
- 5-2 データ競合を解決する
- 5-3 ロックに関する考察
- 5-4 ロックの問題
- 第6章 Cilkプログラミングを始める
- 6-1 Cilkプログラミング作業の流れ
- 6-2 既存のコードの並列化可能な場所を探す
- 6-3 マルチスレッド固有の問題を見つける
- 6-4 Cilkキーワードやレデューサーを利用して並列化と同期を実装する
- 6-5 デバッグを行う
- 6-6 性能を評価する
- 6-7 高度な並列化の実装
- 第7章 Cilkプログラムのデバッグと最適化
- 7-1 インテルコンパイラーのスタティックセキュリティー解析機能を利用する
- 7-2 Cilkプログラムのデバッグ
- 7-3 Cilkプログラムの最適化
- 第8章 Cilk Plusのその他の機能
- 8-1 配列表記(Array Notation)
- 8-2 要素関数(エレメント関数)
- 8-3 SIMDプラグマ
- 第9章 Cilkのサンプルコード
- 9-1 素数を求めるサンプルを拡張する
- 9-2 クイックソート
- 9-3 ハノイの塔
- 9-4 レガシーコードに再帰呼び出しを実装する
- 第10章 Cilkのバージョン間の相違
- 10-1 ファイル名の拡張子
- 10-2 コンパイラーオプション
- 10-3 事前定義マクロ
- 10-4 includeファイル
- 10-5 ランタイムAPI
- 10-6 環境変数
- 10-7 mainルーチンの定義
- 10-8 Cilkキーワード
- 10-9 Cilkコンテキスト
- 10-10 Cilkリンク
- 10-11 Cilkscreenとcilkviewのサポート
- 10-12 Cilk++からCilk Plusへの移行例
- 付 録
- 付録A Cilkの関連する情報
- 付録B Cilkのレデューサーに関する情報
- 付録C サンプルコードに関する情報
- 付録D 用語集
本書サポートページ
サンプルコードのダウンロード等は、本書のサポートページを参照してください。