ハイパフォーマンスコンピューティング(HPC)を使用すると、科学者や研究者は、多くのコンピューティング機能を必要とする複雑な問題を解決できます。 HPCは通常、メッセージパッシングインターフェイス(MPI)を使用して異なるノード間で通信します。
現在、HPCを必要とするほとんどのプロジェクトは、レガシーUNIX®システムで実行されています。これらのプロジェクトをクラウドベースのインストールに移行するのは非常に簡単で、追加のセットアップはそれほど必要ありません。このチュートリアルでは、RackspaceCloud上でOpenMPIを使用してHPCクラスターを構築し、クラスター上でOpenMPIアプリケーションを実行します。このチュートリアルの終わりまでに、クラウドを活用して、物理インフラストラクチャへの依存を排除しながら、リアルタイムデータ処理用のHPCクラスターを迅速に構築およびスケーリングする方法を理解する必要があります。
クラウドで高性能のクラスタリングを実現するために、メッセージパッシングインターフェイス(MPI)プロジェクトであるOpenMPIを使用できます。並列処理、スレッドセーフと同時実行性、動的プロセススポーン、ネットワークとフォールトトレランスを提供します。世界最速のスーパーコンピューターがこのライブラリを使用しており、このライブラリは多くのペタフロップスに電力を供給します。 Open MPIライブラリの詳細については、彼らのサイトにアクセスしてください。
このチュートリアルでは、次のツールを使用してHPCクラスターを構築する方法を示します。
- 4台のRackspaceクラウドサーバー
- OpenMPI
チュートリアルでは、次の画像に示すように、4ノードのクラスターをセットアップし、そのクラスターでアプリケーションを実行して、パフォーマンスを測定します。

