fortran66のブログ

fortran について書きます。

Binder による Fortran の Jupyter notebook 実行環境

準備の要らない Fortran 実行環境

1行まとめ:布団に寝そべったままスマホFortran 実行 & 作図可

f:id:fortran66:20180922175902p:plain
Binder

Binder とは

Binder とは、Github 上のレポジトリ (Github repo) 上に置かれた、Jupyter notebook をブラウザ上でオンラインで実行可能にする仕組みです。ローカルにはブラウザのみがあればよいので、スマホでもすぐに実行可能です。つまり布団の中でも、電車の中でも(通信料を気にしなければ)実行できることになります。

Binder 上の Jupyter notebook は、Github の Gist にあるような実行後のイメージを表示するだけではなく、実際に中身をいじりながら実行できるようになっています。これは Binder 側で Docker と呼ばれる仮想環境の仕組みを利用して、仮想的な計算機が用意されることによって実現されます。

ここで、標準的な Python による Jupyter 環境の Dockerfile はすでに暗黙に準備されているので、そのような標準的な利用法の元では ipynb (IPython notebook) 形式の notebook ファイルのみを Github 上に用意するだけで Binder 仮想環境が利用可能になります。

一方、Fortran を利用するような特殊な利用法を実現する仕組みも二通り用意されています。一つは、標準的な環境に付け足す パッケージ名などを列記して指示する簡便な仕組みで、もう一つは完全な Dockerfile を与える方法です。

ここでは、簡便な仕組みを利用して Fortran 実行環境を実現しています。以下の”バッジ”画像をクリックすると実際に実行できます。(仮想環境が用意されるので、起動まで少し時間がかかります。)

  • Jupyter lab Binder

起動後、ファイルタブから examples/example.ipynb を選んでください。

  • Jupyter notebook examples/example.ipynb Binder

ノートブックを開いた状態で起動します。

ここでは gfortran-7.3.0 (gcc/g++) と matplotlib, numpy を標準構成に加えて、さらに gfortran 用の Jupyter Kernel をインストールしています。
github.com

結論

Binder による Jupyter での Fortran 実行環境により、パソコンに環境を用意する必要もなくスマホ一丁で、解説や図表付きの実行例題をプログラムの中身をいじくったり図表を書き直して確かめられる、容易な学習環境が実現されたことになります。

オンライン・コンパイラは、旧来型の統合環境の延長としてはいいのですが、CPU・メモリー・外部ファイルの書き出しなどの実行資源への制限が厳しく、また図表化などに難がありました。

Binder による Jupyter の notebook 形式による実行環境は、起動が遅い時がある点を除けば、使い捨ての学習環境として多々好ましい性質を持っていると思われます。

参考

Binder による Fortran 実行環境の構築のアイデアは、すべて sourceryinstituteの open-coarray-fortran の実行環境に基づくものです。
github.com

この構成は MPI による CAF の実行環境を実現するため、自前の Jupyter-CAF-Kernel と、 Dockerfile を用意するようになっております。

この記事中に Binder へのリンクがありますが、その Github 上のリポジトリの設定ファイルを見ることで、Dockerfile を書かずに簡便に Fortran などをインストールする方法がわかり、Binder 公式サイトの説明が理解できるようになりました。

blog.jupyter.org

  • Binder に関する一般的解説

blog.jupyter.org

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Ipython Interactive Computing and Visualization Cookbook - Second Edition

Ipython Interactive Computing and Visualization Cookbook - Second Edition

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)

Modern Fortran Explained: Incorporating Fortran 2018 (Numerical Mathematics and Scientific Computation)