Python 朱莉娅酒店
我试图通过同步DistributedArray的本地部分来并行运行这段代码,以便第一个进程的数组的第一行是200,而不是第二个数组的第一行,有人能帮忙吗Python 朱莉娅酒店,python,performance,parallel-processing,julia,distributed,Python,Performance,Parallel Processing,Julia,Distributed,我试图通过同步DistributedArray的本地部分来并行运行这段代码,以便第一个进程的数组的第一行是200,而不是第二个数组的第一行,有人能帮忙吗 using Distributed addprocs(2) @everywhere using DistributedArrays @everywhere using LinearAlgebra n=10 Z=zeros(n,n) #Z[1,:].=200 #Z[:,end].=200 Z=distribute(Z; dist=(2,1)) K
using Distributed
addprocs(2)
@everywhere using DistributedArrays
@everywhere using LinearAlgebra
n=10
Z=zeros(n,n)
#Z[1,:].=200
#Z[:,end].=200
Z=distribute(Z; dist=(2,1))
K=ones(n,1)
#K[1,:].=200
#K[end,:].=200
K=distribute(K; dist=(2,1))
#(i+1) % 2)+1,j
@sync @distributed for x in 1:nworkers()
localpart(Z)[1,:].=200
@sync @distributed for i in 2:length(localindices(Z)[1])
for j in 1:length(localindices(Z)[2])
localpart(Z)[i,j]=10*log(myid())+localpart(K)[i]
end
end
end
end
Z
试用
if DistributedArrays.localpartindex(Z) == 1; localpart(Z)[1,:].=200;end
此外,您不应该嵌套@分布式循环。而是使用一个参数,例如xi
,使x
和i
的值在xi
的基础上进行计算
if DistributedArrays.localpartindex(Z) == 1; localpart(Z)[1,:].=200;end
此外,您不应该嵌套@分布式循环。而是使用一个参数,例如xi
,这样x
和i
的值是基于xi
计算出来的。我不明白你想做什么。你可以展示一个工作的非分布式版本,然后尝试并行化它吗?我已经有了一个普通版本,现在我正在尝试将代码并行化,这是一个正常的版本,工作正常。看看,它们可能更适合你想做的事情。因为我在做覆盆子俱乐部的工作,我不明白你想做什么。你可以展示一个工作的非分布式版本,然后尝试并行化它吗?我已经有了一个普通版本,现在我正在尝试将代码并行化,这是一个正常的版本,工作正常。看看,它们可能更适合你想做的事情共享阵列不会工作,因为我正在处理树莓集群