3

Snow の並列計算が終了した後、エクスポートされた変数を削除する必要がありますか? clusterEvalQ が呼び出されても、「rsession」プロセスのメモリはあまり変更されないことがわかりました。以下のサンプルコードにはメモリの問題があると思われます

library(snow)
cl2 <- makeCluster(3, type = "SOCK")
data <- rep(1:10000,10000)

clusterExport(cl2,"data")

# is remove neccssary?
clusterEvalQ(cl2, rm( data, pos=globalenv() ) )  

stopCluster(cl2) 

ここに画像の説明を入力

4

1 に答える 1

1

クラスター ワーカーからエクスポートされたデータを削除すると、クラスター ワーカーのメモリは解放されますが、ローカル R セッションであるマスター プロセスのメモリは解放されません。これは、そのデータを必要としないクラスターでさらに作業を行う場合には非常に便利ですが、クラスターを停止するだけの場合は意味がありません。

エクスポートされたすべてのオブジェクトをシリアル化する必要があるため、呼び出し時にマスター プロセスでのメモリ使用量が大幅に増加する可能性がありますがclusterExport、そのメモリへの参照は保持されないため、最終的にはすべてガベージ コレクションによって解放される必要があります。gcあなたがしなければならないことは何もありませんが、より早く解放したい場合は電話をかけることができる mrip に同意します。また、サンプル コードに問題はないと思います。

于 2013-10-26T14:49:24.020 に答える