M1 macにIntel fortranをインストールした

# 概要

Intel fortran (Intel oneAPI Base Toolkit + HPC Toolkit) が無償で使用出来る、しかも、M1 Macでも使用出来るとのことで、インストールをしてみました[^1]。今のところ使えています。
[^1]: 最初に見たのはここです。https://fortran66.hatenablog.com/entry/2021/02/24/015532

現在、ダウンロードは出来ません。将来的にもMacのサポートはしないそうです。
まあ、Intelじゃないしね･･･。どうしよう。

# 環境
Intel Mac 1台、M1 Mac 2台、計3台に導入。

_Intel Mac_
* macOS Big Sur 11.6.4
* Mac mini (2018)(3.2GHz 6core, Intel Core i7, 32GB)

_M1 Mac その１_
* macOS Big Sur 11.6.4
* MacBook Air (M1, 2020)  (Apple M1, 16GB)

_M1 Mac その２_
* macOS Big Sur 11.6.4
* iMac (24-inch, M1, 2021) (Apple M1, 16GB)

_Fortran Software_
* Intel® oneAPI Base Toolkit (version 2022.1)
* Intel® oneAPI HPC Toolkit (version 2022.1)


## ダウンロード

ダウンロードは [Base Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit/download.html) と [HPC Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit/download.html) から行いました。

それぞれのページに行って、登録を行い、Operating System (macOSを選ぶ）、Select distribution (Online&Offlineしか選べない)、Installer Type (OnlineでもOfflineでも出来た)を選び、右下のDownloadから.dmgファイルをダウンロードします。

1. Base Toolkitダウンロードのページ
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/c97f5ad7-b9d1-3a35-5f64-47c64682eb2a.png" width="500" alt="Get the Intel® oneAPI Base Toolkit">

1. HPC Toolkitダウンロードのページ
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/e3b00f8b-2946-7db3-97d2-514e3f80f15a.png" width="500" alt="Get the Intel® oneAPI HPC Toolkit">

## インストール（Base Kit）

1. dmgファイルを展開。Base Kitからインストールする。
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/b7a5d29b-5a24-1ca2-3ae6-bd0885e283f8.png" width="250" alt="bootstrapper.app"></br>
1. bootstrapper.appをダブルクリックで開く。
    Offline用のファイルだと、結構 検証に時間が掛かる。数分待つと、セキュリティの警告の後に
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/c0186576-7fd9-5847-8746-893407eeeea2.png" width="250" alt="Continue"></br>
のメニューが出て、「Continue」で、インストール画面になります。（この時点でDockには、oneAPIのアイコンが3つ並んでいる）
最初に入れたM1 MacでPythonがインストール出来なかったので（使わないし）
Custom Installationで、それ以外を選んでInstall しました。
￼I accept..のチェックマークをチェック、下の方のCustomizeをクリックすると、
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/35ce48a0-a54f-d421-d2e3-8aa9b2bf6cff.png" width="500" alt="Continue"></br>
1. 適当に選んで、下の白抜き右向き矢印で次へ。
    ￼<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/4853fe7f-28a0-1740-7e4b-4b8865a947f4.png" width="500" alt="Continue"></br>
1. データを集めてもらってもいいことにして、Installへ。
    ￼<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/00a33e09-5156-b8ee-1f21-51b4eb02ce27.png" width="500" alt="Install"></br>
1. しばらく待つとインストール完了です。
    ￼<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/3ca034b4-ce2f-7103-1cb7-942343573b39.png" width="500" alt="Finish"></br>

## インストール（HPC Kit）
1. dmgファイルを展開。bootstrapper.appを開く。こちらはRecommended Installationで「Continue」
    ￼<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/2c856ec2-b7a0-c991-efbb-204310180fbc.png" width="500" alt="Continue"></br>
1. Xcodeは使っていないので、Skip.
    ￼<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2535109/317bd7cb-704c-7b12-9b16-82addd824bd3.png" width="500" alt="Skip Xcode IDE configuration"></br>
3. 後はデータ分析に同意してInstallして終了。

## 環境変数

Terminalで走らせるので、環境変数の設定をTerminalから行います。

<ol>
<li> 取り敢えず、Start Guideに書いてあるsetvars.shを読み込ませてみます。
    
```
% ifort
zsh: command not found: ifort
% source /opt/intel/oneapi/setvars.sh
 
:: initializing oneAPI environment ...
   -zsh: ZSH_VERSION = 5.8
   args: Using "$@" for setvars.sh arguments: 
:: advisor -- latest
:: compiler -- latest
:: dal -- latest
:: dev-utilities -- latest
:: dnnl -- latest
:: ipp -- latest
:: ippcp -- latest
:: mkl -- latest
:: tbb -- latest
:: vtune_profiler -- latest
:: oneAPI environment initialized ::
 
% ifort -v
ifort version 2021.5.0
```
</li>
<li> うまくいった、か？
 
```
source /opt/intel/oneapi/setvars.sh
```
を`.zshrc`に入れておきます。
</li>
<li>  しかし、実際にコンパイルするとエラーが出ます。

libraryの場所を付けないといけない[^2]。

[^2]:最初に見たのはここです。https://plaza.rakuten.co.jp/copekuroshio/diary/202112020000/

```
% cat > a.f
	write(*,*)" OK"
	end
% ifort a.f
ld: library not found for -lSystem
% ifort -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib a.f
% ./a.out
  OK
% 
```
</li>
<li> aliasでifortにlibraryの場所を付けることにしました。

```
alias ifort='ifort -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib'
```
を
`~/.zshenv`に入れておくことにします。
`~/.zshrc`に入れると、例えば、

```
#!/bin/zsh
ifort a.f
```
みたいなスクリプトをファイルaに入れて動かすときに、`source a` としなければならず、`./a` ではエラーが出るから[^3]。
[^3]: 読み込む順番とか。https://suwaru.tokyo/zshenv/
</li>
</ol> 
以上で終了です。いや、これからコードを書くんですが。

## その他


1. 導入理由は、gfortranでコンパイル中に実行時記憶領域が足りなくなり、`gfortran -mcmodel=large` が現在サポートされていないということで・・・賢いコードに書き換えるの大変だし。前に購入して使用したことのあるIntel fortranが無償で使えるとのことで試してみました。

1. 結果的に必要なかったようですが、
Command line tools for Xcodeを再インストールしました[^4]。13.3 beta3だとOSが対応せず（Montereyが必要）、13.3 beta2をインストール。
ただし、Command line tools for Xcodeを再インストールしても、
`ld: library not found for -lSystem`
のエラーは無くなりませんでした。
[^4]: いつもお世話になっています。https://oku.edu.mie-u.ac.jp/~okumura/macosx/

# 参考サイト
どうも有り難うございます。書いて下さったの見つけると本当に嬉しいですよね。。。

Windowsだけれども、ほぼ一緒なので：

https://qiita.com/implicit_none/items/620b440ba6d6167a1b73

M1 Macの話：

https://fortran66.hatenablog.com/entry/2021/02/24/015532

ライブラリのありか：

https://plaza.rakuten.co.jp/copekuroshio/diary/202112020000/

どこにaliasを書いたらよいかの参考：

https://suwaru.tokyo/zshenv/

そして、本当に有り難いことでございますね：

https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html#gs.qneq34