プラズマシミュレーション研究室

AstroGKの利用手順

ソースコードの入手

AstroGKのソースコードは版管理ソフトウェアgitを用いて管理されている.サーバはバージョン管理リポジトリホスティングサービス bitbucket https://bitbucket.org/gyrokinetics/agk/ を用いている.マスターブランチ(master)や開発ブランチ(next)などのブランチがある.マスターブランチのソースコードを取得するには

git clone https://bitbucket.org/gyrokinetics/agk.git work

注:ここでは作業コピー(ディレクトリ)をworkとした.以下,作業コピーをworkとして説明する.作業コピー名を省略するとデフォルトではプロジェクト名であるagkが設定される.

AstoGKコードは,他のプロジェクトと共有するプロジェクトutilsとMakefilesに依存しており,サブモジュールに設定されている.サブモジュールを入手するには,作業コピーディレクトリでgit submoduleコマンドを用いる

cd work
git submodule update --init

または,以下のコマンドで,作業コピー作成時に同時にサブモジュールを入手することができる.

git clone --recurse-submodules https://bitbucket.org/gyrokinetics/agk.git work

注:--recurse-submodulesオプションはgitのv2.13以上で使用できる.それ以前のバージョンでは--recursiveを用いる.

注:httpsで当該サイトにアクセスできる必要がある.gitが使用するプロキシは,git configコマンドで設定する.設定内容は${HOME}/.gitconfigに保存される.(プロキシサーバの情報はネットワーク管理者に確認する.)

git config --global https.proxy https://<IP ADDRESS>:<PORT NUMBER>

プログラムのビルド

プログラムをビルドするためには,Fortranコンパイラ,およびMPI, FFTW (v3), NetCDF, HDF5ライブラリが必要. (なくてもビルドすることはできるが,機能が制限される.)

必要なソフトウェアが利用できる環境で,環境変数MAKEFLAGSとGK_SYSTEMを設定し,makeすればよい.MAKEFLAGSには,-IMakefilesを設定する.GK_SYSTEMには,プログラムをコンパイル・実行するシステム名を設定する.システム名はMakefilesディレクトリにあるMakefileの中から適したMakefileを選択するために用いられる.

注:シミュ学計算サーバでは,プログラミング環境としてIntelのコンパイラを推奨(intelモジュール).必要なライブラリを利用するためには,mpt, fftw, hdf5-parallel, netcdf_p モジュールをロードするとよい.なお,ソフトウェアのバージョンは随時更新されるので,利用時に確認すること.

注:シミュ学計算サーバでは,GK_SYSTEM=rokkoとすればよい.詳細はMakefiles/Makefile.rokkoを参照. シミュ学計算サーバのフロントエンドrokkoでビルドする場合の具体的な手順は以下の通り.

module load intel
module load mpt fftw
module load hdf5-parallel netcdf_p
export MAKEFLAGS=“-IMakefiles"
export GK_SYSTEM=rokko
make

新たなシステムに移植する際には,Makefilesディレクトリに使用するシステム名(GK_SYSTEM)に対応するMakefiles.${GK_SYSTEM}を作成する.システムのMakefileの中では,基本的にはコンパイラと使用するライブラリの設定を行なえばよい.使用できるコンパイラは,そのコンパイラ名のMakefileがMakefilesディレクトリに存在する.Makefile.intel など.

サンプルの実行

AstroGKはフラットMPI並列化されている.実行にはMPI並列プログラム実行のための専用コマンド(mpirun, mpiexec など)を用いる.プロセス数NでAstroGKを実行するには,AstroGKの実行ファイルと入力ファイル(任意の名前で拡張子は .in)が存在するディレクトリで

mpiexc -n N ./agk input.in

などとする.実行した結果のデータは,データの種類に従って入力ファイルの拡張子を変更したファイルに出力される.データの中には,計算終了時の状態を保存し継続して次の計算を行うためのファイルなどもある.いくつかのファイルはテキスト形式でありテキストエディタなどで簡易に表示することができるが,いくつかのファイルはNetCDFやHDFなどを使用したバイナリデータであり,その取り扱いには特別なプログラムを使用する必要がある.(下のGNU Octaveによる可視化を参照)

