SLURM on DEXCS2018 for OpenFOAM(R)

諸般の事情により、DEXCS2018ではSLURMを搭載していないので、ここにインストールと設定方法を記しておきます。

インストール方法

普通にパッケージインストールが可能になりました。

$ sudo apt install munge slurm-wlm

というか、これまでは認証を秘密鍵方式でやっていたのを、デフォルトのMUNGEでも出来るようになり、設定がだいぶ楽チンになりました。

(実はこれまでもMUNGEで出来るはずだったのが、うまく動かせていなかっただけの事なんですが・・・)

設定(slurm.conf)

SLURMの設定ファイルは、/etc/slurm-llnl/slurm.conf として、以下の内容を記述(コピペ)しておく(要管理者権限)。

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=localhost
#ControlAddr=
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm-llnl/slurmd
SlurmUser=slurm
#SlurmdUser=root
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
TaskPlugin=task/none
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
#SchedulerPort=7321
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=localhost
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
#SlurmdDebug=3
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
#
#
# COMPUTE NODES
NodeName=localhost CPUs=4 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP

太字部分は、自分のマシンのスペックに合わせて変更しておいて下さい。

SLURMの起動

$ sudo systemctl enable slurmctld
$ sudo systemctl start slurmctld
$ sudo systemctl enable slurmd
$ sudo systemctl start slurmd

動作確認方法

うまく動かない時

/var/log/slurm-llnl/ の下に、ログファイルが出力されているので、これを読めば何とか対処できるんでないかと思います。

自分の経験では、slurm.confの記述間違いに起因するエラーが大半でした。

また、sinfo コマンドでSTATEが drain と表示されていると、ジョブを投入してもペンディング状態のまま、いつまでたってもジョブは実行されません。

この場合、ペンディングされたジョブをキャンセル(scancel)して、

$ scancel <job-id>

$ sudo scontrol update nodename=localhost state=idle

実行スクリプトの例

#!/bin/bash
#SBATCH -n 4
#SBATCH -J OpenFOAM
#SBATCH -e submit.sh.e%J
#SBATCH -o solve.log
. /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc
rm -rf ./processor*
cartesianMesh
checkMesh
pyFoamDecompose.py . ${SLURM_NPROCS}
mpirun simpleFoam -parallel
reconstructPar -latestTime

諸般の事情

基本的には、SLURMの設定方法がよくわからないというか、すんなり動いてくれないという点です。

普通には、

file:///usr/share/doc/slurmctld/slurm-wlm-configurator.easy.html

をブラウザで開くと、

ここで、色々設定してSubmitボタンを押すだけで良いはずなのですが・・・

今回も、下記のセクションにて、デフォルト(Linear)

はうまく動いてくれたのですが、これだとひとつのノード(CPU)に一つのジョブしか投入できない。マルチコアCPUでコア数をすべて有効に使うには、Cons_res を選択するのが一般的ですが、これに変更するとうまく動いてくれない、という状況でした。

ちなみに、現時点でパッケージインストールされるslurmのヴァージョンは、17.11.2であるのに対し、上記設定ツールで対象としているのは、16.05とあります。これが原因なのかどうかわかりませんが、最終的には上記ログファイル中にCRパラメタがなんたらというメッセージがあったので、

SelectTypeParameters=CR_CPU

の1行を追加して、今のところ動いているという状況です。

ちなみにこの一文は、上記ツール上では、以下のように

メニューとして選択可能になってはいるのですが、submitしても何故か出力してくれませんでした。やむなく手入力で追加したという顛末です。

マシンのスペック確認方法

論理プロセッサ数
$ cat /proc/cpuinfo | grep “processor”
⇒ CPUs
物理CPUの数
$ cat /proc/cpuinfo | grep “physical id” | uniq
⇒ Sockets
物理コアの数
$ cat /proc/cpuinfo | grep “cpu cores” | uniq
⇒ CoresPerSocket

SLURM on DEXCS2017 for OpenFOAM(R)

