简单的问题。假设我有一些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)
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)