小编Joh*_*ito的帖子

在 Julia 的函数中使用 addprocs() 和 pmap()

在 Julia 中,我想在模块内部定义的函数中使用addprocspmap。这是一个愚蠢的例子:

module test

using Distributions

export g, f

function g(a, b)
  a + rand(Normal(0, b))
end

function f(A, b)

  close = false
  if length(procs()) == 1    #  If there are already extra workers,
    addprocs()               #  use them, otherwise, create your own.
    close = true
  end

  W  = pmap(x -> g(x, b), A)

  if close == true
    rmprocs(workers())       #  Remove the workers you created.
  end

  return W

end

end

test.f(randn(5), 1)
Run Code Online (Sandbox Code Playgroud)

这将返回一个很长的错误

WARNING: Module test …
Run Code Online (Sandbox Code Playgroud)

parallel-processing julia

5
推荐指数
1
解决办法
986
查看次数

在Julia中使用pmap时修复参数

我已经定义一个函数f(x, y, z)Julia,我想平行计算f的许多价值观x,保持yz固定.使用这种方法的"最佳实践"方法是什么pmap

如果它是类似的pmap(f, x, y = 5, z = 8),这就是apply家庭处理固定参数的方式R,那会很好,但它看起来并不那么简单.我已经设计出了解决方案,但我发现它们不够优雅,我怀疑它们会为我的目的很好地概括.

  • 我可以f在一个函数g中包装g(x) = f(x, y = 5, z = 8).然后我简单地打电话pmap(g, x).这不像我想的那么简约.
  • 我可以设置5和8,作为默认值yzf被定义,然后调用pmap(f, x).这让我感到不舒服,在这种情况下我想要修复y某个变量的值a,其中a(有充分的理由)在定义的时候f没有定义,但是会被f调用时.它有效,但有点让我感到害怕.

parallel-processing pmap julia

2
推荐指数
1
解决办法
239
查看次数

标签 统计

julia ×2

parallel-processing ×2

pmap ×1