DEXCS for OpenFOAM(R) では、SLURMというリソースマネージャについて、DEXCS2013での試用記事を足掛かりにDEXCS2014より、この記事に記したのと同様の方法で搭載してきましたが、DEXCS2017からはインストール方法を変更し、それに伴い使用前の設定が必要になったので、ここに記しておきます。



DEXCSインストール直後の状態
⇒ジョブを投入してもペンディングになる場合があります

もっともシンプルに動作確認するには、コマンド端末にて、

srun -l sleep 60 &

(60秒間何もしないで待つの意味)

と打ち込んでジョブを投入、

squeue

にてジョブの状況を確認できます。

しかし、残念ながら上のような結果が返ってくることがあります。

とりあえず動かすには。。。

以下の2行を打ち込めばOKのはず

sudo systemctl restart slurmctld.service
sudo scontrol update NodeName=localhost State=Resume

入力が終わると、ペンディング状態だった先のジョブがR(Running)となり、しばらくしてから再度確認すれば終了している。

引き続き動作確認

6つのジョブを続けて投入すると。。。

直後では、最初に投入した4つのジョブ(JOBID:4-7)が実行中、残りの2つ(JOBID:8,9)がペンディングとなります。つまり、デフォルトの設定では、4コアのマシンを想定しているということ。

設定を変更するには

/usr/local/etc/slurm.conf(変更例)

上記変更での実施例

となれば、メデタシメデタシ・・・となるのですが、マルチCPUマシンの場合など、一筋縄でいかない場合もあります。

そもそもこのデフォルト設定パラメタは、とりあえず動けば良いというレベルで作成したもので、ちゃんと考えて作成したものではありません。

SLURMのインストールがそもそもパッケージマネージャからだと、従来の設定方法のようにはやれなくなって、参考サイトの情報を頼りに見真似で作成したものです。詳細を知りたい人は、そちらをご覧ください。

 

DEXCS2021 for OpenFOAM(R) リリースノート

ダウンロードはこちら(2021/10/〜)



DEXCS for OpenFOAM(R) は、OpenFOAMと、これをより簡単・高度に活用できるようにする為の様々なツールをすべてインストール済のオール・イン・ワンパッケージで、誰でも(と言ってもCAEに無縁の人は対象外ですが・・・)簡単・即使えるようにしたマシンイメージ(isoファイル)です。

詳しくはこちら

DEXCSランチャーのヘルプメニューからも参照できます

DEXCS2021では、

  • ベースOSはubuntu-20.04.2 (LTS)
  • OpenFOAMやその他の組み込みツールのヴァージョンアップに対応
    • OpenFOAM-v2106(パッケージインストール版)
    • ParaView-5.9.1(バイナリー版)

(cfMeshはOpenFOAM-v1712以降、modules としてOpenFOAM本体に組み込まれています)

  • ここまでは通常の毎年更新作業ですが、DEXCS2021からはDEXCSランチャーのうちcfMesh作成用マクロとソルバー実行部分は従来通り使うこともできますが、新たにDEXCSワークベンチで実行できるようになり、これを使えば以下のメリットがあります。
    • cfMesh設定の詳細オプション設定もGUIで出来るようになる
    • cfMeshの設定パラメタがFreeCADのモデルファイル情報として保存される
    • ポスト処理の手順が簡単になる
  • DEXCSツールバーも一部変更しています(下図)
    • plotWatcherの起動 はFreeCADの Plotワークベンチを使用する方法に変更しました、自動更新はされませんが、DEXCSワークベンチからソルバー実行すれば、初期残渣グラフが表示され、自動更新されます。
    • postProcessingフォルダ中のファイルの可視化が、これまでのJGPに替えてPlotワークベンチを使用するマクロに変更した事で格段に使い勝手も見栄えも良くなっています。
    • OpenFOAM専用端末の起動ボタンも追加しました。
  • pyFoam は、OpenFOAM-v2106への対応はアナウンスされておりません。TreeFoamで使っている機能(pyFoamPlotWatcher.pyやFoamCleaCase.pyなど)についてのみ動作確認しており、その他の機能については動作未確認です。

