Mercurial > repos > public > sbplib_julia
annotate distributedTest.jl @ 151:80f7d7abe47d parallel_test
Removed unnecessary assertion
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 26 Feb 2019 11:49:56 +0100 |
parents | 4dc19757cada |
children |
rev | line source |
---|---|
148
95a3ba70bccb
Added some clarifying comments on the state of distributedTest.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
147
diff
changeset
|
1 #TODO: everywhere using here or just everywhere include? |
146
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
2 @everywhere using DistributedArrays |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
3 |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
4 # TODO: Currently uses integer division to calculate the local grid size. |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
5 # Should we make sure this is handled in some way if mod(sz./nworkers()) != 0 |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
6 # or keep assertions? |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
7 @everywhere function create_partitioned_grid(size::NTuple{Dim, Int}, limit_lower::NTuple{Dim, T}, limit_upper::NTuple{Dim, T}, nworkers_per_dim::NTuple{Dim, Int}) where Dim where T |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
8 @assert mod.(size, nworkers_per_dim) == (0,0) |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
9 # Translate the current worker id to a cartesian index, based on nworkers_per_dim |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
10 ci = CartesianIndices(nworkers_per_dim); |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
11 id = Tuple(ci[myid()-1]) |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
12 |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
13 # Compute the size of each partitioned grid |
150
4dc19757cada
Minor cleanup.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
149
diff
changeset
|
14 size_partition = Int.(size./nworkers_per_dim) |
146
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
15 # Compute domain size for each partition |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
16 domain_size = limit_upper.-limit_lower |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
17 domain_partition_size = domain_size./nworkers_per_dim |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
18 |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
19 # Compute the lower and upper limit for each grid partition, then construct the grid |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
20 ll_partition = limit_lower .+ domain_partition_size.*(id.-1) |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
21 lu_partition = limit_lower .+ domain_partition_size.*id |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
22 grid = sbp.Grid.EquidistantGrid(size_partition, ll_partition, lu_partition) |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
23 return grid |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
24 end |
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
25 |
149
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
26 @everywhere function timed_apply(op, u, v) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
27 @time sbp.apply_tiled!(op, u, v) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
28 return nothing |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
29 end |
148
95a3ba70bccb
Added some clarifying comments on the state of distributedTest.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
147
diff
changeset
|
30 |
149
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
31 gridsize = (10000, 10000); # Global grid size |
151
80f7d7abe47d
Removed unnecessary assertion
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
150
diff
changeset
|
32 nworkers_per_dim = (2,2) # Currently must have mod.(gridsize,n_workers_per_dim) == 0 |
148
95a3ba70bccb
Added some clarifying comments on the state of distributedTest.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
147
diff
changeset
|
33 v = dzeros(gridsize) # Distribured arrays |
95a3ba70bccb
Added some clarifying comments on the state of distributedTest.jl
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
147
diff
changeset
|
34 u = dzeros(gridsize) # Distribured arrays |
146
21b188f38358
Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
35 |
149
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
36 @sync @distributed for p in workers() |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
37 #Should these be declared globally or locally? |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
38 limit_lower = (0., 0.) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
39 limit_upper = (2pi, 3pi/2) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
40 init(x,y) = sin(x) + sin(y) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
41 grid = create_partitioned_grid(gridsize, limit_lower , limit_upper, nworkers_per_dim) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
42 @inbounds v[:L] = sbp.Grid.evalOn(grid, init) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
43 op = sbp.readOperator("d2_4th.txt","h_4th.txt") |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
44 Δ = sbp.Laplace(grid, 1.0, op) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
45 @inbounds timed_apply(Δ,u[:L], v[:L]) |
11b6646918d4
Rewrote the test using the @distributed macro instead of spawns. Seems to improve results.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
148
diff
changeset
|
46 end |
147
aa18b7bf4926
Changed to initialize u and v as distributed arrays
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
146
diff
changeset
|
47 @show maximum(abs.(u + v)) |