Excel 数値計算高速化技法
*

Excel が拓く PC クラスタの新世界 〜 3 つの手法を連載でご紹介! 〜

シミュレーションだけでなくデータ解析などの業務において Excel を活用されている方は多くいらっしゃると思います。Windows Compute Cluster Server 2003 (略称: CCS) の最大の利点である「セキュリティ」と「デスクトップ アプリの親和性」をもっとも活かせるソリューションが「Excel 数値計算の高速化」です!

主に 3 つの Excel-CCS 連携手法がございます。

Excel インターフェイス

デスクトップからサーバー側へのシングルサインオンでセキュアにパラメータを転送し、サーバー側での実行結果を表計算上に表示することが可能です。これまでコマンドラインや FTP ツールなどの複数のツールを介して行っていたことを Excel だけで作業を完結させることが可能です。

Excel クライアント

既存の Excel VBA マクロなどデスクトップ上で従来実行されていたアプリケーションをサーバー側で実行可能な形式に変換することで、処理を分散させることが可能です。従来 VBA にて開発したロジックを外部化することで複数のサーバーへ実行ファイルをコピーすることで大量のパラメータ計算処理を分散化させることが可能です。

Excel サービス

「Excel クライアント」と原理的には同じですが、Microsoft Office SharePoint Server 2007 を用いることにより、よりプログラムレスかつサーバー側に管理を全て集中可能とすることができます。

これらの 3 つの手法を毎月ご紹介して参ります。

Excel インターフェース

前提条件:

既にサーバー側で実行可能なプログラム (.EXE) が準備されている。

その実行可能なプログラムは CCS 付属のジョブスケジューラを通じてサブミット可能である。

インターフェースとなる Excel ファイルは CCS が参加しているドメインに参加している。

インターフェースとなる Excel ファイルは、VBA.NET に対応している (Excel 2003 以上)。

構築チュートリアル:

ここでは「Linpack (英語) 外部サイトへ」というベンチマーク計測プログラムを用いて手順を追って御説明します。同サンプルは、マイクロソフトが運営する HPC コミュニティ サイト(http://windowshpc.net/ (英語)) から入手可能です。旧サンプルはこちら

1.サーバー側で実行するコマンドラインをインターフェースとして使用する Excel シート中に記述します。

サーバー上でのコマンド実行例:

> job submit mpiexec –dir \\headnode\scratch\ xhpl.exe hpl.dat


Excel インターフェース上での記述例:

Excel インターフェース上での記述例

このサンプルでは、コマンドラインの各引数をセル参照にて連結させています。

このサンプルでは、コマンドラインの各引数をセル参照にて連結させています。

[Excel Tips]: 各セルに行列の順番によるインデックス ("C3” など) だけでなく、独自の固有な名称を割当てることが可能です。

各セルに行列の順番によるインデックス ("C3” など) だけでなく、独自の固有な名称を割当てることが可能です。
拡大画像はこちら

下記のように従来のコマンドラインでは指定が煩雑であったオプションなどを上記のように分り易く且つ使いやすくまとめることが出来ます。Linpack のようにパラメータを何度も変えながら結果を求めるような場合には特に適しています。

従来のコマンドラインでは指定が煩雑であったオプションなど


2.Compute Cluster Pack (CCP) API との連携

Excel Visual Basic Application (VBA) を用いて、HPC クラスタの管理ノード上の各種機能を呼び出す API を利用できます。

下記はサンプル中の VBA ソースコードからの抜粋です。

サンプル中の VBA ソースコードからの抜粋
拡大画像はこちら

ジョブ実行のサブルーチンの流れとしては下記となります。

Linpack パラメータファイル (hpl.dat) を作成。

ジョブ実行時の設定やオプションを XML 形式 (job.xml) として保存。
(Excel と XML データ リンク付けについてはこちらをご参照ください)

CCS ヘッドノード上の .NET API (CCP API) を呼び出しジョブ投入します。
(この時 Active Directory 認証情報が付与されます)

これらの処理は通常の VBA と同じ方法で開発することが可能です。CCP API の詳細についてはこちらをご参照ください。

関連情報

**
**