PDC 2008 (10/26)
今週は LAで開催されているPDC 2008に参加しているので、出席したセッションについて書きます。
今日はPre Conferenceで、いくつかのテーマについて1日のセッションが開かれています。私は「Concurrent, Multi-core Programming on Windows and .NET」に出席しました。私の並列プログラミングへの興味はLarrabeeのようなGPUが利用できるようになったときに、より汎用的なグラフィックスのための並列プログラミングにはどのようなモデル、アーキテクチャ、ツールが必要なのかというものです。
アジェンダは以下のとおりです。
- Overview and Architecture
- Mechanics for Asynchrony
- Topics in Synchronization
- Synchronization Best Practive
- Designs and Algorithms
- .NET Framework 4.0
- Wrap-up
いちばん興味深かったのは、David Callahanによる「Overview and Architectur」と後半の.NET Framework 4.0でした。「Overview and Architecture」メニーコアの例としてLarabeeも紹介されていました。CPUが増えても早くはならないので、スケーラブルな並列化を行わないとフリーラン地には戻れないと指摘していました。コンカレント プログラミングと並列(パラレル)プログラミングの違いは、前者は独立したリクエストで後者はあるタスクを可能なコンカレント実行への分解(タスクのスケジューリング)だとのことです。また、並列化のモデルには「タスク対データ」、「構造化マルチスレッド」、「ワークシェアリング」(例えばOpenML)、データフロー(例えばStreming)があります。並列コンピューティングのためにはスケーリングのための順序の分解→データに焦点を当てた構造化マルチスレッドを行う必要がある。
「.NET Framework 4.0」では並列プログラミング用の新機能が紹介されました。
- mscorelib.dll, System.dll, System.Core.dllの並列化。これにより既存のアプリも少しは並列化が期待できる。
- ThreadPoolランタイムの改善と新機能。
- 新しい並列プログラミング モデル
- PLONQ(Concurrent Data Structureで.AsParellelを指定すればLINQが並列化)
- Task Parallel Library (Parallelクラス、Parallel.For() の様なメソッドを持つ)
- Coordinate Data Structures(ConcurrentStack, ConcurrentQueue, ConcurrentDictionaryなど)
Win32には「Parallel Pattern Library」が追加されるとのことです。
最後に、全てが並列化できるわけではないが、並列化はチャンスであり危機なので、アーキテクトやシニアな開発者は頭を働かせて、実験を始めてくださいと締めくくりました。
ちなみに講演者の一人であるJoe Duffyは「Concurrent Programming on Windows (Microsoft .NET Development Series) 」の著者です。
この記事はマイクロソフトの公式アナウンスではありません。