Parallel processing 我们怎么能叫茱莉亚的莎达瑞?
我有一个函数,我想在主函数中调用它。所有参数都是Parallel processing 我们怎么能叫茱莉亚的莎达瑞?,parallel-processing,julia,Parallel Processing,Julia,我有一个函数,我想在主函数中调用它。所有参数都是sharedArray,我们有一个变量是type。当我想运行程序时,我遇到了一个错误 @everywhere type dty{T <: Real} ...... (some variable) end @everywhere function func2!(v::dty, out::SharedArray, out2::Shar
sharedArray
,我们有一个变量是type
。当我想运行程序时,我遇到了一个错误
@everywhere type dty{T <: Real}
...... (some variable)
end
@everywhere function func2!(v::dty,
out::SharedArray,
out2::SharedArray)
........
end
function func1()
...
out = SharedArray{Float64,2}(n,m)
out2 = SharedArray{Float64,2}(n,m)
......
func2!(v , out, out2)
end
你可以定义
@everywhere function func2!(v,
out,
out2)
它会起作用的。这些调度指定对性能没有任何作用。如果您想将其限制为“数组”,那么您可以这样做
@everywhere function func2!(v,
out::AbstractArray,
out2::AbstractArray)
同样,这不会影响性能,只用于设置调度和抛出错误。您的代码中发生的是您有
out::SharedArray
,当out
不是SharedArray
时抛出了一个错误(您的示例没有说明为什么它不是SharedArray
,但错误消息是说out
是矩阵
)在我想并行代码之前,out是一个矩阵。但矩阵是数组2D,当我使用typeof(out)时,我发现它可以是数组。所以我用它作为sharedArrayRight,但是如果你这样做的话,那么每个版本都会工作,不管你在里面放了什么数组。
@everywhere function func2!(v,
out::AbstractArray,
out2::AbstractArray)