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


概要

Intel fortran (Intel oneAPI Base Toolkit + HPC Toolkit) が無償で使用出来る、しかも、M1 Macでも使用出来るとのことで、インストールをしてみました1。今のところ使えています。

環境

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 その1

  • macOS Big Sur 11.6.4
  • MacBook Air (M1, 2020) (Apple M1, 16GB)

M1 Mac その2

  • 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 ToolkitHPC Toolkit から行いました。

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

  1. Base Toolkitダウンロードのページ

  2. HPC Toolkitダウンロードのページ

インストール(Base Kit)

  1. dmgファイルを展開。Base Kitからインストールする。
  2. bootstrapper.appをダブルクリックで開く。
    Offline用のファイルだと、結構 検証に時間が掛かる。数分待つと、セキュリティの警告の後に

    のメニューが出て、「Continue」で、インストール画面になります。(この時点でDockには、oneAPIのアイコンが3つ並んでいる)
    最初に入れたM1 MacでPythonがインストール出来なかったので(使わないし)
    Custom Installationで、それ以外を選んでInstall しました。
    I accept..のチェックマークをチェック、下の方のCustomizeをクリックすると、
  3. 適当に選んで、下の白抜き右向き矢印で次へ。
  4. データを集めてもらってもいいことにして、Installへ。
  5. しばらく待つとインストール完了です。

インストール(HPC Kit)

  1. dmgファイルを展開。bootstrapper.appを開く。こちらはRecommended Installationで「Continue」
  2. Xcodeは使っていないので、Skip.
  3. 後はデータ分析に同意してInstallして終了。

環境変数

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

  1. 取り敢えず、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
    
  2. うまくいった、か?
    source /opt/intel/oneapi/setvars.sh
    

    .zshrcに入れておきます。

  3. しかし、実際にコンパイルするとエラーが出ます。

    libraryの場所を付けないといけない2

    % 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
    % 
    
  4. 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

以上で終了です。いや、これからコードを書くんですが。

その他

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

  2. 結果的に必要なかったようですが、
    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
    のエラーは無くなりませんでした。

参考サイト

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

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

M1 Macの話:

ライブラリのありか:

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

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

  1. 最初に見たのはここです。https://fortran66.hatenablog.com/entry/2021/02/24/015532

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

  3. 読み込む順番とか。https://suwaru.tokyo/zshenv/

  4. いつもお世話になっています。https://oku.edu.mie-u.ac.jp/~okumura/macosx/