インストールと利用法

詳しくはこちら(日本語と英語の切り替え方法も含む)

マシンイメージなので、DVDにイメージ書き込みすれば、DVDから起動してそのまま利用することができます。 (DEXCS初体験の人はこのライブDVDとして「まずは使ってみる」方法をお薦めします。)

  • 継続利用では起動後にインストール機能により、HDD等に直接インストールできる上、使用するユーザー名等を選択することができます。
  • VMWare Playerや、VirtualBox等の仮想環境で起動して、仮想環境を作成することも簡単です。
  • VirtualBoxにインストールする方法は、書籍「OpenFOAMによる熱移動と流れの数値解析(第2版)」の付録A、または「オープンCAEのためのDEXCS for OpenFOAM ハンドブック」の付録AにDEXCS2020について詳しく記されており、基本は同じですが、setupDEXCS.sh を実行後の再ログイン画面が表示されない場合があります。その場合の対処法についてインストール方法のp.5,7,18,20-22あたりを参考にして下さい。結論的には、「ログアウト」メニューは使えないので、「再起動」メニューを使って下さい、ということです。
  • 共有ファイルの設定方法(インストール方法の39〜42ページ)もDEXCS2020以前と比べてかなり変更されています。
  • 国際化対応のレベルはDEXCS2015に同じ(英語版のみに対応)ですが、日本語⇆英語のベース環境切り替え方法が、DEXCS2015に比べやや煩雑になっています。(インストール方法の8〜13ページ)
  • 一部動作に不具合が確認されています(インストール方法の19ページ)。解決方法が見出だせませんでした。お判りの方、またこれ以外の不具合に気づかれた方はご連絡下さい。
  • FreeCADはDaily最新版(2021/10/9入手)が同梱されていますが、Windows版やMac版と互換性のあるAppImage版も同梱されています。切り替える方法についてはインストール方法メの23ページに、Daily版とAppImage版の機能比較については、24ページに記してあります。
  • FreeCADはDaily最新版は、頻繁に更新されており、ソフトウェア更新は可能ですが、稀に一部の機能不全が生じる可能性もある事を納得した上で実施して下さい。

同梱プログラム

その他のドキュメントについて

  • DEXCSランチャーのヘルプメニュー(上図)を参照下さい。
  • SLURMというリソースマネージャは今回もインストールしてありませんが、下記記事の方法によって追加インストールは可能(のはず)です。
  • JAVA gnuplot GUI の使用方法
    • http://dexcs.net/ocse2/?p=747
    • 上記記事で作成したプロジェクトファイルをケースファイルの在所を変えたり、別ケースで転用利用する際に、プロジェクトファイル中に記されているデータ在所(絶対パス名)を適合するツールを同梱しました。
  • 上記適合ツールは、DEXCSランチャーの左図ボタンにて起動します。⇒ 解説ページ
  • または、TreeFoam /十徳ナイフ /「汎用gnuplot-GUI(jgp)起動」メニューでも起動できます。
  • 但し、十徳ナイフ版では、実行時のダイヤログメッセージが日本語ではありません。
  • 更新された上記ツールの使用方法は、はじめてDEXCS2021、P.30-33を参照下さい。近日中に別途作成予定。
  • TreeFoamの基本的な使い方はTreeFoamのヘルプメニューから、「使い方」を参照して下さい。
    TreeFoamに関する情報は、DEXCS公式HPの AboutTreeFoamの記事にまとめてあります。
    DEXCS2021に搭載のTreeFOAMは、+dexcsSwakとして、上記公式ページに掲載ヴァージョンに対して独自のカスタマイズが加えてあります。

DEXCS2020 for OpenFOAM(R) リリースノート

解析シーン毎にTreeFoamのサブセット機能(グリッドエディダ等)を、FreeCADのツールボタンで起動できるようマクロ化してあります。

ダウンロードはこちら(2020/10/〜)