AstroGKにはいくつかのサンプルインプットファイルが付属している.ファイルはtest_jcp2010/にある.サンプルの詳細については,論文を参照.磁気リコネクション(テアリング不安定性)のシミュレーションにはtearing.inを用いる.ただし,線形シミュレーションを想定している.このサンプルケースでは,並列数256程度まで良好にスケールし,256並列で約1時間程度で終了する.(SGI Altix UV1000, Intel Xeon X7550 2.00GHz 使用)非線形シミュレーションを実行する場合は,y方向グリッド数nyを大きくする必要がある.

注:磁気リコネクションのシミュレーションには時間がかかるので,シミュ学計算サーバの利用を推奨.計算サーバの利用方法の詳細は,利用ガイドおよび利用者マニュアルを参照.クラスタ型計算サーバでの実行のためのサンプルスクリプトを rokko1:/data/n272r011/share/run_tearing.subとして準備した.

GNU Octaveによる可視化

AstroGKのデータ解析については,総合的なフレームワークは存在しないので,基本的なもの以外は,使用者が独自に開発運用しているのが現状である.磁気リコネクションのシミュレーション解析については,沼田がGNU Octaveで動作するスクリプトを作成しつつある.沼田開発のoctaveスクリプトはhttps://rnumata.org/redmine/projects/octave_scripts で公開している.gitリポジトリはhttps://rnumata.org/git/octave_scripts.git.コードを取得するには

git clone https://rnumata.org/git/octave_scripts.git

とすればよい.octave_scripts/というディレクトリがカレントディレクトリに作成される.

注:沼田開発octaveスクリプトを利用するには,octaveの設定が必要になる.設定方法はシミュレーション研究のためのツールページを参照.スクリプトの検索パスの設定と利用するパッケージ(netcdf, io)のロードが必要である.

注:シミュ学計算サーバのフロントエンドrokkoではoctaveおよびoctaveのnetcdf, ioパッケージはインストール済みである.利用するには,octaveモジュールをロードする.netcdfパッケージを利用する際は,hdf5-parallelとnetcdf_p(またはhdf5とnetcdf)モジュールも必要となる.

octaveコマンドでoctaveを起動し,適当なスクリプトを実行する.例えば,plgk_field.mを使用すれば,2次元の電磁場の様子をプロットすることができる.このスクリプトに必ず必要な引数はbasenameとvarnameで,basenameはAstroGK実行時のインプットファイルの拡張子を除いたもの(仮にinputとする)を指定し,varnameは表示する変数名(phi=静電ポテンシャル(φ),apar=ベクトルポテンシャルのz成分A,bpar=磁場のz成分δB)を指定する.

plgk_field (‘basename=input’,'varname=apar')

basenameに対応するAstroGKのいくつかの出力ファイルが必要となるので,AstroGKの実行データがあるディレクトリでoctaveを起動するとよい.その他の引数については,スクリプトのファイルの先頭部分を見ればわかる.なお,引数はすべて文字列なので引用符「’」で括られ,「キーワード=値」の形を取る.例えば,asciiというキーワードを1とすれば,プロットしたデータを可読なASCIIファイルとして出力する.ファイル名は“plgk_field.dat"

plgk_field (‘basename=input’,'ascii=1')

自前のPCで AstroGK を使用するには

AstroGKを動作させるには以下のソフトウェアをインストールする必要がある.各ツールの概略については,シミュレーション研究のためのツールページを参照.

  • git
  • Fortranコンパイラ(gfortranなど)
  • MPIライブラリ(mpichなど)
  • FFTW (v3), HDF5(並列化対応推奨), NetCDF(並列化対応推奨)
  • GNU Octave,およびoctaveのnetcdf, ioパッケージ
  • gnuplot(octaveのプロット関連ルーチンにおいてbackendとしてgnuplotを使うとギリシャ文字や特殊記号などのフォントが使いやすい)

Windows PCでも動作させることは可能だろうが,推奨はしない.