Compartilhar via


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)

PDC09 Nov.19 006

タスク スケジューラーとリソースマネージャについて(性能、生産性、プラットフォーム)。

UMSスレッドをユーザーが使えることでプラットフォームを改善。UMSによってアプリは、OSに依存せずに、スケジューラーのふるまいを定義できる

UMSをConcRT(同時実行ランタイム)が使うことによって、次のことが可能になる。

  • 細粒度の並列化
  • より決定論的なふるまい
  • より優れたキャッシュの局所性

PDC09 Nov.19 009

タスクグループによってスレッド アフィニティを管理できる。タスクはスケジューラーによって実行するが、ワークスチーリング キューが負荷バランスをとる。

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は並列のための新しいプログラミング モデルで、共有メモリーと純粋メッセージ渡しとのバランスをとることができる。

PDC09 Nov.19 010 PDC09 Nov.19 011

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

 

 

 

 

PDC09 Nov.19 012 PDC09 Nov.19 013

GPUはデータ並列プロセッサー、CPUは25GFlops GPUは700GFLops

DirectComputeの使い方

  1. DirectComuoteの初期化
  2. .hlslにGPUコードを作成
  3. DirectX コンパイラーを使ってコンパイル
  4. そのコードをGPUにロード
  5. GPUバッファをセットアップ、アクセス用にビューをセットアップ
  6. データ ビューをカレントにする
  7. GPUでコードを実行
  8. データをCPUメモリーにコピー

HLSLは最も広く使われいているデータ並列プログラミング言語。

DirectX Resource Type

  • Buffer Resource Type: 構造化データ
  • Image Media Resource Type: テクスチャ、1D, 2D, 3D, キューブ、配列

リソースビュー:リソースバッファのデータにアクセスするメカニズム

  • GroupSharedレジスター:新しいレジスター
  • 一時レジスターは、汎用レジスター

データ並列I/O:1600のアクティブなスレッドのI/Oは容易ではない。

PDC09 Nov.19 016

ComputeShader 4.* vs 5.0

ComputeShader 4.*では倍精度は扱わない、5.0から。

PDC09 Nov.19 017

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

現在注力しているのは

  • ランタイム構文解析
  • 静的分析
  • コンパイル時
  • デザイン時
  • ローカリゼーション

PDC09 Nov.19 021

 

 

 

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

PDC09 Nov.19 022

XAMLローカリゼーション

  • x:Uid か {MarkupExtension}か?
  • Page.xaml.resx のような形でローカライズできることを考えている
  • XAML Toolkit で公開する

PDC09 Nov.19 024

お願い

  • .NET 4 Beta2 +System.Xaml.dll で初めて下さい
  • XAML Toolkit CTP をダウンロードして下さい
  • XAML改善のためフィードバックを下さい

PDC09 Nov.19 025