为什么在下面的 Julia 代码中,并行实现比串行运行慢?
using Distributed
@everywhere function ext(i::Int64)
callmop = `awk '{ sum += $1 } END { print sum }' infile_$(i)`
run(callmop)
end
function fpar()
@sync @distributed for i = 1:10
ext(i)
end
end
function fnopar()
for i = 1:10
ext(i)
end
end
val, t_par, bytes, gctime, memallocs = @timed fpar()
val, t_nopar, bytes, gctime, memallocs = @timed fnopar()
println("Parallel: $(t_par) s. Serial: $(t_nopar) s")
# Parallel: 0.448290379 s. Serial: 0.028704802 s
Run Code Online (Sandbox Code Playgroud)
这些文件infile_$(i)包含一列实数。经过一些研究,我遇到了处理类似问题的这篇文章和另一篇文章)。不过,如果考虑到 …