在Julia中将数组转换为SharedArray

Ale*_*ams 3 julia

简单的问题。假设我有一些Array:

julia> A = randn(3,3)
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为一个SharedArray可以通过并行进程访问/更改的?截至目前,尚未实现自动执行此操作的转换功能:

julia> SharedArray(A)
ERROR: MethodError: `convert` has no method matching ...
Run Code Online (Sandbox Code Playgroud)

我认为唯一的方法是使用构造函数(并传递适当的初始化函数init):

SharedArray(T::Type, dims::NTuple; init=false, pids=Int[])
Run Code Online (Sandbox Code Playgroud)

Rez*_*lan 5

sharedarray.jl中已经实现了不同的转换方法。一个波纹管定义了如何将数组转换为相同元素类型的SharedArray:

convert(::Type{SharedArray},A::Array)=(S=SharedArray(eltype(A),size(A));copy!(S,A))

因此,只需调用convert函数即可将数组转换为SharedArray:

julia> 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
Run Code Online (Sandbox Code Playgroud)