川西 裕幸 Platform Evangelist マイクロソフト株式会社 プラットフォーム&デベロッパー統括本部 本講演に含まれるのは デスクトップアプリにおけるスケーラブルな 並列化の必然性 並列プログラミングを援助するVS2010の機能 とデモ マネージ ネイティブ 本講演に含まれないのは HPC OpenMP F# デッドロック 並列化用の銀の弾 「すなわち、1975年までには、最小コストで得ら れる集積回路の部品数は6万5千に達するであろう。 私は、それほどにも大規模な回路が1個のウェハー 上に構築できるようになると信じている。」 -- Intel 共同創業者 Gordon Moore in 1965 2007年IDFでアナウンス された4コアNehalem: 7億31百万トランジスタ コア HyperThread スレッド 周波数 (GHz) Pentium 4 1 〇 2 3.4 Core2 Duo 2 X 2 3.0 Core i7 4 〇 8 3.2 CPU 将来のプロセッサ: クロック数ではなく、コアが増える 並列負荷に最適化 アムダールの法則 どんなに多くのプロセッサーがあっても、 コンピュータ プログラムは並列で実行しな い(直列)部分の合計より決して速くなる ことはない。 統合ツール プログラミング モデル プログラミング モデル PLINQ スレッド プール データ構造 タスク並列ライブラリ 並行ランタイム プロファイラ 並行性分析 並列パターン ライブラリ データ構造 並列 デバッガー ツール ウィンドウ タスク スケジューラ リソース マネージャ 並行ランタイム タスク スケジューラ リソース マネージャ オペレーティング システム スレッド Key: Managed Library エージェ ントライ ブラリ Native Library Tools CLR スレッド プール グローバル キュー ワーカー スレッド 1 プログラム スレッド … ワーカー スレッド p CLR スレッドプール: ワークスチール グローバル キュー … ローカル キュー ワーカー スレッド 1 … ローカル キュー ワーカー スレッド p タスク 6 タスク 1 タスクプログラム 2 スレッド タスク 3 タスク 5 タスク 4 ThreadPool ThreadPool.QueueUserWorkItem(…); System.Threading.Tasks 開始 Task.StartNew(…); 続ける/待ち/キャンセル 親/子 var p = Task.StartNew(() => { var t = Task.StartNew(…); }); Task t = Task.StartNew(…); 戻り値付きのタスク Task p = t.ContinueWith(…); t.Wait(2000); t.Cancel(); var f = Future.StartNew(() => C()); … int result = f.Value; Parallel クラス 静的 (オーバーロード済み) メソッド タスクと共に作成/動作するヘルパーメソッド 共通パターンのカプセル化 Parallel LINQ-to-Objects (PLINQ) LINQを複数コアに拡張可能に 全ての .NET標準クエリー操作をサポート 既存のLINQモデルへの影響は最少 var q = from p in people.AsParallel() where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd orderby p.Year ascending select p; マネージとネイティブの両方をサポート 1. 並列タスク 2. 並列スタック 伝統的なスレッドもサポート スレッド安全なコレクション フェーズ操作 ConcurrentStack<T> ConcurrentQueue<T> ConcurrentDictionary<TKey,TValue> ワーク交換 BlockingCollection<T> IProducerConsumerCollection<T> 初期化 LazyInit<T> CountdownEvent Barrier ロック ManualResetEventSlim SemaphoreSlim SpinLock SpinWait 統合ツール プログラミング モデル プログラミング モデル PLINQ スレッド プール タスク スケジューラ データ構造 タスク並列ライブラリ 並行ランタイム プロファイラ 並行性分析 並列パターン ライブラリ データ構造 並列 デバッガー ツール ウィンドウ リソース マネージャ 並行ランタイム タスク スケジューラ リソース マネージャ オペレーティング システム スレッド Key: Managed Library エージェ ントライ ブラリ Native Library Tools 重要な概念 動的リソース管理: 実行時の処理リソースで 演算要求を調停 Visual Studio 10 プログラミング モデル 並行ランタイム 並行処理のためのプラットフォーム インフラ 低いオーバーヘッドでスケジュールと負荷バランスを行う 協調ブロッキング 複数のスケジューラー インスタンスをサポート リソース管理 共通リソース管理 スケジューラー間の動的負荷バランシング プラットフォームの拡張性と合成性 ISVやパートナーによる、スケジューラー・リソースマネージャ と並列処理ランタイムとの統合を可能にする オペレーティング システム Visual Studio 10 Programming Model Intel Parallel Studio Threading Building Blocks OpenMP 並行ランタイム 並行処理のためのプラットフォーム インフラ 低いオーバーヘッドでスケジュールと負荷バランスを行う 協調ブロッキング 複数のスケジューラー インスタンスをサポート リソース管理 共通リソース管理 スケジューラー間の動的負荷バランシング プラットフォームの拡張性と合成性 ISVやパートナーによる、スケジューラー・リソースマネー ジャと並列処理ランタイムとの統合を可能にする Operating System まとめ C++での迅速な並行化 Visual Studio 10 プログラミング モデル:非同期エージェント ライブラリ 抽象レベルを上げることによって、並列アプリケーション開発 を単純化 共有状態の代替を提供することによって、並列アプリケーショ ン開発を単純化 開発者に並行アルゴリズムとコンテナを提供することによって、 プラットフォーム性能を解放 並行ランタイム オペレーティング システム ダウンロード Microsoft Parallel Extensions to .NET Framework 3.5, June 2008 CTP PDC 08 PDC 08 Parallelism ブログ Parallel Programming with .NET Daniel Moth © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. 並行処理: 独立な要求 (ほとんどのサーバーアプリ) 並列処理: 1つのタスクを可 能な並行実行に分解 複数ノードの「オーナーシッ プ」を仲裁 並行検索を開始… スレッドの「独立性」をシ ミュレーション タスクをスケジュール化 マルチスレッド、非同期、… 分野 説明 シナリオの例 強制的 データ並列 同じ操作を共通のコレクション/セットに並列 に適用。ループ、データ分割、補正、スキャ ンなど 医療画像 債券価格 タスク並列 タスク並列ライブラリ 並列パターンライブラリ 複数の独立した操作を同時に実行。分割統治 プロセス制御オート 法、タスク、スレッド、フォーク/ジョイン、 メーション OpenMP, クラスターSOA フューチャーなど 共有リソース 並行コンポーネント用のビルディング ブロッ ク。スケーラブルでスレッド安全なコレク ション、ロックなど 協調データ構造中間層の 構成/状態管理 トランザクション メモリー 宣言型データ並列 どの演算を行う必要があるかを、方法なしで 定義。選択、フィルタ、ジョイン、集計、グ ループ化など 統計モデル PLINQ コーディネーション MPI, MPI.net, CCR データを待つ間、動作中の作業によって隠れ オーディオのストリー ていた操作を利用する。非同期I/O、非同期操 ミング ネイティブ エージェントとメッセージング 作点、メッセージ渡しなど Maestro
© Copyright 2024 ExpyDoc