発展:更にDCPAMを使うには

  1. DCPAM5 を走らせよう
  2. DCPAM5 のデータを見る
  3. 発展:更にDCPAMを使うには
  4. 付録1: gpview の使い方
  5. 付録2: make と Makefile
  6. 付録3: ターミナルプレクサ
  7. 付録4: DCPAM に必要な資源をインストールする<
  8. 付録5: DCPAM をビルドしているとき裏で行われていること

[2.1] DCPAM5 を深く知るには

一般にフリーソフトウェアには, README ファイルと呼ばれる, プログラム (ソフトウェア) を配布する際にプログラムの一般的な情報を記載した文書が添付されています. DCPAMのパッケージにもREADMEファイルが含まれています. README ファイルを読むには DCPAM5 のソースコードを展開したディレクトリに行きます .

$ cd ~dcpam/dcpam5-20180304-2   (←DCPAMの展開ディレクトリ)
$ lv README

通常はインストール作業を行う前に目を通すものですが, 今回の実習では時間がないので省略しました. ここで目を通しておきましょう.

README ファイルを確認したら, 続いてドキュメントを眺めてみましょう.

$ cd doc/basic_equations/pub
$ firefox basic_equations.pdf

上で見たのは DCPAM の基礎方程式と離散化に関するドキュメントです. 必要に応じて doc/ ディレクトリにある他のドキュメントも参照してください. プログラムのサブルーチンの機能を記述したコード解説もあります.

Fotran90 のプログラムファイルは src/ 以下に格納されています. src/ 以下の構造は,SRC_LIST ファイルを参照してください. メインプログラムのファイルは src/main/ に, それ以外のファイルは他のディレクトリに格納されています.

ここではメインプログラムの中身をのぞいてみます. メインプログラムが格納されているディレクトリに移動します.

$ cd ~/dcpam/dcpam5-20170306/src/main

このディレクトリにはDCPAM のメインプログラムが記述された dcpam_main.f90, dcpam_init_data.f90, dcpam_init_data_surface.f90 の 3 つの FORTRAN ファイルが格納されています. dcpam_main.f90 は数値時間積分を行うメインプログラム dcpam_init_data.f90 は大気の初期値データを作成するメインプログラム, dcpam_init_data_surface.f90 は地表面の初期値データを作成するメインプログラムです.
では,時間積分を行うメインプログラムをのぞいてみましょう.
$ less dcpam_main.f90

メインプログラムにはいくつかコメント行 (行頭が! の行) が存在しています. コメント行を見てどこでどのようなことをやっているのか大雑把に眺めてみてください. また, プログラムの長さについてはどう思いましたか? 長いと感じましたか? それともたいしたことないと思ったでしょうか?
ともかく, このようなプログラムが組み合わさって DCPAM は走ります.

[2.2] Dennou Ruby Project のツール

Dennou Ruby Project のツールはオブジェクト指向スクリプト言語の Ruby を使って作られています.

Ruby は日本人のまつもとひろゆき氏によって開発されており,日本語の書籍も多く出版されています. 詳しくはRuby のホームページなどを参照してください. Ruby はオブジェクト指向に基づいて設計された言語です. 非常に粗っぽい説明をすれば, プログラムの世界におけるオブジェクトとは,「データ」と手続きを一体にしたようなものです. それぞれのデータのタイプに応じて手続きを定めるというのを基本にしてプログラミングを行ないます. なお, ここまで「手続き」と呼んでいたものは Ruby の世界ではメソッドと呼ばれます.

今回の実習で使う Dennou Ruby Project のツールのうち, 中心となるのはGPhys というものです. GPhys については GPhys のホームページを参照してください. GPhys の基礎を学ぶ場合は GPhys のチュートリアルを一通りやると良いでしょう.

[2.3] 長時間積分を実行するには

今回は最後に地球設定実験でもっと長時間の積分を行う計算を投入するところまでやりましょう. この計算で生成されるデータを使った解析作業を来週行ないます.

まず, vi で設定ファイル dcpam_E_T21L26.conf を編集をします.

$ vi conf/dcpam_E_T21L26.conf

地球実験 の 「実験の実行 その2」の記述を参考にして, 3 年間の数値積分を実行するように設定を変更しましょう.

この 3 年計算は時間がかかる (1 日程度) ため, ログアウトしても計算が走り続けるようにします. そのためにいくつか方法がありますが, ここでは nohup コマンドを用いてバックグラウンドジョブとして実行する方法を紹介します.
以下のようにして DCPAM を実行してください.

$ nohup ./bin/dcpam_main -N=./conf/dcpam_E_T21L26.conf  &

上記のように nohup をつけてコマンド実行すると, ターミナルを終了してもコマンドの処理が続行されます. これで長時間の実行を行うことができるわけです. nohup をつけて実行するとその出力結果は nohup.out という名前のファイルに保存されます. なお, nohup.out ファイルが存在していた場合には, コマンドの出力結果は既存の nohup.out ファイルに追記されていきます. nohup.out を消去せずに DCPAM の実行を繰りかえすとそれらの出力結果の全て nohup.out に記録され nohup.out ファイルのサイズがどんどん大きくなっていきますので, 注意してください.

上記の方法以外にも, ターミナルプレクサを使用するという方法もあります. 詳しくは [付録2] ターミナルプレクサ を参照してください.

ターミナルを終了しても計算が継続されていることを確認してみましょう. まず, DCPAM を実行したターミナルを終了させます. 新たにターミナルを起動して, そこで

$ ps aux | grep dcpam

と入力します. これで
    momoko    4592 76.3  3.1 567244 247216 pts/0   Rl   10:45   2:59 ./dcpam_main -N=./dcpam_E_T21L26.conf
などの表示が出てくれば OK です(ちなみに例にある momoko は石渡さんがよく使うユーザアカウント名). ps コマンドの出力結果の意味に関してはman で調べてみてください. 他にも top コマンドを使用する, ログファイル (上記の場合だと Earth_3year.log) が時間とともに更新されていることを確認する (時々 less コマンドでファイルの中を見てみる) という方法もあります.

時々計算が走っているか確認すると良いです. もし計算が最後まで走らなかった場合は設定ファイルなどを再度確認し, 実行し直してください(些細なミスによって, 計算が途中で止まってしまうことは決して珍しくありません...).

当然ながら計算を実行させている時は情報実験機の電源を落してはいけません. ログアウトだけしてください.


>> 次ページへ
情報実験第 11 回のページへ戻る


最終更新日: 2019/07/10 石渡 正樹 更新 Copyright © 2000-2019 inex