简单问题。让我们说我有一些数组:
julia> A = randn(3,3)
如何将其转换为SharedArray
以便并行进程可以访问/更改它?截至目前,没有实现转换功能来自动执行此操作:
julia> SharedArray(A)
ERROR: MethodError: `convert` has no method matching ...
我认为执行此操作的唯一方法是使用构造函数(并传递适当的初始化函数init
):
SharedArray(T::Type, dims::NTuple; init=false, pids=Int[])
答案 0 :(得分:5)
sharedarray.jl 中已实施了不同的转换方法。下面的一个定义了如何将数组转换为相同元素类型的SharedArray:
convert(::Type{SharedArray},A::Array)=(S=SharedArray(eltype(A),size(A));copy!(S,A))
因此,只需调用convert function:
即可将数组转换为SharedArrayjulia> src=ones(2,4)
2x4 Array{Float64,2}:
1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0
julia> convert(SharedArray,src)
2x4 SharedArray{Float64,2}:
1.0 1.0 1.0 1.0
1.0 1.0 1.0 1.0
答案 1 :(得分:3)
这是一种简单的方法。不确定是否有更好的东西:
em