AWS ParallelClusterとAmazon FSx for NetApp ONTAPで創るクラウドHPCクラスタ　第3回

# はじめに
こんにちは。ネットアップ合同会社 Specialist SEの月岡です。
「AWS ParalellClusterとAmazon FSx for NetApp ONTAPで創るクラウドHPCクラスタ」を全3回でお届けします。
今回は最終回の第3回目となります。
第1回、第2回の記事をご覧になられていない方は是非ご覧ください。

第1回記事：https://qiita.com/Yoshinori_Tsukioka/items/2db619c7fb30fdb7bd21
第2回記事：https://qiita.com/Yoshinori_Tsukioka/items/58f008bb426de850bead

# やってみた
今回は、**③ 作成したクラスターにテストジョブを投入し、AWS ParalellClusterによるスケーリングが動作することを確認**をやってみたいと思います。
　① AWS ParalellCluster UIをAWS東京リージョンに構築
　② AWS ParalellCluster UIを利用し、Amazon FSx for NetApp ONTAPをマウントするClusterを作成
　③ 作成したクラスターにテストジョブを投入し、AWS ParalellClusterによるスケーリングが動作することを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/d6aa8300-4bf4-b774-042b-6b519c2ab4bd.png)

# 作成したクラスターにテストジョブを投入し、AWS ParalellClusterによるスケーリングが動作することを確認

## テスト用のジョブを作成
- テスト用のジョブとアプリケーションについては、AWSが公開しているワークショップを参考に「OSU Micro Benchmark」を利用する。
https://catalog.us-east-1.prod.workshops.aws/workshops/f2b80cb7-e073-4226-9256-41c3d68129c4/ja-JP/install-and-run-app/install-osu
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/4ccb2c6b-68d3-24f7-1e57-81d5afd9f5d2.png)

- AWS ParalellCluster UIから作成したClusterにShell接続する。
AWS ParalellCluster UIログイン後、作成したCluster（今回の場合は、mountfsxn001）を選択すると画面上部に「Shell」ボタンがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/5cbfb80f-c3c4-18c5-aa8c-2b08664d1f61.png)

- 「OSU Micro Benchmark」を/shared（つまり、Amazon FSx for NetApp ONTAPのVolumeにダウンロードし、Buildする。

```
##ダウンロードコマンドのサンプル##
   cd /shared
   wget http://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-5.6.2.tar.gz
   tar xvf osu-micro-benchmarks-5.6.2.tar.gz
```
```
##Buildコマンドのサンプル##
module load openmpi
cd osu-micro-benchmarks-5.6.2
./configure CC=/opt/amazon/openmpi/bin/mpicc CXX=/opt/amazon/openmpi/bin/mpicxx
make
```

- ベンチマーク用のジョブを作成する。
Home ディレクトリなど、任意の場所で以下のジョブスクリプトを作成する。
今回使用しているt2.microインスタンスは1vCPUを有しているため、Slurmの-nオプションで4Slot要求した場合、4台のインスタンスが起動されることになります。
```
##ベンチマーク用ジョブ作成コマンドのサンプル##
cat > osu.sh << EOF
#!/bin/bash#SBATCH -n 4
module load openmpi
BIN_PATH=/shared/osu-micro-benchmarks-5.6.2/mpi/pt2pt
mpiexec --map-by node -np 2 \${BIN_PATH}/osu_bw
mpiexec --map-by node -np 2 \${BIN_PATH}/osu_latency
EOF
```
以上でテスト用のジョブ作成は完了です。

## テスト用のジョブを実行し、スケーリング動作を確認する。

- ベンチマーク用のジョブを実行する。
```
##ベンチマーク用ジョブ実行コマンドのサンプル##
sbatch osu.sh
```
　なお、qstatコマンドやsqueueコマンドジョブ実行状態を確認することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/d21834ea-5860-d051-f16f-d0a95800587f.png)

- ジョブ実行により、Compute Nodesがスケールしたことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/d4de5f7b-34b7-80ad-6a06-3f3fa71c109f.png)

- ジョブ実行状況をAWS ParalellCluster UI上から確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/553c7299-bfe6-1200-913d-8b34e93b74e3.png)

- ジョブ実行結果の詳細をAWS ParalellCluster UI上から確認する。
/home/ec2-user/osu.sh.o8に結果が出力されていることが分かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/9bb7d974-80bb-72b3-3e20-5451d8c619e3.png)

- ジョブ実行結果をShellで確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2806894/3a0764cd-3567-9ff4-a4c4-29d9b223dd3c.png)

以上でAmazon FSx for NetApp ONTAPのVolume内に格納したOSU Micro Benchmarkを利用するジョブが正常動作したことが確認できました。

# まとめ
「AWS ParalellClusterとAmazon FSx for NetApp ONTAPで創るクラウドHPCクラスタ」を全3回にわたりお届けしました。
AWS ParalellCluster UIを利用することで簡単にクラウドHPC環境を入手でき、共有ストレージ領域としてAmazon FSx for NetApp ONTAPが利用できました。
今後はAmazon FSx for NetApp ONTAPを使う際のメリットを深堀したいと思います。
この記事が少しでも誰かの参考になれば、幸いです。

# 主な参照元
- https://aws.amazon.com/jp/hpc/parallelcluster/
- https://www.cloudremix.net/awsdocs/20200408_BlackBelt_ParallelCluster.pdf
- https://docs.aws.amazon.com/ja_jp/parallelcluster/latest/ug/install-v3-parallelcluster.html
- https://docs.aws.amazon.com/ja_jp/parallelcluster/latest/ug/install-pcui-v3.html
- https://www.pcluster.cloud/
- https://catalog.us-east-1.prod.workshops.aws/workshops/f2b80cb7-e073-4226-9256-41c3d68129c4/ja-JP/install-and-run-app/install-osu