Julia 0.6 pmap函数

时间:2017-10-14 23:25:37

标签: parallel-processing julia pmap

我想对一个名为Progressive Hedging的优化分解算法进行并行化。这个优化存储在一个名为PH的函数中,该函数接收模型的参数,一些参数是矩阵,但PH只需要以这种方式从该矩阵中得到一个向量。

for s = 1:nS
    res = PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,s])
    push!(data,res)
end

所以PH只需要一个来自Pmax,Prmax和COpe的矢量。

为了对比,我试着这样做。

 pmap(s -> PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,]),1:nS)

但我明白了:

The applicable method may be too new: running in world age 21846, while current world is 21965.

我正在使用Julia 0.6,也许我编程的方式来自旧版本。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我最近在0.6中遇到过pmap()的类似问题。尝试将f中的参数pmap(f,c...)分配给具体函数,即

createPH(s) = PH(k,s,data,Lines,Ag,Gx,Pmax[:,s],Prmax[:,s],COpe[:,])
pmap(createPH,1:nS)

这解决了我的问题。 (另请注意,在0.6.0中会生成警告,而不是world age错误)