Windows HPC Server 2008

ハイ パフォーマンス コンピューティングの実用例

Joshua M. Kunken

 

概要:

  • 計算クラスタをセットアップおよび管理する
  • Windows PowerShell を使用して HPC スケジューラにジョブを送信する
  • サーバーで Excel データを処理する
  • 処理済みのデータをエンド ユーザーが使用できるようにする

目次

HPC 2008 を使用する理由
好調な滑り出し
計算クラスタへのアクセス
管理
Windows PowerShell の活用
アプリケーション開発
サーバー側とクライアント側での Excel データの処理
処理済みデータへのクライアント アクセス
大規模なデータセット

マイクロソフトが提供する最新のパラレル コンピューティング パッケージ製品である Windows HPC Server 2008 (HPC 2008) は、高い処理能力が必要な環境向けにデザインされいるので、私たちの研究所に打って付けの製品でした。この記事では、生命科学研究所で、イメージング デバイスで生成されたデータの自動処理を実現するカスタム システムの開発の一環として、さまざまなマイクロソフト テクノロジを展開する方法を紹介し、HPC 2008 に重点を置いて説明します。

このシステムでは、Excel ブックのデータ解析 (非線形回帰処理を含む) を自動化します。通常、このような解析を行うには、研究員が 1 つの実験につき 10 ~ 15 分の時間をかける必要があります。しかし、このシステムにより、96 件の実験結果を 30 分以内で (しかも、人の手を煩わせることなく) 解析できるようになります。計算クラスタを使用すると、その時間はさらに短縮されます。

ここで紹介するソリューションでは、HPC 2008 計算クラスタに展開した Windows PowerShell スクリプトも使用しました。このスクリプトでは、数百 GB に上る膨大な量の XML ファイルを短時間で一括処理します。この記事は、Windows HPC Server 2008 を他のマイクロソフト テクノロジと組み合わせて使用して、金融から医学に至るまで、さまざまな分野で日常的に使用される種類のファイルに対して高度な解析や処理を実行するアプリケーションを簡単に開発できる方法を紹介することを目的としています。

HPC 2008 を使用する理由

私たちの研究所で HPC 2008 の採用を決めた理由はいくつかあります。まず、1 点目は、HPC 2008 が既存の Active Directory インフラストラクチャと問題なく統合されることです。この特性により、異なる場所に分散している既存の Active Directory ユーザーが、ジョブを送信したり、既存のユーザー名とパスワードの組み合わせによるアクセス許可の設定をクラスタ全体に拡張したりすることができます。また、ユーザーが、クラスタでジョブを送信するのに、複数の資格情報を使用したり、ワークステーションにログオンしたりする必要はありません。

2 点目は、研究員が、実験結果を記録したり、さらに解析を行ったりするために、頻繁に Excel ブックのデータを操作することです。Excel ブックをプログラムで処理する必要はありましたが、それを Windows 以外のプラットフォームで実現するのは困難でした。3 点目は、C# を使用して Microsoft .NET Framework 上で開発したアプリケーションを実行できることです。この特性により、Excel ブックから抽出したデータを Windows 計算クラスタで処理しやすくなります。そして 4 点目は、C# アプリケーションを使用して、解析した情報を SQL Server データベースのテーブルに簡単に転送できることです。

好調な滑り出し

HPC 2008 を使用すると、市販のハードウェアを使用して計算クラスタを簡単にセットアップすることができます。比較的小規模なクラスタであれば、たった数時間で、すべての計算ノードをセットアップして、ヘッド (マスタ) ノードと通信できるようになります。並列コンピューティングの性質により、たとえば HPC 2008 と Windows Server2008 を 8 台の計算ノードで構成された小規模なクラスタに展開するには、数百台の計算ノードで構成された大規模なクラスタに展開する場合と同じくらいの時間がかかります。

Windows Server 2008 と HPC 2008 を使用してヘッド ノードのセットアップが完了したら、このノードを Active Directory ドメインに追加できるようになりました (Windows Server 2003 R2 ドメインを使用しました)。その後、ヘッド ノードに基づいて (Windows Server 2008 と HPC 2008 のコピーを含む) ハード ディスク イメージを作成して、他の計算ノードにイメージを展開しました。HPC 2008 の Network Configuration Wizard (ネットワーク構成ウィザード) を使用して、ヘッド ノードにはパブリック IP アドレスを使用してアクセスすることが可能で、計算ノードには Windows Server 2008 に展開された DHCP の役割によってヘッド ノードからパブリックではない IP アドレスが割り当てられるというネットワーク トポロジを選択しました (図 1 参照)。これ以外にも、計算クラスタをスタンドアロン モードまたは Windows ドメインに参加させた状態でセットアップするのに必要な DNS、WINS、RAS など他の多くの役割を簡単に展開することができます。

