PDC 2009 (Nov. 16)

今年もロスアンジェルス コンベンションセンターでPDC 2009が開催されています。今日はワークショップがあり、私は「Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism」に参加しました。

PDC09 092

アジェンダ

  1. 並列プログラミング概要 by Herb Sutter
  2. 並列プログラミングのパターン入門 by Ade Muller
  3. Visual Studio 2010での並列プログラミングのパターンの適用 by Stephen Toub
  4. HPCにおける並列プログラミングのパターン by Richard Ciapala
  5. パネル

並列プログラミング概要 by Herb Sutter

  • ムーアの配当がクロックからコアに映ったことを指摘し、Nコアにスケーラブルなプログラミングの困難さを説明。
  • ソフトウェアの波(GUI、オブジェクト、ガベージコレクション、ジェネリクス、ネット、並列)は1958年から73年に生まれているが、1990年代から00年代まで待って、成熟したエコシステムになるまで5年以上かかっている。

PDC09 094

  • 自動並列や関数言語は重要な弾だが、まだ実用化していない。
  • 並列評価のためのフレームワーク、夜明けのための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 というドキュメントがダウンロードできます(英語)。彼のセッションの後は質問者が多数来て質問していました(壇上にいる人ではなく、写真の真ん中でこちらを向いている人)。

PDC09 098

HPCにおける並列プログラミングのパターン by Richard Ciapala

HPC Server 2008 R2の概要と、フォーク/ジョインのプログラミング、SOAアプリケーション(WCP)のプログラミングを説明していました。

PDC09 099

パネル

ほとんどが参加者からの質問とパネラーの回答という、質疑応答でした。私もLarrabeeのサポートを聞いてみましたが、日本人にはつらいパターンです...

  • 並列プログラミングでのベクトル化?フィードバックをください
  • Larrabeeのサポート?今のところない
  • ASP.NET?
  • 例外処理?
  • Silverlightの並列サポート?今のところない
  • OpenCL サポート?
  • UIスレッドの改善 ?
  • STM.NET ?
  • 並列デバッガーによるユニットテストフレームワーク?

PDC09 100

左から Ade Miller, Stepen Toub, Richard Ciapala

やはりツール・ランタイムの開発者とアプリケーション開発者が直接コミュニケーションして、意見を言い合えるというのは素晴らしいですね。スピーカーたちもフィードバックをすごく欲しがっていました。日本でもTech Days 2010を開催しますが、言葉の壁と距離の壁があり、開発者に直接来てもらえるわけではないので、このようなディスカッションは難しいです。