DEXCS for OpenFOAM(R) は、OpenFOAMと、これをより簡単・高度に活用できるようにする為の様々なツールをすべてインストール済のオール・イン・ワンパッケージで、誰でも(と言ってもCAEに無縁の人は対象外ですが・・・)簡単・即使えるようにしたマシンイメージ(isoファイル)です。

詳しくはこちら

DEXCSランチャーのヘルプメニューからも参照できます

DEXCS2020では、

  • ベースOSはubuntu-20.04.01 (LTS)
    • DEXCS2019まではubuntu-18.04系でしたが、メジャーヴァージョンアップです。
  • OpenFOAMやその他の組み込みツールのヴァージョンアップに対応
    • OpenFOAM-v2006
    • cfMesh v1.1.2 。

(cfMeshはOpenFOAM-v1712以降、modules としてOpenFOAM本体に組み込まれています)

  • ここまでは通常の毎年更新作業ですが、DEXCS2019からはDEXCSランチャーを仮想風洞試験という題材はそのままで、GUI操作方法を全く作り変えました
  • DEXCS2020では、これに少し機能追加したのと、ポータビリティを改良。つまり、これらはFreeCADのマクロなんですが、これまでDEXCS上でしか動作しなかったのを、DEXCSでない環境でも動かせる事を考慮したコードに書き換えています。まだ十分な動作確認まで至ってはおりませんが・・・
  • もう1点。TreeFoamがVer-3になって、python3で動くようになり、これにも対応した。
  • pyFoam は、OpenFOAM-v2006への対応はアナウンスされておりません。DEXCSランチャーやTreeFoamで使っている機能(pyFoamPlotWatcher.pyやFoamCleaCase.pyなど)についてのみ動作確認しており、その他の機能については動作未確認です。

インストールと利用法

詳しくはこちら(日本語と英語の切り替え方法も含む)

マシンイメージなので、DVDにイメージ書き込みすれば、DVDから起動してそのまま利用することができます。 (DEXCS初体験の人はこのライブDVDとして「まずは使ってみる」方法をお薦めします。)

  • 継続利用では起動後にインストール機能により、HDD等に直接インストールできる上、使用するユーザー名等を選択することができます。
  • VMWare Playerや、VirtualBox等の仮想環境で起動して、仮想環境を作成することも簡単です。
  • VirtualBoxにインストールする方法は、書籍「OpenFOAMによる熱移動と流れの数値解析」の付録AにDEXCS2015について詳しく記されていますが、基本は同じです。また、DEXCS2011までは、”Guest Additions”が入っておりませんでしたが、DEXCS2016では導入済みなので、共有ファイルの設定など(インストール方法メモの34〜36ページ)も同様に実施可能です。
  • 国際化対応のレベルはDEXCS2015に同じ(英語版のみに対応)ですが、日本語⇆英語のベース環境切り替え方法が、DEXCS2015に比べやや煩雑になっています。(インストール方法メモの8〜13ページ)
  • 一部動作に不具合が確認されています(インストール方法メの19ページ)。解決方法が見出だせませんでした。お判りの方、またこれ以外の不具合に気づかれた方はご連絡下さい。

同梱プログラム

その他のドキュメントについて

  • DEXCSランチャーのヘルプメニュー(上図)を参照下さい。
  • SLURMというリソースマネージャは今回もインストールしてありませんが、下記記事の方法によって追加インストールは可能(のはず)です。
  • JAVA gnuplot GUI の使用方法
    • http://dexcs.net/ocse2/?p=747
    • 上記記事で作成したプロジェクトファイルをケースファイルの在所を変えたり、別ケースで転用利用する際に、プロジェクトファイル中に記されているデータ在所(絶対パス名)を適合するツールを同梱しました。
  • 上記適合ツールは、DEXCSランチャーの左図ボタンにて起動します。⇒ 解説ページ
  • または、TreeFoam /十徳ナイフ /「汎用gnuplot-GUI(jgp)起動」メニューでも起動できます。
  • 但し、十徳ナイフ版では、実行時のダイヤログメッセージが日本語ではありません。

  • TreeFoamの基本的な使い方はTreeFoamのヘルプメニューから、「使い方」を参照して下さい。
    TreeFoamに関する情報は、DEXCS公式HPの AboutTreeFoamの記事にまとめてあります。
    DEXCS2020に搭載のTreeFOAMは、+dexcsSwakとして、上記公式ページに掲載ヴァージョンに対して独自のカスタマイズが加えてあります。

