R
パッケージfuture
(非同期計算をサポート)を使用して、ジョブをキューに動的に追加または削除できるクラスタ・ジョブ・サーバーを作成します。将来のパッケージによるRのクラスタ・ジョブ管理
ジョブサーバに追加したい特定の機能の1つは、クラスタ内のより強力なマシンにメモリを要求するジョブを配布することです。しかし、私はパッケージに関する経験がないので、私のアプローチ(下記)に落とし穴があるかどうかは不明です。具体的には、その後のの呼び出しには、物事を混乱させる副作用がありますか?詳細については、コード内のコメントを参照してください。
ありがとうございます!ここfutureの
library(parallel)
library(future)
slaveIPs=c("172.16.2.10","172.16.2.21")
masterIP="172.16.2.33"
workers=makePSOCKcluster(slaveIPs,master=masterIP)
#check whether PSOCK cluster was correctly set up
unlist(clusterCall(workers,function(x) unname(Sys.info()["nodename"]))
#[1] "ip-172-16-2-10" "ip-172-16-2-21"
#now the first important part that I am not sure about
#as you can see, I only use workers[1] for the first task
#is it OK to use workers[1] like that?
plan(cluster,workers=workers[1])
f=future({
#do memory-hungry work
unname(Sys.info()["nodename"])
})
message(value(f))
#ip-172-16-2-10
#now I am only using workers[2] for the second task
#Is this ok? Does the previous call to 'plan' need some cleaning before?
plan(cluster,workers=workers[2])
f=future({
#do low-memory work
unname(Sys.info()["nodename"])
})
message(value(f))
#ip-172-16-2-21
stopCluster(workers)
大変です!あなたの助けと素晴らしい(!)パッケージのThx。 – cryo111