fortran66のブログ

fortran について書きます。

【メモ帳】Jupyter 用 Intel Fortran kernel

Jupyter Lab で Intel Fortran

先日、Jupyter Lab でエラーメッセージの情報を拾うことで Fortran の分割コンパイルができることが分かりました。 fortran66.hatenablog.com

カーネルを覗いて見ますと、少しいじれば、無理に実行するエラーなしで、自分の指定した名前で module のオブジェクトを作れそうだったので、週末の徒然に Python 分からないくせに、色々いじくってみました。またついでにコンパイラintel fortran に変えてみました。

設定ファイルの類も、名前を連動して変えなければならないようで、エラーが出るたびにいじくっていたら、何となく出来ました。いじりが適当過ぎて、どこをいじったか分かんなくなってしまって好ましくないですw もう少し整理してみるつもりです。GitHub は使い方が謎過ぎて、zip で落として git で経過保存せずにいじってしまいましたw

なお WSL 上では intel fortran の coarray 利用プログラムは、コンパイルは出来ましたが、実行はエラーが出てうまくゆきませんでした。

実行例 1

10n (n=1..8) 以下の素数の個数を求めて、素数定理の見積もり   { \pi(n)\simeq{n\over \log(n) } } と比較します。

素数の数は、ちゃんと書いた fortran プログラムで求めますが、Module と それを利用するメインプログラムは、別々に分割(分離)コンパイルします。

素数定理による見積もりは、Fortran の暗黙の型宣言を利用して、スクリプト的に書きなぐった Fortran プログラムで計算します。

出てきた結果を、Python のノートブックにコピペして、手動でリストに突っ込んで図示してみます。

図は重なり合って、ほとんど違いが分かりません。よい近似になっているようです。 f:id:fortran66:20180908022656p:plain

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

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

実行例2

ASCII ART プログラムも動きました。 https://cdn-ak.f.st-hatena.com/images/fotolife/f/fortran66/20180908/20180908022912_original.png

元の Fortranカーネルは、テンポラリファイルの消去処理に問題があったので、元祖の C 用のカーネルを見て、丸写しで修正しました。いずれにせよカーネルを正常に終了させないと、テンポラリ・ディレクトリにゴミがどんどんたまってゆきます。

Fortran の module は、オブジェクトファイルの他に、インターフェースを .mod ファイルとして出力するので、再利用を考え、これらは Jupyter 起動ディレクトリに作るようにしてみました。この辺は、深く考えていません。

インデントがずれただけなのにエラー吐きまくりで、蛇マジむかつくw

邪神ちゃんドロップキック 邪神ちゃん 全高約135mm PVC製 塗装済み 完成品 フィギュア

邪神ちゃんドロップキック 邪神ちゃん 全高約135mm PVC製 塗装済み 完成品 フィギュア