julia在循环中执行任务的最有效功能是什么?

时间:2019-03-20 04:01:50

标签: parallel-processing julia distributed

大家好,

基本上我有这个:

@sync @parallel for i in 1:100;
     V[i] = i
end

我真的没有任何问题。我正在使用julia 0.6.4,但我注意到新版本中不存在功能@parallel。所以我的问题是:还有一种更有效的方法来并行运行该简单任务吗?也许在朱莉娅的其他版本中。函数@distributed执行相同的操作吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果要将代码从0.6更新到1.0,请先逐步执行0.7。它与 1.0完全相同,但是带有友好的警告,告诉您如何更新代码!是的,在这种情况下,它将告诉您使用@distributed而不是@parallel并加载分布式标准库。

julia> @sync @parallel for i in 1:100;
            V[i] = i
       end
WARNING: Base.@parallel is deprecated: it has been moved to the standard library package `Distributed`.
Add `using Distributed` to your imports.
 in module Main
┌ Warning: `@parallel` is deprecated, use `@distributed` instead.
│   caller = eval(::Module, ::Any) at boot.jl:319
└ @ Core ./boot.jl:319

这只是一个重命名,并且有一个很好的理由是一个重命名:并行的形式很多,“并行”的“最有效”形式取决于您正在执行的任务(尤其是其运行时和IO) )和可用的硬件。