DistributedArrays.jl
DistributedArrays.jl copied to clipboard
localindices methods in conflict with SharedArrays
It seems like there is a conflict between localindices method between SharedArrays and DistributedArrays. Please, see the REPL output below.
10:46:39 $ julia-1.0 _ _ _ ()_ | Documentation: https://docs.julialang.org () | () () | _ _ | | __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ ` | | | | || | | | (| | | Version 1.0.2 (2018-11-08) / |_'|||_'_| | Official https://julialang.org/ release |__/ |
julia> using SharedArrays
julia> SharedArrays. SharedArray include range_1dim shm_unlink SharedMatrix indexpids sa_refs shmem_fill SharedVector init_loc_flds sdata shmem_rand _shm_mmap_array initialize_shared_array shared_pids shmem_randn eval localindices shm_mmap_array sub_1dim finalize_refs print_shmem_limits shm_open julia> using DistributedArrays WARNING: using DistributedArrays.localindices in module Main conflicts with an existing identifier.
help?> SharedArrays.localindices localindices(S::SharedArray)
Returns a range describing the "default" indices to be handled by the current process. This range should be interpreted in the sense of linear indexing, i.e., as a sub-range of 1:length(S). In multi-process contexts, returns an empty range in the parent process (or any process for which indexpids returns 0).
It's worth emphasizing that localindices exists purely as a convenience, and you can partition work on the array among workers any way you wish. For a SharedArray, all indices should be equally fast for each worker process.
help?> DistributedArrays.localindices localindices(d)
A tuple describing the indices owned by the local process. Returns a tuple with empty ranges if no local part exists on the calling process.
As suggested on discourse, the solution might be to add a function localindices
to Base
, and have both SharedArrays
and DistributedArrays
add methods to that function.