FrontISTRをAWS ParallelCluster バージョン3で利用する①

# 0. はじめに

この記事は[『非線形並列有限要素法』(2022, 丸善出版)](https://www.maruzen-publishing.co.jp/item/b304455.html)の第8章の内容を参照できることが前提となっています．書籍に掲載されている内容と同じ部分については，記事中では省略します．

---

# 1. シリーズの流れ

1. ParallelCluster バージョン3用のカスタムAMIの作成 (この記事)
1. [ParallelCluster バージョン3用の設定ファイルの作成〜起動](https://qiita.com/chikasuiro/items/f95fdffc4e56e58fc27e)
1. [Slurmを利用したFrontISTR並列実行](https://qiita.com/chikasuiro/items/2878a8834d130d7d0a76)

---

# 2. FrontISTRを導入したEC2インスタンスの作成

書籍8.1節のp. 205〜p. 220「S3バケットの作成」までは完了しているとして，p. 221「ParallelCluster用のEC2を作成」の部分を扱っていきます．

ParallelClusterのカスタムAMIは，バージョンが更新されるごとに新たなものを作成しなくてはなりません．[^2]書籍の[サポートリポジトリ](https://gitlab.com/FrontISTR-Commons/nonlinearparallelfem)で提供されているAMIはv2.11.1のものですので，バージョン3用には自身でAMIを作成する必要があります．

## 2.1. ベースとなるAMIの選択

書籍では，東京リージョンで利用できるv2.11.1のAMIのIDを，公式のリポジトリ[^2.1-1]にある「amis.txt」から取得しています．しかしながら，リポジトリのタグでv3.0.0[^2.1-2]以降を選択すると，このファイルは見当たりません．これは該当するものが存在しないわけではなく，ただまとめられていないだけ(？)ですので，AWS マネジメントコンソールのEC2作成画面から検索することで，適切なものを選択します．

以下，執筆時点での最新バージョンであるv3.1.2を例にして説明していきます．

1. マネジメントコンソールの EC2 > インスタンス の画面より，「インスタンスを起動」を選択します．
![img1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408280/1bd6d643-d011-5b8c-a8da-da84f222ba63.png)
1. AMIの選択画面が出ますので，検索フィールドに「parallelcluster-3.1.2」を入力します．
![img1-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408280/02b1aefb-c484-befc-8802-de86b49e1e85.png)
1. 「コミュニティAMI」を選択すると，該当するAMIが表示されます．コンソール自体で東京リージョンを設定していれば，こちらに表示されるものは東京リージョンで利用可能なものになります．[^2.1-3]
![img1-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408280/f68d8bd6-1f7e-6174-ea7c-85eec439e68c.png)
1. 書籍にならい，OSが「Amazon Linux」，アーキテクチャが「x86_64」のもの(ami-064b00d4121ccc66a)を選択し，続行します．
![img1-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408280/48653d3b-cca3-afd1-e294-905a5952387c.png)

## 2.2. 各種設定

次以降のステップでは，「インスタンスタイプ」「サブネット」などを設定していきます．全て書籍p. 223〜p. 226に記載のもので問題ありませんので，ここでは詳細を省略します．

## 2.3. FrontISTRのビルド

書籍p.227〜p. 229に従って，作成したEC2インスタンスへのアクセスとFrontISTRのビルドを行います．基本的には書籍に記載の通りで問題ありませんが，注意すべき点を取り上げておきます．

### Intel MKLのインストール

[Intelのガイド](https://www.intel.com/content/www/us/en/developer/articles/guide/installing-free-libraries-and-python-yum-repo.html)を基に設定していきます．2つ目のGPGキーをインポートするコマンドは，書籍では`-import`とハイフン1つのオプションとなっていますが，`--import`と2つが正しいようですので，注意して下さい．また，3つ目のコマンドで指定するMKLのバージョンは，ここではガイドに記載されている最新のものを利用しています．

```
sudo yum-config-manager --add-repo https://yum.repos.intel.com/setup/intelproducts.repo
sudo rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
yum install intel-mkl-2020.0-088
```

### `~/.bashrc`の記述

書籍にもある通り，モジュール・MKLのパス・FrontISTRのパス設定を`~/.bashrc`に記述しておくことが望ましいです．この3点の内容を追記すると，以下のようなファイルができあがります．

```shell:.bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
module load intelmpi
source /opt/intel/mkl/bin/mklvars.sh intel64
export PATH=/home/ec2-user/autofistr/GCC_IMPI/FrontISTR/bin:$PATH

```

---

# 3. カスタムAMIの作成

書籍p. 229〜p. 230に従って，作成したEC2インスタンスの停止とAMIの作成を行います．特に変更点はありませんので，2.2.に同じく詳細を省略します．

---

# 4. AWS ParallelClusterのインストール

ローカルPCで利用するAWS ParallelCluster (コマンドラインツール)は，利用するParallelClusterのバージョンに合わせる必要があります．よって，ここではv3.1.2のツールを導入します．執筆時点ではv3.1.2が最新版ですので，バージョンを指定しなくてもv3.1.2用のものがインストールされます．

```
python3 -m pip install aws-parallelcluster
```

より新しいバージョンがリリースされた後にv3.1.2を利用する場合は，`==3.1.2`とバージョンの指定を行ってください．

```
python3 -m pip install aws-parallelcluster==3.1.2
```

AWS ParallelCluster バージョン3では，ローカルPCで記述するコマンドがバージョン2から大きく変更されています．これについては，次の記事で設定ファイルの内容とともに説明します．

---

- 次の記事: [FrontISTRでAWS ParallelCluster バージョン3を利用する②](https://qiita.com/chikasuiro/items/f95fdffc4e56e58fc27e)

[^2]: https://docs.aws.amazon.com/parallelcluster/latest/ug/building-custom-ami-v3.html
[^2.1-1]: https://github.com/aws/aws-parallelcluster/tree/v2.11.1
[^2.1-2]: https://github.com/aws/aws-parallelcluster/tree/v3.0.0
[^2.1-3]: 書籍で利用しているv2.11.1のAMIも，この方法で選択することが可能です．