苦労譚

  • ParaViewビルド
  • FreeCAD AppImage版
  • FreeCADビルド版
  • リマスター容量の問題
  • /bin/sh の問題
  • VirtualBox Guest Additions

などなどありますが、近日中に書籍として上梓予定。DEXCS2019をベースとして書きかけ中のhtml版は特設ページにて公開中。書籍版は本DEXCS2020をベースに内容を更新作業中です。

(タイトル)未定(副題)DEXCS for OpenFOAM の使い方(第7章)

7. DEXCS-OFの拡張例



DEXCS-OFでは、OpenFOAMを実践的に活用できるべく、OpenFOAM以外にも様々なCAEツールを同梱し、isoイメージファイルとして公開している。

しかしながらisoイメージを作成するに際して、イメージの最大サイズが4GBを超えることが出来ないという規格上の制限があって、あれもこれもと同梱できないという事情がある。

ここでは、isoイメージを使って構築した計算環境(実計算機、仮想計算機を問わない)の上に、同梱できなかった有用なアプリケーションを追加インストールした拡張例について、これまで著者が公開してきた事例をいくつか紹介する。

なお、構築した計算環境がインターネット上の公開情報に直接アクセス出来るという前提での構築方法を記しているが、特に企業の職場で使用する場合に、インターネットにそもそもアクセス出来なかったり、出来たとしてもプロキシ経由でのパッケージインストールが出来ないなどの事も多い。かような場合の対処法についても記しておく。

7-1. SLURM

SLURMというのは、SchedMDにて開発されているオープンソースのリソースマネージャ(計算機管理システム)で、ジョブ管理システムとも呼ばれるソフトウェアの代表的なものの一つである。

一般的には、PCクラスタなど大規模な計算機システムを複数のユーザーで利用する場合に、複数のジョブの起動や終了を管理したり、ジョブの実行や終了を監視・報告するのに使われるもので、これにより計算機のリソースを効率良く使うことができるようになる。

DEXCS-OFは主に個人で使うパソコンにインストールして使用することを想定しているが、複数のユーザーで利用する事も可能であるという点と、仮に個人だけで使用する場合でも、複数のジョブをまとめて一括処理したい場合(注記1)などにはこの種のソフトがあると重宝するので、DEXCS2014〜2017までは同梱していた。

DEXS2018以降では同梱していないが、計算環境に応じた個別の設定が必要であるので、同梱したからといって初心者向けにはすぐに使えるという代物ではない。一方インストール方法も簡単になってきているので、使いたいという意欲のある人であれば、計算環境を構築した後で追加インストールして使ってもらえば良いという考え方に至った。

インストール方法

インストール方法は簡単で、パッケージインストールが可能であり、以下のコマンドを入力するだけである。

$ sudo apt install munge slurm-wlm

ここでインストールしているのが、SLURM本体であるslurm-wlm とそれ以外に、munge をインストールしている点に留意されたい。これはユーザー認証を司るもので、DEXCS2017まではこれを使用しないで秘密鍵方式で実施していたのを、このmungeを使うことで、インストールも以下の設定も簡単になったという事である。

設定方法

インストールが正しく実施出来ると、/etc/slurm-llnl/というフォルダが出来ているはずであり、中味は空である。ここに、slurm.confというファイルを以下の内容で収納しておく(要管理者権限)。

