为什么下面的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
infile_$(i)
文件包含单列实数。经过一些研究,我遇到了这个帖子和这个其他帖子),它们处理类似的问题。然而,如果考虑Julia正在快速发展的速度,它们似乎有点过时。有没有办法改进这个并行部分?非常感谢您的帮助。