From 3519d5617bdf3284bc9a75265723b67b7fe9a805 Mon Sep 17 00:00:00 2001 From: Joseph Tomlinson Date: Tue, 18 Sep 2018 10:59:41 -0400 Subject: [PATCH 1/4] Fixes Edge Cases with #167 --- src/darray.jl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/darray.jl b/src/darray.jl index 76ffc50..3c50805 100644 --- a/src/darray.jl +++ b/src/darray.jl @@ -285,7 +285,17 @@ end # get array of start indices for dividing sz into nc chunks function defaultdist(sz::Int, nc::Int) if sz >= nc - return ceil.(Int, range(1, stop=sz+1, length=nc+1)) + chunk_size = div(sz,nc) + remainder = rem(sz,nc) + grid = Array(1:chunk_size:sz+1) + for i = 1:(nc+1) + if i<= remainder + grid[i] += i-1 + else + grid[i] += remainder + end + end + return grid else return [[1:(sz+1);]; zeros(Int, nc-sz)] end From 13030a132358ee422b22adad69f8e9754aec722e Mon Sep 17 00:00:00 2001 From: Joe Tomlinson Date: Tue, 18 Sep 2018 19:54:51 -0400 Subject: [PATCH 2/4] Test for Edge Case --- test/darray.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/darray.jl b/test/darray.jl index 19d3214..9087185 100644 --- a/test/darray.jl +++ b/test/darray.jl @@ -62,7 +62,10 @@ using SparseArrays: nnz @test fetch(@spawnat MYID length(localpart(DA)) == 2) @test fetch(@spawnat OTHERIDS length(localpart(DA)) == 1) close(DA) + @test defaultdist(50,4) == [1,14,27,39,51] end + + end check_leaks() From bfc273cbe1cc1c48008ffbfd7b628a48e48dde5f Mon Sep 17 00:00:00 2001 From: Joe Tomlinson Date: Tue, 18 Sep 2018 19:59:52 -0400 Subject: [PATCH 3/4] Fixed Issue with Test --- test/darray.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/darray.jl b/test/darray.jl index 9087185..d365b36 100644 --- a/test/darray.jl +++ b/test/darray.jl @@ -62,7 +62,7 @@ using SparseArrays: nnz @test fetch(@spawnat MYID length(localpart(DA)) == 2) @test fetch(@spawnat OTHERIDS length(localpart(DA)) == 1) close(DA) - @test defaultdist(50,4) == [1,14,27,39,51] + @test DistributedArrays.defaultdist(50,4) == [1,14,27,39,51] end From b56dd0d4af8ecb3fafa744655647c813de053d48 Mon Sep 17 00:00:00 2001 From: Joseph Tomlinson Date: Fri, 16 Nov 2018 10:24:27 -0500 Subject: [PATCH 4/4] Fixed Issue When Remainder > Chunk_Size --- src/darray.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/darray.jl b/src/darray.jl index 3c50805..9150381 100644 --- a/src/darray.jl +++ b/src/darray.jl @@ -287,8 +287,9 @@ function defaultdist(sz::Int, nc::Int) if sz >= nc chunk_size = div(sz,nc) remainder = rem(sz,nc) - grid = Array(1:chunk_size:sz+1) + grid = zeros(Int64, nc+1) for i = 1:(nc+1) + grid[i] += (i-1)*chunk_size + 1 if i<= remainder grid[i] += i-1 else