Tôi đang chuẩn bị một bài thuyết trình nhỏ trong Ipython, nơi tôi muốn cho thấy việc thực hiện song song dễ dàng như thế nào ở Julia.Julia tính toán song song trong IPython Jupyter
Đó là cơ bản một tính toán Monte Carlo Pi described here
Vấn đề là tôi không thể làm cho nó hoạt song song bên trong một IPython (Jupyter) Máy tính xách tay, nó chỉ sử dụng một.
tôi bắt đầu Julia như: julia -p 4
Nếu tôi xác định các chức năng bên trong REPL và chạy nó ở đó nó hoạt động ok.
@everywhere function compute_pi(N::Int)
"""
Compute pi with a Monte Carlo simulation of N darts thrown in [-1,1]^2
Returns estimate of pi
"""
n_landed_in_circle = 0
for i = 1:N
x = rand() * 2 - 1 # uniformly distributed number on x-axis
y = rand() * 2 - 1 # uniformly distributed number on y-axis
r2 = x*x + y*y # radius squared, in radial coordinates
if r2 < 1.0
n_landed_in_circle += 1
end
end
return n_landed_in_circle/N * 4.0
end
function parallel_pi_computation(N::Int; ncores::Int=4)
"""
Compute pi in parallel, over ncores cores, with a Monte Carlo simulation throwing N total darts
"""
# compute sum of pi's estimated among all cores in parallel
sum_of_pis = @parallel (+) for i=1:ncores
compute_pi(int(N/ncores))
end
return sum_of_pis/ncores # average value
end
julia> @time parallel_pi_computation(int(1e9))
elapsed time: 2.702617652 seconds (93400 bytes allocated)
3.1416044160000003
Nhưng khi tôi làm:
using IJulia
notebook()
Và cố gắng làm điều tương tự bên trong Máy tính xách tay nó chỉ sử dụng 1 lõi:
In [5]: @time parallel_pi_computation(int(10e8))
elapsed time: 10.277870808 seconds (219188 bytes allocated)
Out[5]: 3.141679988
Vì vậy, tại sao Jntyter không sử dụng tất cả các lõi? Tôi có thể làm gì để nó hoạt động?
Cảm ơn.
Bạn đã thử sửa đổi tệp 'kernel.json' tương ứng và thêm công tắc' -p' vào đó chưa? – cel
Điều gì xảy ra nếu 'addprocs (4)' được phát hành đầu tiên trong sổ ghi chép? – rickhg12hs
@ rickhg12hs, tôi nghĩ rằng điều này sẽ làm việc và nếu như vậy đây là một giải pháp đẹp hơn nhiều so với tập tin hạt nhân xấu xí của tôi hack. – cel