PDC 2009 (Nov. 16)
今年もロスアンジェルス コンベンションセンターでPDC 2009が開催されています。今日はワークショップがあり、私は「Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism」に参加しました。
アジェンダ
- 並列プログラミング概要 by Herb Sutter
- 並列プログラミングのパターン入門 by Ade Muller
- Visual Studio 2010での並列プログラミングのパターンの適用 by Stephen Toub
- HPCにおける並列プログラミングのパターン by Richard Ciapala
- パネル
並列プログラミング概要 by Herb Sutter
- ムーアの配当がクロックからコアに映ったことを指摘し、Nコアにスケーラブルなプログラミングの困難さを説明。
- ソフトウェアの波(GUI、オブジェクト、ガベージコレクション、ジェネリクス、ネット、並列)は1958年から73年に生まれているが、1990年代から00年代まで待って、成熟したエコシステムになるまで5年以上かかっている。
- 自動並列や関数言語は重要な弾だが、まだ実用化していない。
- 並列評価のためのフレームワーク、夜明けのための3本の柱
- 非同期エージェント経由での分離
- 並列コレクション経由でのスケーラビリティ
- 安全な共有リソース経由での一貫性
- 将来のメニーコアは複雑なコア、いくつ同時実行できるかどうかは不明。決め打ちはできない
- デザインパターンとは、あるコンテキストで、ある問題への、一つの解決策
並列プログラミングのパターン入門 by Ade Muller
並列のためのパターン
- フォーク/ジョイン
- ループ
- 分割とConcuer
- プロデューサー/コンシューマ
- パイプライン
- 非同期エージェント
サポート パターン(Gang of Four パターン)
- ファサードとリモートファサード
- デコレーター
- レポジトリー
- 共有キュー(タスク キュー)
さらに詳細は
- 書籍
- Patterns for Parallel Programming
- Design Patterns
- Head First Design Patterns
- Pattern of Enterprise Application Architecture
- ParaPLop (Workshop on Parallel Programming Patterns)
Visual Studio 2010での並列プログラミングのパターンの適用 by Stephen Toub
実際にVisual Studio 2010でコーディングしながらのデモがほとんどでした。
- 並列ループ
- フォーク/ジョイン
- プロデューサー/コンシューマー
- MapReduce(PLINQ)
- アンチパターン(ロックコンボイ、デッドロック)
彼の書いた、Patterns of Parallel Programming with .NET というドキュメントがダウンロードできます(英語)。彼のセッションの後は質問者が多数来て質問していました(壇上にいる人ではなく、写真の真ん中でこちらを向いている人)。
HPCにおける並列プログラミングのパターン by Richard Ciapala
HPC Server 2008 R2の概要と、フォーク/ジョインのプログラミング、SOAアプリケーション(WCP)のプログラミングを説明していました。
パネル
ほとんどが参加者からの質問とパネラーの回答という、質疑応答でした。私もLarrabeeのサポートを聞いてみましたが、日本人にはつらいパターンです...
- 並列プログラミングでのベクトル化?フィードバックをください
- Larrabeeのサポート?今のところない
- ASP.NET?
- 例外処理?
- Silverlightの並列サポート?今のところない
- OpenCL サポート?
- UIスレッドの改善 ?
- STM.NET ?
- 並列デバッガーによるユニットテストフレームワーク?
左から Ade Miller, Stepen Toub, Richard Ciapala
やはりツール・ランタイムの開発者とアプリケーション開発者が直接コミュニケーションして、意見を言い合えるというのは素晴らしいですね。スピーカーたちもフィードバックをすごく欲しがっていました。日本でもTech Days 2010を開催しますが、言葉の壁と距離の壁があり、開発者に直接来てもらえるわけではないので、このようなディスカッションは難しいです。