図1-クラウド上のHPCハイレベルアーキテクチャ
このチュートリアルを正常に完了するには、次の3つの項目が必要です。
- RackspaceCloudアカウント。
- Secure Shell(SSH)クライアント。 Windows®ユーザーはPuTTYを使用できます。
- Linux®とOpenMPIの基本的な知識。
チュートリアルでは、次のタスクについて説明します。
- クラウドサーバーを作成します。
- OpenMPIをインストールします。
- クラスタリングを有効にします。
- HPCを構成します。
- CloudServerイメージを作成してデプロイします。
- サンプルのOpenMPI対応アプリケーションをインストールして実行します。
クラウドコントロールパネルにログインし、次の属性を使用してWebインターフェイスからクラウドサーバーを作成します。
- サーバー名: yourname-HPC-node-01
- 地域:ダラス(DFW)
- 画像(ラックスペース): Ubuntu 12.04 LTS(精密パンゴリン)
- サイズ:2GBのRAM 以上
サーバーの作成をクリックします クラウドサーバーのビルドプロセスが始まります。ビルド中は、ポップアップウィンドウにCloudServerのパスワードが表示されます。将来の参照用にパスワードを記録します。ポップアップウィンドウを閉じて、サーバーのビルドが完了するのを待ちます。新しいサーバーのIPアドレスが使用可能になったら、それを記録します。
サーバーの構築が完了し、利用可能になった後 ステータス、サーバーにSSHで接続し、前に記録したIPアドレスとパスワードを使用してログインします。
ssh root@<Your Server IP>
ログイン後、次のコマンドを実行してOpenMPIをインストールします。
apt-get update
apt-get install build-essential -y
apt-get install openmpi-bin openmpi-checkpoint openmpi-common openmpi-doc libopenmpi-dev -y
Open MPIは、SSHを使用してノード間の通信を容易にするため、SSHのキーベースのログインを有効にする必要があります。
これを行うには、次のコマンドを実行します。
chmod 700 ~/.ssh
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Open MPI"
これらのコマンドの出力は、次の例のようになります。
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:85:97:3c:98:89:8d:bc:58:96:97:41:ad:0b:a6:c8 Enter an optional comment about your key
The key's randomart image is:
+--[ RSA 2048]----+
| . *oX.. |
| B O.* |
| + ooo . |
| . +... |
| . . oS. . |
| E . . |
| |
| |
| |
+-----------------+
注: このプロセス中にパスフレーズの入力を求められます。空白のままにします。
次のコマンドを実行して、キーを承認済みキーフォルダーにコピーし、SSHログインを許可する権限を変更します。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
HPCの構成
次に、ホストファイルを作成してプライマリHPCノードを構成します。これを行うには、SSH経由で最初のノードにログインしていることを確認し、次のファイルを作成します。ここで、<Your Server IP>
マシンへのSSH接続に使用したIPアドレスです:
cd ~/
echo <Your Server IP> >> mpi_hosts
ファイルを確認するには、次のコマンドを実行します。
cat mpi_hosts
次の結果が表示されます。
<Your Server IP>
構成を確認するには、 hello_c.cを使用します OpenMPIに含まれている例から。
これを行うには、次のコマンドに従います。
mkdir /root/samples
cd /root/samples
wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/hello_c.c
mpicc hello_c.c -o hello
mpirun ./hello
これにより、次の結果が出力されます。
Hello, world, I am 0 of 1
動作するようになったので、次のコマンドを実行して接続をテストします。
wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/connectivity_c.c
mpicc connectivity_c.c -o connectivity
mpirun ./connectivity
次の出力が表示されます。
Connectivity test on 1 processes PASSED.
これにより、最初のノードがオンラインで動作していることが確認されます。
最初のノードが作成されたら、クラスターをセットアップする準備が整います。まず、作成したノードのコピーを作成します。次の手順に従って、画像を作成します。
- クラウドコントロールパネルにログインします。
- 上部のナビゲーションバーで、製品の選択> Rackspace Cloudをクリックします 。
- サーバー>クラウドサーバーを選択します 。
- サーバーリストで、最初のノード用に作成したサーバーを選択します。
- アクションをクリックします ドロップダウンメニュー。
- [画像の作成]をクリックします 。
- プロンプトが表示されたら、意味のある名前を入力します。
- 最後に、[画像の作成]をクリックします 画像が作成されるまで数分待ちます。
イメージが作成されたら、次の例外を除いて、前の手順を使用して新しいCloud Serverをデプロイします。イメージの入力を求められたら、[保存済み]をクリックします。 タブをクリックして画像を選択します。ここでも、意味のあるサーバー名を入力し、新しいサーバーのパスワードとIPアドレスを記録します。
新しいノードをクラスターに追加するには、次のコマンドを実行します(新しいサーバーのIPが10.20.30.40
であると想定します)。 最初のサーバーのIP/ホスト名は<Your Server IP>
です。 ):
SSH to your first server
cd ~/
cat >> mpi_hosts <<EOF
10.20.30.40
EOF
これで、ホストファイルは次の例のようになります。
<Your Server IP>
10.20.30.40
ノード間の接続をテストするには、次のコマンドを実行します。
mpirun -v -np 2 --hostfile ~/mpi_hosts /root/samples/connectivity
エラーが発生しない場合は、独自のクラウドクラスタを正常に作成してテストしたことになります。クラスタのサイズを大きくするには、同じ手順を使用してさらに2つのノードを追加します。
4ノードクラスタ内の接続をテストするには、次のコマンドを実行します。
mpirun -v -np 4 --hostfile ~/mpi_hosts /root/samples/connectivity
Open MPIクラスターができたので、そのパフォーマンスを確認します。単一ノードまたはOpenMPIクラスターで実行できるsimplerayトレースアプリケーションを使用して、パフォーマンスを比較します。
まず、クラスターのすべてのノードにアプリケーションをインストールします。これを行うには、プライマリノードにSSHで接続し、次のコマンドを実行します。
for i in `cat mpi_hosts`; do ssh root@$i "curl -l https://openstack.prov12n.com/files/tachyon.sh | bash"; done
cd ~/tachyon/compile/linux-mpi
Tachyonパラレル/マルチプロセッサレイトレーシングシステム シーンに複数のサンプルデータファイルが付属しています テストを実行するために使用できるフォルダ。まず、次のコマンドを使用して、1つのノードでテストを実行します。
cd ~/tachyon/compile/linux-mpi
./tachyon ../../scenes/teapot.dat
次の出力が表示されます。
Tachyon Parallel/Multiprocessor Ray Tracer Version 0.99
Copyright 1994-2011, John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time: 0.0221 seconds
Scene contains 2330 objects.
Preprocessing Time: 0.0052 seconds
Rendering Progress: 100% complete
Ray Tracing Time: 2.1399 seconds
Image I/O Time: 0.0174 seconds
次のコマンドを実行し、レイトレーシング時間を確認して、並列実行と比較できるようにします。
mpirun -np 4 --hostfile ~/mpi_hosts ./tachyon ../../scenes/teapot.dat -format BMP
次の出力が表示されます。
Tachyon Parallel/Multiprocessor Ray Tracer Version 0.99
Copyright 1994-2011, John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time: 0.0230 seconds
Scene contains 2330 objects.
Preprocessing Time: 0.0052 seconds
Rendering Progress: 100% complete
Ray Tracing Time: 0.6048 seconds
Image I/O Time: 0.0182 seconds
クラスタは、4つのノードとそれぞれに1つのCPUで構成されています。したがって、パフォーマンスの向上はほぼ4倍になります。複数のノードがなくても、両方のCPUを使用してOpenMPIを使用して1つのノードでのみアプリケーションを実行すると、大幅な改善が見られるはずです。
2 GB以上のサイズは少なくとも2つのCPUにアクセスできるため、少なくとも2GBのRAMを搭載したサーバーを作成することが重要です。サイズの詳細についてはクラウドサーバーを参照してください。
次のコマンドを実行して、単一サーバーの複数のCPUでこのコードを実行します。
mpirun -np 2 ./tachyon ../../scenes/teapot.dat -format BMP
次の出力が表示されます。
Tachyon Parallel/Multiprocessor Ray Tracer Version 0.99
Copyright 1994-2011, John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time: 0.0222 seconds
Scene contains 2330 objects.
Preprocessing Time: 0.0050 seconds
Rendering Progress: 100% complete
Ray Tracing Time: 1.0888 seconds
Image I/O Time: 0.0181 seconds
単一ノードで実行しているがOpenMPIを利用している場合でも、パフォーマンスはほぼ2倍になっていることに注意してください。このレイトレーシングアプリケーションの詳細については、https://jedi.ks.uiuc.edu/~johns/raytracer/にアクセスしてください。
このチュートリアルでは、クラウドサーバーを作成してイメージ化する方法を学びました。また、OpenMPIを使用してHPCクラスターをセットアップする方法も学びました。クラスタをセットアップして構成した後、小さなレイトレースアプリケーションをインストールして、1つのノードではなく複数のノードを使用する利点を示しました。