Windows HPC Server 20130621

Download Report

Transcript Windows HPC Server 20130621

Windows HPC Server
を使ってみる
2013/6/21
threecourse
1
目次
1. なぜ「Windows HPC Serverによる分散処理計算」
か?
2. Windows HPC Serverによる分散処理環境の構成
3. Windows HPC Serverが行うこと
4. Windows HPC Server 環境構築
5. 分散処理アプリケーションの作成
6. 分散処理アプリケーションの流れ
7. 分散処理アプリケーションのポイント
8. 参考資料
2
なぜ「Windows HPC Serverによる
分散処理計算」か?
保険数理におけるEmbedded Value計算・リスク量計算などにおいて
は、大量のシナリオ・センシティビティによるプロジェクションが求
められます。
1台のPCでは計算速度に限界があるので、複数台PCによる分散処理計
算が必要となってきます。
複数台PCによる分散処理計算の方法の一つとして、Windows HPC
Serverがあります。
その他、Hadoopなどの選択肢もあるようです。
3
Windows HPC Serverによる分散処理環境
の構成
ヘッドノード+ノード(複数)による構成になります。
この他、ファイルを保存するファイルサーバを用意することもありま
す。
• ヘッドノード…ジョブ/タスクの管理を行うPC
• ノード …計算を行うPC
ノード
ノード
ノード
ノード
ノード
ノード
ヘッドノード
4
Windows HPC Serverが行うこと
Windows HPC Serverは、ジョブ/タスクの管理を行ってくれ
ます。
具体的には、以下のようなことを行います。
• タスクを各ノードに割り振る
• ジョブ/タスクが完了したり、失敗したときにそれを通知す
る
ジョブ
ひとかたまりの仕事。ジョブ単位でWindows HPC Serverに
「投げる」ことになります。
1つのジョブは複数のタスクから構成されます。
(例:ある保険種類のプロジェクションの1000シナリオの計
算)
タスク
ジョブを小さく分けたもの。タスク単位で各ノードPCに割り
振られます。
(例:ある保険種類のプロジェクションの1000シナリオのう
ち、各1シナリオの計算)
5
Windows HPC Server 環境構築
1.Windows Azure(Microsoftのクラウドサービス)を使用する方
法
Windows Azure上に、Windows HPC Serverがインストールされた
状態で仮想PCを構築することができます。
以下の資料の前半部に沿うことで、Windows Azure上にWindows
HPC Serverがインストール済みの環境を構築することができます。
(資料のサンプルアプリケーションの代わりに、以下で説明するサン
プルアプリケーションを実行できる)
•
Getting Started with Application Deployment with the Windows
Azure HPC Scheduler
http://msdn.microsoft.com/enus/library/hh560245%28VS.85%29.aspx
6
Windows HPC Server 環境構築(続き)
2.実PCで運用する方法
複数台PCを購入し、それらにWindows HPC Packを導入します。個人
ではちょっと現実的ではないですね。。
7
分散処理アプリケーションの作成
サンプル分散処理アプリケーション
• 100行の数値をインプットとし、各行の数値の2乗平均和を取得す
るアプリケーションを作成します。
ジョブを「各行の数値を2乗すること×100」とし、分散処理実行
させます。その後、結果を取得しクライアント側で平均をとります。
サンプル分散処理アプリケーションの構成
以下のようにプログラムを分割して構成しています。
• SampleClient.exe…クライアントアプリケーション。これを起動
して計算を開始します。
• HPCLib.DLL …分散処理用のライブラリ
• HPCNode.exe …ノードから実行される実行ファイル
SampleClient.exeの部分を変更することで、好きな計算を分散処理に
より行うことができます。
8
分散処理アプリケーションの作成
サンプル分散処理アプリケーションのビルド
• 筆者はVisual Studio 2010 Professionalで開発しましたが、2012
やExpress版でも実行可能と思います。
• 参考資料にある以下SDKのインストールが必要となります。
 HPC Pack 2008 R2 Client Utilities Redistributable Package
with Service Pack 4
 Microsoft HPC Pack 2008 R2 SDK with Service Pack 4
