foreach パッケージを使用して、HPC を使用してモンテカルロ シミュレーションを並行して実行しています。foreach が必要な結果を返すことに問題はありませんが、ワークスペースを定期的に保存できるかどうか疑問に思っています。私が尋ねる理由は、ウォールタイム (その後ジョブが終了した後) を指定する必要があるため、1.ウォールタイムを低く設定し、foreach ループが終了して出力を保存する前にすべてを失うリスクがあるか、または 2.保守的な設定を設定することです。 walltime と割り当てを浪費しています。理想的には、出力を定期的に保存できるようにしたいと考えています。その場合、ジョブが終了してもデータが残っています。
例えば:
results <- foreach (ii = 1:100, .combine = rbind) %dopar% {
res1 <- ii^2
res2 <- matrix(sample(1:9,9,replace = F),nrow = 3, ncol = 3)
if (ii %% 10 == 0){
save.image("temp_save.RData")
}
results <- list(res1,res2)
}
save.image("final_save.RData")
> load("~/final_save.RData")
> results
[,1] [,2]
result.1 1 Integer,9
result.2 4 Integer,9
result.3 9 Integer,9
result.4 16 Integer,9
...
しかし、'temp_save' は空です。おそらく、'results' は foreach ループが終了した後にのみ生成されるためです。foreach ループが完了する前にこれらのデータにアクセスして保存する方法はありますか? ご協力いただきありがとうございます。