SLURM

2017-11-01 71 views
0

私はクラスタ上Rでシミュレーションを実行していますを使用するときにRのコードをデバッグします。各Rファイルには100個のモデルが含まれています。各モデルは異なるデータセットを分析します。クラスタコマンドは、以下に示すslurmファイルに含まれています。SLURM

モデルの小さな割合は明らかにヘッセ行列を推定することが十分に収束しないとエラーがこれらのモデルのために生成されます。エラーは、エラーログファイルに格納されます。しかし、100のモデルのうちどれがエラーを生成しているか、パラメータ推定、エラーログファイル、および出力ログファイルを調べることはできません。ここで

Error in chol.default(fit$hessian) : 
    the leading minor of order 3 is not positive definite 
Calls: chol2inv -> chol -> chol.default 

パラメータ推定値は、これらのエラーにもかかわらず、返されるエラーメッセージの例です。一部のSEは膨大ですが、エラーメッセージが返されない場合でもSEが大きくなることがあります。

下のslurmファイルに追加の行を追加すると、エラーとその残りの出力の両方を含むログファイルが生成され、元の場所にエラーが表示されます(たとえば、私のWindowsラップトップに表示されます)。そうすれば、ログファイルを見てどのモデルがエラーを生成しているかを素早く判断することができます。私は回避策を考えようとしてきましたが、これまでに何かを考え出すことはできませんでした。ここで

slurmファイルです:

#!/bin/bash 
#SBATCH -J JS_N200_301_400_Oct31_17c.R 
#SBATCH -n 1 
#SBATCH -c 1 
#SBATCH -N 1 
#SBATCH -t 2000 
#SBATCH -p community.q 
#SBATCH -o JS_N200_301_400_Oct31_17c.out 
#SBATCH -e JS_N200_301_400_Oct31_17c.err 
#SBATCH --mail-user [email protected] 
#SBATCH --mail-type ALL 
Rscript JS_N200_301_400_Oct31_17c.R 

答えて

1

これはあなたが望むものであるが、Rオプションerrorは(あなたがそうでなければキャッチしないこと)のエラーでどうするかを制御することを可能にするかどうかわかりません。例えば、あなた*の.Rスクリプトの先頭に

options(error = function() { 
    traceback(2L) 
    dump.frames(dumpto = "last.dump", to.file = TRUE) 
}) 

、または.Rprofile起動スクリプトに、なります(a)の出力トレースバックを設定することが、より重要なことがあるエラーがだが、あれば、それは(Bもよget(load(ない間違いであることを、

dump <- get(load("last.dump.rda")) 

注:)あなたは、新鮮なRセッションにロードすることができ、last.dump.rdaをファイルにコールスタックをダンプします。ここdumpを使用すると、コールスタックとその内容を検査することを可能にするクラスdump.framesの目的です。

もちろん、他の事をするerrorをカスタマイズすることができます。

0

クラスタ担当のIT担当者から、slurmファイルのエラーログへの参照を削除するだけで、出力ログにエラーメッセージを追加できることが分かった。下記参照。それは十分に良いようです。

私は(私は最初からやっているはずです)を添加し、明確にするための出力開始時にログにモデル番号と各モデルの出力の最後にもする予定。

#!/bin/bash 
#SBATCH -J JS_N200_301_400_Oct31_17c.R 
#SBATCH -n 1 
#SBATCH -c 1 
#SBATCH -N 1 
#SBATCH -t 2000 
#SBATCH -p community.q 
#SBATCH -o JS_N200_301_400_Oct31_17c.out 
#SBATCH --mail-user [email protected] 
#SBATCH --mail-type ALL 
Rscript JS_N200_301_400_Oct31_17c.R 
関連する問題