エラー集 ・エマージェンシーモードになってしまった(通常ログインできず,rootでメンテナンスしてください,という表示が出てくるもの). →HDDのマウントに関して不備があるとこうなる.mount -a でエラーを見て /etc/fstab を編集すると治る ・pbsで計算ノードがunknown, downとなって認識してくれない ・認識はしてくれるけどジョブ投入してもずっとQ(待機中)で動いてくれない →/etc/hostsが大いに関係しているっぽい 計算ノードの/etc/hostsの一番上に管理ノード(asama)の情報が来るようにしないと認識されない /etc/hostsをNISで共有するとうまく走ってくれないから,外す 管理ノード/etc/hostsの 127.0.0.1 asama を消すとPBSサーバがstopできなくなる.qmgrの編集も権限がないと言われる かといってこれを消さないとジョブが走ってくれない →一回書いた状態でSERVERをstopさせる hostsを編集し,消す(コメントアウトする) SERVERをstartさせる とするとうまく走る 127.0.0.1 asama の行があるとPBS_SCH(スケジューラ)が動いてくれない. hostがunknownであったりnot allowedであったりで動かなくなる. ↑この状態でも動かなくなった.何度かrebootしたら治ったけどもうよくわからない. ・ジョブ投入してちゃんと実行状態になってるけど一向に終わる気配がない →/work00/openmpi/bin/mpiexecのパスが/opt/pbs/bin/mpiexecより先に通ってるとこうなる. .bashrcでpbsのmpiexecのパスを先に書く(同じコマンドがあるっていうのが紛らわしいよね) コマンドでジョブを投入するときにslotが足りないと言われる. →ジョブを投入したノードのコア数より並列数が多いと走ってくれないっぽい. asamaの場合計算ノードは12コア,管理ノードは2コアだから,管理ノードでは3並列以上,計算ノードでは13並列以上のジョブは回せない. これはまずいのでは? ジョブスクリプトだと管理ノードからでも3並列以上のものでも回せるが,やはり13並列以上は無理 24並列の計算ができなければクラスタ化した意味がない. ちなみにnozomiでもそう.実はnozomiも並列計算機ではないのでは?→一番下の項目を参照せよ,hostfileを指定すると走る. ./etc/shadow ./etc/passwdディレクトリの名前を書き替えてしまった. (NIS使わなくてもNSFでこれらのディレクトリをネットワークに公開すればいいんじゃないかと思って書き換え,その時にあろうことかsudo からexitしてしまった.) (ちなみに両ディレクトリはNFSで公開できなかった.重要なファイルだからだろうか) →superuserを抜けていたら終わり,OSの再インストール ・コンパイルできない →かなりの確率で環境変数の設定が原因 printenvで間違いがないかをよーく確認 Fortranの年代による違いを無視する?(詳細は確認してない)設定 $ export FCFLAGS="-fallow-argument-mismatch" $ export FFLAGS="-fallow-argument-mismatch" netcdf-fortran と spml はこれで対応 最悪DCPAMのコンパイルに必要なファイルだけコンパイルできればいいので,make -i を使ってみるのもありかもしれない make -i を使ってビルドすると例えばlibファイルが無かったりする.けど必要なファイルが入っていれば問題ない場合がある→gtool5はこれで何とかした. 設定をいろいろと変えているのに全く make できる気配がない. →環境変数を変更した後は make clean をした後に ./configure からやり直さないと反映されない. HDDが異常なほど遅い →/etc/fstab での/work00 の設定を変えると改善する UUID=a0af4a02-ee7b-4a05-85a3-3ec280bb2d26 /work00 ext4 defaults 0 2 の defaults の部分は設定によっては遅くなることがある あと s をつけ忘れて default としてしまうと OS がエマージェンシーモードになってしまうから注意 指定した並列数を満たすslotが存在しないと言われる. (There are not enough slots available in the system to satisfy the XX slots that were requested by the application: ...) →指定した並列数が多すぎる(Eコア有効時は並列数20以上を,Eコア無効時は並列数17以上を指定するとこうなる)可能性あり,適正値に書き換えよ. or →hostfileを記入し,スクリプトにそのパスを書くと解決する.asamaの場合ホストファイルは/work00/openmpi1/hostとして存在する. 中身は以下の通り---- asama101 slots=12 asama102 slots=12 -------------------- データ分割ソフトがmakeできない →Makefile に適当なライブラリのパスを記入する. 16行目 NCDIR = /work00/lib-mpi/netcdf-c-4.6.3-mpi 27行目 NCDIR = /work00/lib-mpi/netcdf-fortran-4.4.5-mpi qsub run_dcpam.shの時に 共有ファイル(libgfortran.so.5)が見つかりませんといわれる →計算ノードにlibnetcdf5をインストールしていなかった # apt install lingfortran5 共有ファイルが無いと言われたら,各ノードで以下のコマンド(実行に際して依存関係にあるファイルとその参照先を見るコマンド)を実行する. $ ldd bin/dcpam_main ここでどこかに not found があると走らない.環境変数を設定するなりして対処する. あと,分割ソフト(util_split...)で分割した数以上の並列数をジョブスクリプトで設定してしまうと,libnetcdff.so.6が無い,などといわれて実行できないので注意. DCPAM実行前の初期値データ生成のところで,並列数を2以上に設定してしまうと共有ライブラリがないというエラーが出てきてしまう. →計算ノードでやるとできる.マザボに積んでるCPUのコア数が関係している.これでは管理ノードの意味がない