fig01.gif

図 1 ネットワーク トポロジを選択する

計算クラスタへのアクセス

Windows Server 2008 には、新しいバージョンのリモート デスクトップ接続 (RDC) アプリケーション (mstsc.exe) が同梱されています。RDC を使用すると、システム管理者は、グラフィカルなクライアントを使用し、TCP/IP 接続で、他の Windows ホストに接続して制御することができます (この対象には、Windows Vista クライアントだけでなく、Windows サーバー クライアントも含まれます)。Windows Vista にも、HPC 2008 の計算クラスタのヘッド ノードと計算ノードに簡単にアクセスできる新しいバージョンの RDC が同梱されています。クラスタ管理者は、ヘッド ノードにログオンして、新しいノードを追加したり、ノードを削除したり、ノードでジョブを展開またはキャンセルしたりするなど、さまざまな管理作業を実行できます。

HPC Cluster Manager (HPC クラスタ マネージャ) コンソールを使用すると、クラスタ管理者と適切な特権を持っているユーザーは、使いやすいユーザー インターフェイスを使用して、ジョブやタスクを手動で送信できます (図 2 参照)。このコンソールでは、作業ディレクトリ、実行可能ファイルのパス、出力フォルダ、詳細なパラメータだけでなく、ジョブで使用するリソース (CPU コア、計算ノード、ノード グループ、ノードの種類) の最小数と最大数を指定できます。

fig02.gif

図 2 コンソールでジョブを指定する

管理

組み込みの HPC Cluster Manager (HPC クラスタ マネージャ) コンソールを使用すると、簡単にクラスタ計算ノードを構成および管理したり、各ノードのジョブの実行状況を監視したり、各ノードで処理能力が目一杯使用されていたタイミングを特定したり、各ノードで実行できるジョブの種類を制御したりすることができます。また、cluscfg ユーティリティを使用すると、統計データの早見表を作成できます。この早見表では、使用中のプロセッサ数、アイドル状態のプロセッサ数、メンテナンスが必要な計算ノードなどの情報が提供されます。

clusrun コマンドを使用すると、特定の時点で実行されていたジョブの数を特定したり、現在使用中の計算ノードと CPU の数をすぐに確認したりすることができます。また、HPC Cluster Manager (HPC クラスタ マネージャ) コンソールでは、クラスタ全体で実行されているジョブの一覧を確認したり、キューに登録されているジョブ、完了したジョブ、停止中のジョブを確認したりすることができます。停止中のジョブがある場合は、特定のジョブやタスクの詳細を確認して、その原因を調査することができます。

経験上、計算クラスタ上でエラーになるジョブの一般的な原因は、ファイル共有が適切にマウントされていないこと、複数の計算ノードの共有で信頼関係が設定されていないこと、アクセス制御リストのアクセス許可が適切に設定されていないこと、計算ノードで Windows PowerShell を実行するのに十分なアクセス許可が設定されていないことなどです。このような問題を解決するのは、比較的単純な作業です。

HPC Cluster Manager (HPC クラスタ マネージャ) コンソールでは、全計算ノードの状態を 1 つの画面で確認できますが、視覚的にわかりやすい Heat Map (ヒート マップ) ビューで確認することもできます。このビューでは、送信された全ジョブによる各ノードのリソースの使用状況を簡単に確認できます。全クラスタ ノードの診断テストを一括で実施することが可能で、クラスタ管理者は、全ノードに関する問題から個別のノード グループに関する問題まで、さまざまな問題を解決するのに必要な情報を診断テストの結果から得ることができます (図 3 参照)。また、HPC 2008 では、さまざまな期間における計算クラスタの使用状況を視覚的に確認できる非常に有益な情報が提供されます。この円グラフと主要業績評価指標の情報から、意思決定者は、サーバーと IT のリソースが適切に配置されているかを判断することができます。

fig03.gif

図 3 全計算ノードに対して診断テストを一度に実施できる

fig04a.gif
fig04b.gif

図 4 有益な情報をすぐに入手できる

Windows PowerShell の活用

HPC 2008 では、HPC Cluster Manager (クラスタ マネージャ) コンソールを使用して対話的にジョブをスケジューラに送信できるだけではなく、コマンド ラインや Windows PowerShell を使用して、この処理を実行することができます。そのため、ユーザーは、タスク スケジューラ、C# のシステム呼び出し、または Windows PowerShell の呼び出しによって、ジョブを自動化できます。

