FrontISTR をAWS で動かす~EC2にFrontISTRをインストール編~

# シリーズ目次

- [FrontISTR をAWS で動かす~AWSネットワーク構築編~](https://qiita.com/sasaco/items/6d8bb8b2f41be212fe77)
- [FrontISTR をAWS で動かす~AWS S3, EC2 作成編~](https://qiita.com/sasaco/items/4b47d6f38d0f8b27c537)
- FrontISTR をAWS で動かす~EC2にFrontISTRをインストール編~


# AMI をカスタムしていく

AMI をカスタムしていくぅ, 立ち上げた**EC2**インスタンスに **FrontISTR**をインストールしていく.ここからの作業は [EC2インスタンス上の作業](https://qiita.com/sasaco/items/4b47d6f38d0f8b27c537#%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B)であることを明示するためコマンドラインの先頭に[aws]と付けることとする.

## パッケージ群のアップデート

はじめに, デフォルトでインストールされているパッケージ群をアップデートする

```
[aws] $ sudo yum update- y
```

## ネットワークオプションを切り替える

今回使用した AMI の EC2インスタンスは, MPIライブラリは Open-MPI がデフォルトになっているが, **Elastic Fablic Adapter(EFA)** とよばれる高速なネットワークオプションを利用することを見据えて **Intel MPI** に切り替える

```
[aws] $ module load intelmpi
```

## Intel MKL のインストール

今回は FrontISTRのライブラリに **Intel Math Kernel Library(MKL)** を指定するので, **Intel MKL** のインストールをする

```
[aws] $ sudo yum-config-manager -add-repo https://yum.repos.intel.com/mkl/setup/intel-mkl.repo
```

```
[aws] $ sudo rpm -import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
```

[インテル公式](https://www.intel.com/content/www/us/en/developer/articles/guide/installing-free-libraries-and-python-yum-repo.html)から下記に似てるコマンドを探して実行する(執筆時点はこうだった)

```
[aws] $ sudo yum -y install intel-mkl-2020.0-088
```

> yesかno かを尋ねられたらすべて y と回答した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/a2fe065f-1530-8472-9bc7-5e3990959a46.png)

## 環境設定用スクリプトを実行する

AMI の中に 環境設定用のスクリプトが用意されているので, **source** コマンドを利用して実行する

```
[aws] $ source /opt/intel/mkl/bin/mklvars.sh intel64
```

# AMI に FRontISTR をインストールする

## autofistr  をダウンロードする

FrontISTRのインストールには**autofistr**を使う

```
[aws] $ git clone https://github.com/kazuya-goto/autofistr.git
```

autofistr フォルダに移動し

```
[aws] $ cd ~/autofistr
```

任意のエディタで autofistrのビルド設定ファイル**Makefile.in**を編集する.

```
[aws] autofistr$ vi Makefile.in

BUILD_TYPE = RELEASE
COMPILER = GCC
MPI = IMPI
BLASLAPACK = MKL
NJOBS = 1
```

> 今回は, コンパイラは**GCC**, MPIライブラリは**IntelMPI**, BLASLAPACKは** Intel MKL** の設定でビルドすることとする.また, 無料枠の **t2.micro** インスタンス を利用しているため, ビルド時の並列数を意味する NJOB は **1** を入れた.

## ビルド

**autofistr** フォルダで **make**コマンドを実行する

```
[aws] autofistr$ make
```

しばらくこんな感じでビルドが終了するのを待ちます.

![Animation2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/fa0fffc2-7997-7657-38c7-29f6cb64668c.gif)

## あとかたずけ

最後に下記のコマンドを実行して **AMI*作成前の準備をする

```
[aws] $ sudo /usr/local/sbin/ami_cleanup.sh
```

# カスタムした(FrontISTRをインストールした)AMI を作成する

AWS コンソールに戻りマネジメントコンソールのサービス一覧より**EC2**を選択する.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/e62ea97d-31e0-3d4f-cb7c-1832b24a8cee.png)

## インスタンスを停止

対象のインスタンスを選択して インスタンスの状態▼-**インスタンスを停止**をクリックする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/e6bba43f-04b1-dfaf-c5b8-d8db2c1a471e.png)

## イメージを作成

インスタンスの停止を確認し, アクションボタンからイメージとテンプレート-**イメージを作成**をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/efe1d6e6-ee24-bf6e-9d94-b97c23c38f01.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142847/c7b181e6-a710-f476-f4b4-0b6156cba104.png)