# slurm.conf file generated by configurator easy.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ControlMachine=localhost
#ControlAddr=
#
#MailProg=/bin/mail
MpiDefault=none
#MpiParams=ports=#-
ProctrackType=proctrack/pgid
ReturnToService=1
SlurmctldPidFile=/var/run/slurm-llnl/slurmctld.pid
#SlurmctldPort=6817
SlurmdPidFile=/var/run/slurm-llnl/slurmd.pid
#SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm-llnl/slurmd
SlurmUser=slurm
#SlurmdUser=root
StateSaveLocation=/var/lib/slurm-llnl/slurmctld
SwitchType=switch/none
TaskPlugin=task/none
#
#
# TIMERS
#KillWait=30
#MinJobAge=300
#SlurmctldTimeout=120
#SlurmdTimeout=300
#
#
# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
#SchedulerPort=7321
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
#
#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
ClusterName=localhost
#JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
#SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log
#SlurmdDebug=3
SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
#
#
# COMPUTE NODES
NodeName=localhost CPUs=4 Sockets=1 CoresPerSocket=4 ThreadsPerCore=1 State=UNKNOWN
PartitionName=debug Nodes=localhost Default=YES MaxTime=INFINITE State=UP

ここで注意を要するのが、計算環境に応じてカスタマイズが必要な箇所があるという点である。具体的には朱字で記した部分で、この数字部分がマシンのスペックに合致していないと、エラーとなって起動できない場合がある。自分が使っているマシンのスペックが判らない場合には注記2を参考に調べていただきたい。

SLURMの起動

$ sudo systemctl enable slurmctld
$ sudo systemctl start slurmctld
$ sudo systemctl enable slurmd
$ sudo systemctl start slurmd

動作確認

うまく動かない時

/var/log/slurm-llnl/ の下に、ログファイルが出力されているので、これを読めば何とか対処できるんでないかと思います。

自分の経験では、slurm.confの記述間違いに起因するエラーが大半でした。

また、sinfo コマンドでSTATEが drain と表示されていると、ジョブを投入してもペンディング状態のまま、いつまでたってもジョブは実行されません。

この場合、ペンディングされたジョブをキャンセル(scancel)して、

$ scancel <job-id>
$ sudo scontrol update nodename=localhost state=idle

DEXCS-OFにおける推奨活用法

SLURMでジョブを実行管理する為には、ジョブを実行するスクリプトが必要になる。DEXCSの標準チュートリアルを題材に作成したスクリプトを以下に示す。

 1 #!/bin/bash
 2 #SBATCH -n 2
 3 #SBATCH -J OpenFOAM
 4 #SBATCH -e submit.sh.e%J
 5 #SBATCH -o solve.log
 6 . /opt/OpenFOAM/OpenFOAM-v1906/etc/bashrc
 7 . $WM_PROJECT_DIR/bin/tools/RunFunctions
 8 rm -rf ./processor*
 9 cartesianMesh
10 checkMesh
11 pyFoamDecompose.py . ${SLURM_NPROCS}
12 mpirun $(getApplication) -parallel
13 reconstructPar -latestTime

2〜5行目で、行頭に#SBATCH とあるのが、いわゆるSLURMコマンドとなって、ハイフォン(-)に続く文字がコマンド、その後にパラメタが記されている。

  • 2行目(-n)は、使用するプロセッサの数であり、上例では2つ使用するという意味
  • 3行目(-J)は、ジョブの名前で、何でも良いが日本語は不可。
  • 4行目(-e)エラーログの出力ファイル名を指定しており、%Jの部分にはジョブ番号が割り当てられる。
  • 5行目(-o) 実行時の標準出力名をしている。一般的にはエラーファイル名と同様、%Jを含む形で指定する事が多いが、本例のようにsolve.log という名前にしておくと、後述するTreeFoam上で計算状況の監視が可能になる。
  • 6行目 OpenFOAMの環境設定
  • 7行目 OpenFOAMの組み込み関数を使用できるようにする(本例では12行目で使用している$(getApplication))
  • 8行目 領域分割データがあったら削除
  • 9行目 メッシュ作成(既存メッシュを使う場合には不要)
  • 10行目 メッシュチェック
  • 11行目 領域分割をpyFoamコマンドで実施。これを使うと、領域分割数を指定するだけで良いので、この場合は${SLURM_NPROCS}とすることで、2行目で指定したプロセス数をそのまま引き継げる事になる。
  • 12行目 $(getApplication)で取得したアプリケーション(本例ではsimpleFoam)を、並列計算で実行
  • 13行目 計算結果を領域結合