9
分散処理アプリケーションの流れ
準備
• 各ノードPCからも読み書きができる共有フォルダを作成しておきます。
計算の流れ
1. SampleClient.exeを実行します。
2. 共有フォルダ内に一時フォルダを作成し、必要なデータをコピーします。
この中に各ノードPCから実行するためのHPCNode.exeも含めます。
3. Windows HPC ServerにHPCNode.exeを実行するジョブを送信します。
4. Windows HPC Serverから指示を受けた各ノードPCがHPCNode.exeを
実行する。実行結果はファイルとして共有フォルダに保存します。
5. Windows HPC Serverからジョブが終了したという指示を受け取ります。
6. 各ノードPCの実行結果を読み込み、集計して結果を出力します。
7. 一時フォルダを削除します。
他にも、SOA(サービス志向アーキテクチャ)という方法で分散処理を行うこ
ともできます。しかし、学習すべき事項が増えるため、今回はその方法をとっ
ていません。
10
分散処理アプリケーションの流れ
ヘッドノード
3.ジョブ送信
4.ジョブ指示
ノード
共有フォルダ
4.ノード計算実行
分散処理アプ
リケーション
分散処理アプ
リケーション
2.コピー
ノード
4.ノード計算結果保存
ノード
計算結果
11
分散処理アプリケーションの流れ
ヘッドノード
5.ジョブ終了通知
共有フォルダ
分散処理アプ
リケーション
7.削除
ノード
分散処理アプ
リケーション
ノード
6.集計・出力
計算結果
6.ノード計算
結果の取得
ノード
計算結果
12
分散処理アプリケーションのポイント
通常のアプリケーションでは1つのPC内で計算されるため、普通にプ
ログラムを書くことで、メモリ内で情報を受け渡すことができます。
しかし、分散処理アプリケーションでは、別のPCで実行するため、情
報を共有/受け渡すために配慮が必要となります。
13
分散処理アプリケーションのポイント
(つづき)
• データの受け渡し
インプットデータ・計算したデータ等の受け渡しには共有フォルダを
使っています。
計算したデータの受け渡しには、「シリアライズ」というデータを
ファイルとして保存する機能を利用しています。
「シリアライズ」により計算結果を表すクラスをファイルに保存し、
逆(デリシアライズ)によって読み込みます。
14
分散処理アプリケーションのポイント
(つづき)
• ノードからの計算メソッドの実行
ノード用実行ファイルがクライアントのクラスを利用するため、普通
に組むとノード用実行ファイルがクライアントに依存することになり、
ライブラリとして切り出しにくくなります。
ですので、実行すべきクラス・メソッドを文字列で渡し、「リフレク
ション」という機能を使って実行しています。
「リフレクション」を使うと、クラスが定義された実行ファイル・ラ
イブラリをロードし、クラス・メソッド名を文字列で指定することで
メソッドを実行することができます。
15
参考資料
Windows HPC Serverで分散処理を行うアプリケーションを作成するのに必
要なSDK
• Microsoft HPC Pack 2008 R2 SDK with Service Pack 4
http://www.microsoft.com/en-us/download/details.aspx?id=29992
この中にSampleもあるので参考になります。
特に、Scheduler\HPCSchedulerBasicsが一番基本になります。
• HPC Pack 2008 R2 Client Utilities Redistributable Package with
Service Pack 4
http://www.microsoft.com/ja-jp/download/details.aspx?id=17017
16
参考資料(つづき)
Azureで分散処理を行うために必要なSDK
• Windows Azure HPC Scheduler SDK (1.7, June 2012)
http://www.microsoft.com/en-us/download/details.aspx?id=28015
• Windows Azure SDK for .NET - June 2012 SP1
http://www.microsoft.com/en-us/download/details.aspx?id=30651
SOAアプリケーションを作成して分散処理を行うためのドキュメント
SOAアプリケーションを扱わない場合でも、Windows HPC Serverの仕組み
を理解するのには役立ちます。
• SOA Applications, Infrastructure and Management with Windows
HPC 2008 R2
http://www.microsoft.com/en-us/download/details.aspx?id=11540
17
QUESTION?
18