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)