上記スクリプト(submit.sh としておくが、名前は何でも良い)を解析フォルダ(dexcsTutorials)中に収納しておこう。

以下に、TreeFoamを使って、このdexcsTutorialsケースのパラメタを各種変更したケースを作り、バッチジョブとして実行する手順を以下に説明する。

ケースのコピーは、コピーしたいケース(dexcsTutorials)を選択して、①右クリックメニューから、②「コピー」、コピー先の親フォルダ(DEXCS)を選択して③マウス右クリックメニューから、④「case貼付け」を使うことで、計算結果を除いたデータがコピーされ、名前は元ケースの名前に、_copy0 が自動付加される。

ケースのコピーが出来たら、これを①「解析caseに設定」し、必要なパラメタを変更した後、メニューの「十徳ナイフ」より、②「バッチジョブをサブミット」を選択。

そうすると、サブミットファイルの選択画面が現れるので、事前に用意したsubmit.sh を選択、④「Open」ボタンを押し、実行確認画面で⑤「OK」ボタンを押せば、サブミットが実行される。

同様なやり方で、パラメタ変更したいケースの数ケースフォルダを準備しておき、それぞれのケース毎に計算パラメタを変更し、サブミットを実行する。

上図の例では、3つのケースフォルダを作成・編集して、サブミットした後、メニューの「十徳ナイフ」より、「バッチジョブの確認」を選択したものである。ここで最初に投入したジョブ(JOBID=11)のST(ステータス)がR(=実行中)であり、残りのジョブ(12,13)のSTがPD(=ペンディング、待ち状態)であることがわかる。

以後は、最初のジョブの計算が終了すれば次のジョブが実行されることになり、終了したジョブは上記リストから削除されていくので、適宜確認しながら、その間安心して他の業務に取り掛かる事が出来るというのが嬉しい所である。


注記1

複数の計算を実施したい場合に、同時に実行するとコア数やメモリ不足を生じる場合が生じる。かような場合には、ひとつずつ順番にジョブを実行する必要がある。複数ジョブの数が多い場合や、少なくても計算に長時間を要する場合に、この順番制御を手動でやるのは非常に効率が悪い。

注記2 マシンのスペック確認方法

論理プロセッサ数
$ cat /proc/cpuinfo | grep “processor”
⇒ CPUs
物理CPUの数
$ cat /proc/cpuinfo | grep “physical id” | uniq
⇒ Sockets
物理コアの数
$ cat /proc/cpuinfo | grep “cpu cores” | uniq
⇒ CoresPerSocket

注記3 サブミット時の実行エラー

サブミットを実行した際、以下のエラーが出る。

sbatch: error: Batch script contains DOS line breaks (\r\n)
sbatch: error: instead of expected UNIX line breaks (\n).

これは特に仮想環境がWindowsマシン上の仮想マシンで有る場合に起こりがちな事で、ジョブ実行スクリプトをWindowsマシン上で作成して、そのファイルを直接使った場合に生じる。DOS(Windows)とUNIX(Linuxも同じ)とではテキストファイルの改行コードが異なる事に起因するエラーである。

linuxには、これに対処する為の変換コマンド(dos2unix)が存在するが、DEXCS-OFには同梱していない(次期ヴァージョンからは同梱予定)ので、これをインストールして変換して使うのが一つの方法。つまり、

$ sudo apt install dos2unix
$ dos2unix submit.sh

また、インストールが出来ない環境なり、端末での操作を極力避けたいという人向けには、テキストエディタを使って変換する事も可能である。つまり、問題のファイルをテキストエディタで開いて、「置換」メニューを使っても良い(下図参照)。

あるいは、全テキスト内容をコピーして、新規ファイルにコピー。新規ファイルを別名で保存すれば、別名で保存したファイルはunix形式として保存されることになる。


7-2. DAKOTA


7-3. PreCICE


7-4. インターネット経由でのインストールが出来ない場合


この章の最初へ 全体目次