2

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 ループが完了する前にこれらのデータにアクセスして保存する方法はありますか? ご協力いただきありがとうございます。

4

1 に答える 1