Hello im trying to run this for loop parallel on evwery Process but still getting Error ,I Triyed it in 2 ways, can someone Help please?thanks
using Distributed
addprocs(2)
@everywhere using DistributedArrays
@everywhere using SharedArrays
A = SharedArray[{Float64}(n-1,n-1)
@distributed (+) for i in 1:n-2
A[i,i+1] = -1
A[i,i] = 2
A[i+1,i] = -1
end
@sync @distributed for i in 1:n-2
A[i,i+1] = -1
A[i,i] = 2
A[i+1,i] = -1
end
ERROR: LoadError: SingularException(1)
Stacktrace:
[1] ldiv!(::Diagonal{Float64,Array{Float64,1}}, ::Array{Float64,2}) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\LinearAlgebra\src\diagonal.jl:575
The code runs for me, so you must be doing something else that is resulting in the issue. Could you please post a self-contained example that doesn’t work? You might want to run this example in a separate julia session to verify that this works.
julia> using Distributed
julia> addprocs(2)
2-element Array{Int64,1}:
2
3
julia> @everywhere using SharedArrays
julia> n=10
10
julia> A = SharedArray{Float64}(n-1,n-1);
julia> @distributed (+) for i in 1:n-2
A[i,i+1] = -1
A[i,i] = 2
A[i+1,i] = -1
end
-8
julia> A
9×9 SharedArray{Float64,2}:
2.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
-1.0 2.0 -1.0 0.0 0.0 0.0 0.0 0.0 0.0
0.0 -1.0 2.0 -1.0 0.0 0.0 0.0 0.0 0.0
0.0 0.0 -1.0 2.0 -1.0 0.0 0.0 0.0 0.0
0.0 0.0 0.0 -1.0 2.0 -1.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0 -1.0 2.0 -1.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 -1.0 2.0 -1.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 -1.0 2.0 -1.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.0 0.0
Thanks for the reply here ist the complete code
FD-Solution of Poisson-Equation on [0,1]
using Distributed
addprocs(1)
@everywhere n=10
@everywhere using LinearAlgebra
@everywhere using SharedArrays
@everywhere using DistributedArrays
using Plots
@everywhere function Plot_Poisson_Equation(n)
A = SharedArray{Float64}(zeros(n-1,n-1))
#creating a 3 Diagonal Matrix
@distributed (+) for i in 1:n-2
A[i,i+1] = -1
A[i,i] = 2
A[i+1,i] = -1
end
A[n-1,n-1] = 2
return A
end
@everywhere function secondpar_b(n)
h = 1/n
b = h^2 * ones(n-1,1)
end
#calling each function on separate process (Parallel)
end
A = fetch(@spawnat 1 Plot_Poisson_Equation(n))
b = fetch(@spawnat 2 secondpar_b(n))
u = A\b
#adding boundary condition
u = [0 u’ 0]’
h = 1/n
plot(collect(0:h:1),u,background_color= BGR(0.1,0.1,0.1),lw=3)
xlabel!(“x”)
ylabel!(“y”)
title!(“FD-Solution of Poisson-Equation on [0,1]”)