PDC 2009 (Nov. 19)
PDC 2009 も最終日です。今日はキーノートもなく、以下のセッションに参加しました。
- [SVR10]Lighting up Windows Server 2008 R2 Using the ConcRT on UMS
- [VTL02]Axum: A .NET Language for Safe and Scalable Concurrency
- [CL03]DirectX11 DirectCompute
- [CL35]Custom Behaviors for Advanced Microsoft Silverlight UI Effects
- [CL24]XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools
Lighting up Windows Server 2008 R2 Using the ConcRT on UMS
Agenda
- アーキテクチャ概要
- タスク
- 協調型ブロック
- UMS(User Mode Scheduling)
タスク スケジューラーとリソースマネージャについて(性能、生産性、プラットフォーム)。
UMSスレッドをユーザーが使えることでプラットフォームを改善。UMSによってアプリは、OSに依存せずに、スケジューラーのふるまいを定義できる
UMSをConcRT(同時実行ランタイム)が使うことによって、次のことが可能になる。
- 細粒度の並列化
- より決定論的なふるまい
- より優れたキャッシュの局所性
タスクグループによってスレッド アフィニティを管理できる。タスクはスケジューラーによって実行するが、ワークスチーリング キューが負荷バランスをとる。
64以上のプロセッサーをサポート(64ビットOSの場合):SetThreadIdealProcessorEx
OpenMPはC/Fortranに、MSの並列ライブラリーはC++に焦点を当てている。
現在開発中のソフトウェアが10年後にも動作しているとしたら、それは80コアのPCで動作しているかもしれない。だから今から始める必要がある?
Axum: A .NET Language for Safe and Scalable Concurrency by Niklas Gustafsson
並列プログラミングには見えない天井があるので(複雑さ・性能・スケーラビリティ)、新しいモデルが必要。Axumは並列のための新しいプログラミング モデルで、共有メモリーと純粋メッセージ渡しとのバランスをとることができる。
Axumのコンセプト
- 「チャンネル」は2つのエージェント間のメッセージを指揮するポートを定義
- 「エージェント」はスレッドと同じようなアクティブなコンポーネントだが、共有排他状態へのアクセスが制限されている。チャンネル経由でメッセージを送る。
- 「ドメイン」は複数のエージェントが共有する状態を定義。エージェントはドメイン内にホストされる。
- 「スキーマ」はペイロードを定義。
- 「プロトコル」はメッセージの正しい順序を定義。
- 「データフロー ネットワーク」は演算間でデータを伝搬させる。
ダウンロード:https://msdn.microsoft.com/devlabs/
ブログ:https://blogs.msdn.com/maestroteam/
DirectCompute Capturing the Teraflops
概要
- GPUをCPUのように記述
- 問題セットの定義
- DirectComputeの使い方
- データの管理
GPUとCPU
CPU | GPU |
4コア | 32 コア |
4Float 幅 SIMD | 32 Float 幅 SIMD |
3GHz | 1GHz |
48-96GFlops | 1 TeraFlops |
2x Hyper Thread | 32x “HyperThread” |
64kB $L1/core | 64kB $L1/core |
20GB/s to Memory | 150GB/s to Memory |
$200 | $200 |
200W | 200W |
GPUはデータ並列プロセッサー、CPUは25GFlops GPUは700GFLops
DirectComputeの使い方
- DirectComuoteの初期化
- .hlslにGPUコードを作成
- DirectX コンパイラーを使ってコンパイル
- そのコードをGPUにロード
- GPUバッファをセットアップ、アクセス用にビューをセットアップ
- データ ビューをカレントにする
- GPUでコードを実行
- データをCPUメモリーにコピー
HLSLは最も広く使われいているデータ並列プログラミング言語。
DirectX Resource Type
- Buffer Resource Type: 構造化データ
- Image Media Resource Type: テクスチャ、1D, 2D, 3D, キューブ、配列
リソースビュー:リソースバッファのデータにアクセスするメカニズム
- GroupSharedレジスター:新しいレジスター
- 一時レジスターは、汎用レジスター
データ並列I/O:1600のアクティブなスレッドのI/Oは容易ではない。
ComputeShader 4.* vs 5.0
ComputeShader 4.*では倍精度は扱わない、5.0から。
Custom Behaviors for Advanced Microsoft Silverlight UI Effects
トリガー、アクション、ビヘイビアーのカスタマイズ
Public class Grow : TrigggerAction<FrameworkElement>
{
protected override Invoke(object parameter){
CompositTransform transform = ....
}
https://blogs.msdn.com/expression/ https://
XAML Futures in Microsoft .NET Framework, Microsoft Silverlight and Tools
現在注力しているのは
- ランタイム構文解析
- 静的分析
- コンパイル時
- デザイン時
- ローカリゼーション
XAMLデータモデル=Object - Member - Value (O-M-V) + Type
XAMLノード ストリーム:例えば、XAMLpadでイベントハンドルが可能に
- IXamlTyoeResolver,
- IAmbientProvider
- IXamlSchemaContextProvider
- IRootObjectProvider
- IXamlNameResolver
ランタイム構文解析(パーサー)の改善
.NET4 はSystem.Xaml.dllを使用
Silverlight 4にはまだ XamlScemaContext が必要 https:// アナウンス:XAML Toolkit http://code.msdn.microsoft.com/xaml/
XAMLDom: XDocumentのXLinqのようなもの
XAML FxCop
XAMLローカリゼーション
- x:Uid か {MarkupExtension}か?
- Page.xaml.resx のような形でローカライズできることを考えている
- XAML Toolkit で公開する
お願い
- .NET 4 Beta2 +System.Xaml.dll で初めて下さい
- XAML Toolkit CTP をダウンロードして下さい
- XAML改善のためフィードバックを下さい