このプロジェクトでは、ネットワーク ファイル共有をクエリする Windows PowerShell スクリプトを使用しました (これがメインの Windows PowerShell スクリプトです)。このファイル共有は、実験が完了した後に、イメージング システムによって生成された処理待ちファイルの入力ディレクトリとして使用しています。スクリプトでは、まず、出力ディレクトリに処理済みの出力ファイルがあるかどうかを確認します。入力ファイルが処理されていない (つまり、出力ディレクトリに出力ファイルがない) 場合、スクリプトでは、各ジョブをコマンド ラインから HPC スケジューラに送信するための子スクリプトを個別に生成します。メインの Windows PowerShell スクリプトでは、子スクリプトを job.exe (コマンド ラインでジョブの送信を行う HPC の実行可能ファイル) にパイプすることで、子スクリプトを繰り返しスケジューラに送信します。ジョブ スケジューラでは、さまざまな引数を使用して、HPC 計算クラスタにジョブやタスクを送信できるので、クラスタで実行するアプリケーションについては、高い柔軟性を得られます。

アプリケーション開発

ソフトウェア開発には、Visual Studio Professional 2008 を主に使用しました。この環境では、コンソール アプリケーション、Windows アプリケーション、および Web アプリケーションを開発できます。Visual Studio を使用すると、開発者は、1 つのプロジェクトで、見栄えの良いグラフィカル ユーザー インターフェイスをデザインしながら、基盤となるビジネス ロジックを考案することができます。

このプロジェクトでは、異なるニーズに対応するために、同じ中核となるビジネス ロジックを使用して、いくつかのアプリケーションを開発しました。まず、入力データである Excel ブックを処理する Windows Presentation Foundation (WPF) アプリケーションの開発に着手しました。このアプリケーションにより、研究員は、手動でさまざまなフィッティング パラメータの初期値を試して、HPC 計算クラスタで、より大規模な実験を処理できるかどうかを (同様のフィッティング パラメータに基づいて) 判断できます。

次に、HPC 計算クラスタで実際に実行するコンソール アプリケーションを開発しました。このアプリケーションでは、入力データである Excel ブック、フィッティング パラメータの初期値など、さまざまな引数を指定できます。Windows PowerShell では、アプリケーションに引数を渡しますが、それと同時に、コマンド ライン経由で HPC 計算クラスタにタスクを送信します。また、各計算ノードで実行しているコンソール アプリケーションでは、入力データ (Excel ブック) を処理しますが、それと同時に、解析結果を含む出力データ (Excel ブック) を生成したり、SQL Server に対して INSERT クエリを実行してすべての実験結果を記録したりしています。各ノードでは、Excel データの処理に .NET Framework 3.0 の System.IO.Packaging API を使用し、入力データの値を取得した後の処理には C# を使用しています。

これ以外には、研究員が HPC 計算クラスタから SQL Server に送信された結果を確認できる、より多くのグラフィックを使用する WFP アプリケーションも開発しました。研究所で行う実験の一部は、構造生物学で一般的に使用される標準的な 96 ウェル プレートで行われるので、この WPF アプリケーションのユーザー インターフェイスは、ウェル プレートの物理的な構成を反映したものになっています (図 5 参照)。ユーザーは、ウェルをクリックするだけで、特定の実験の結果を取得できます。ウェルをクリックすると、HPC 計算クラスタで処理され、SQL Server データベースのテーブルに送信された結果を取得するために、複数のデータベース テーブルに対して SQL Server クエリが実行されます。このアプリケーションでは、ListView コントロールに GridView コントロールを配置して、1 つの実験につき 96 件のテスト結果の概要を提供しています。つまり、研究員は、すべてのフィッティング パラメータと実験の統計的な分析結果を含む並べ替え可能な表を使用できます。この表は、HPC 計算クラスタで、Excel ブックの処理が完了すると、すぐに利用できるようになります。また、このアプリケーションでは SSH トンネルを使用して、エンド ユーザーが研究所以外の場所からも実験結果を記録できるようにセキュリティ保護を提供しています。

fig05_new.gif

図 5 アプリケーションのグラフィカルなインターフェイス

HPC の関連情報

bluebullet.gif Windows HPC Server 2008
microsoft.com/hpc/
bluebullet.gif Windows HPC TechCenter
technet.microsoft.com/en-us/hpc/
bluebullet.gif Windows HPC コミュニティ ポータル
windowshpc.net/Pages/
bluebullet.gif Windows HPC チーム ブログ
blogs.technet.com/WindowsHPC/
bluebullet.gif Windows HPC Server 2008 の評価
technet.microsoft.com/en-us/cc835241.aspx
bluebullet.gif Windows Compute Cluster Server の概要
technet.microsoft.com/en-us/magazine/2008.02.ccs.aspx
bluebullet.gif Windows HPC に関するスクリプト
microsoft.com/technet/scriptcenter/hubs/ccs.mspx
bluebullet.gif Windows HPC Server の展開と管理
social.microsoft.com/Forums/en-US/windowshpcitpros/threads/

