1

グリッドコンピューティング環境のRでいくつかの大規模な回帰モデルを実行しています。私の知る限り、グリッドはより多くのメモリとより高速なプロセッサを提供するだけなので、この質問は強力なコンピュータでRを使用している人にも当てはまると思います。

私が実行している回帰モデルには多くの観測値があり、それぞれに多くの(10または100)レベルを持ついくつかの因子変数があります。その結果、回帰は計算集約的になる可能性があります。スクリプトに3つの回帰を並べてグリッドに送信すると、メモリの制約により終了(クラッシュ)することに気付きました。ただし、3つの異なるスクリプトとして実行すると、正常に実行されます。

クリーンアップを行っているので、各モデルの実行後に、モデルオブジェクトを別のファイルrm(list = ls())に保存してすべてのメモリをクリアし、次のモデルを実行する前にgc()を実行します。それでも、1つのスクリプトで3つすべてを実行するとクラッシュするようですが、ジョブを分割することは問題ないようです。

システム管理者は、それを分割することが重要であると言っていますが、実行するたびにクリーンアップしているのであれば、理由はわかりません。3 in oneスクリプトは、とにかくそれらを順番に実行します。3つの個別のスクリプトを実行すると機能する理由を誰かが知っていますが、1つのスクリプトですべてのモデルを実行すると、Rでメモリの問題が発生しますか?

ありがとう!EXL

4

1 に答える 1

0

読む価値のある同様の質問: gc()コマンドを使用してガベージコレクションをRで実行するように強制するRでの メモリ使用量

私の経験では、Rはメモリ管理に優れていません。変数をスコープ外に出すことがgc()よりもうまく機能することを期待して、各回帰を関数に入れてみることができますが、私は息を止めません。それぞれを独自のバッチで実行できない特別な理由はありますか?Jorisが要求したより多くの情報も役立つでしょう。

于 2011-02-28T22:05:48.223 に答える