サーバー側とクライアント側での Excel ブックの処理

私たちの研究所の研究員は、実験で使用している 96 のウェルの状態の変化を短期的なスパンで監視することに関心があります。状態の変化は、顕微鏡に備え付けのデジタル カメラを使用して記録しています。その後、ソフトウェアによって、定期的にデジタル イメージの情報を数値による強さのレベルに変換し、数値情報を Excel ブックに保存しています。この Excel ブックを手動で処理して、注意して作成した数式を使用して非線形回帰処理を行うことで、結果データを調整することができます。

実験データを回帰曲線に合わせて調整するのは、実験の状態の変化を特定できるフィッティング パラメータを特定するのに必要な作業です。計算処理と回帰曲線への適合の大変な点は、1 つのウェルにつき最低 10 分かかり、人的なエラーが発生する可能性があるだけでなく、カット アンド ペーストという退屈な作業に耐えなければなりません。

タスク スケジューラ (Windows Server 2008 で導入されたスケジュール タスクに代わるスナップイン) では、サーバー側のアプリケーションを指定の間隔で実行するようにしました。メインの Windows PowerShell スクリプトで、ファイル サーバー上に未処理の Excel ブックがあることが検出されると、ジョブ送信スクリプトが生成されます。このスクリプトは、ジョブ スケジューラに展開され、それを受けて、ジョブ スケジューラでは、(共有フォルダを経由してすべての計算ノードに存在する) サーバー側のアプリケーションに、未処理のデータを処理するように要求します。

リモート サーバーで実行中の SQL Server は、各実験 (つまり、各ウェル プレート) の結果が記録された Excel ブックのデータを処理して得られたデータを編成するのに使用します。研究員は、Excel データへの実際の出力結果とアプリケーションで提供する視覚的にわかりやすい実験結果の両方を必要としています。サーバー側のアプリケーションでは、非線形回帰処理のパラメータ (フィッティング パラメータの有効性など)、関連のある統計データ、および曲線のプロットを含む Excel ブックを生成するだけでなく、すべての実験データを含む関連のあるデータ ベースのテーブルに同じ情報を格納する SQL Server クエリも実行します。その結果、エンド ユーザーは、苦労して、いくつもの Excel ブックを参照して必要なデータを探すのではなく、GUI を使用して、より効率的にデータを照会することができます。

処理済みデータへのクライアント アクセス

研究員が処理済みデータを参照しやすくするために開発した WFP アプリケーションは、処理済みのデータが格納された SQL Server に対してリモートでクエリを実行したり、クエリ結果を見やすい形式で提供したりするために使用します。また、GUI から直接 SQL Server に格納されている結果を Excel データにエクスポートすることができるので、実験結果を公開資料やプレゼンテーションで使用することができます。新しい Excel ブックに結果をエクスポートする機能は、アプリケーションで、DataSet データ構造によって ListView コントロールにバインドされた SQL Server のクエリ結果によって実現されています。研究員は、以前は持つことができなかった総合的な観点で実験結果を参照することができます。通常、研究員が 1 つの 96 ウェル プレートを処理するには、16 時間 (1 つのウェルにつき 10 分) かかっていましたが、このアプリケーションにより、その時間を大幅に短縮することができました。

大規模なデータセット

私たちの研究所では、イメージング システムで生成された Excel ブックの処理の自動化に HPC 2008 を活用していますが、豊富なコンテンツ含む大量の XML ファイルで構成されたデータセットに対してクエリを実行する際にも Windows 計算クラスタを使用しています。この XML ライブラリは 300 GB に上る XML ファイルで構成されており、各 XML ファイルには、クエリの実行対象となる 100 個以上のノードやフィールドが含まれています。このような大規模なデータセットでは、XML ライブラリを SQL Server データベースのインスタンスにインポートして、最新の状態を保つことは実際問題として不可能であるのは一目瞭然です。

データベース ファイルのサイズが一定のしきい値 (100 GB) を超えると、データベースのパフォーマンスは低下します。このような大規模な検索領域では、多数の計算ノードで XML ライブラリを共有して、クエリの結果を計算クラスタ ノードに配布することで、クエリの応答時間を最小に抑えることができます。また、XML ライブラリのコンテンツを 1 台のファイル サーバーの共有に格納することで、データセットのメンテナンスに伴うオーバーヘッドを最小限に抑えることもできます。

Joshua M. Kunken は、カリフォルニア州のラ ホーヤにある The Scripps Research Institute でシステムの開発と管理を行っています。カリフォルニア大学バークレー校で学士号を取得しました。連絡先は jkunken@scripps.edu (英語のみ) です。この記事で紹介したプロジェクトは、Accelerated Technologies Center for Gene to 3D Structure の後援を受けています。