annotate distributedTest.jl @ 150:4dc19757cada parallel_test

Minor cleanup.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 26 Feb 2019 11:27:04 +0100
parents 11b6646918d4
children 80f7d7abe47d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 @assert prod(nworkers_per_dim) == nworkers()
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
10 # 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
11 ci = CartesianIndices(nworkers_per_dim);
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
12 id = Tuple(ci[myid()-1])
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
13
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
14 # Compute the size of each partitioned grid
150
4dc19757cada Minor cleanup.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 149
diff changeset
15 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
16 # 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
17 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
18 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
19
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20 # 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
21 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
22 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
23 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
24 return grid
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25 end
21b188f38358 Started branch for testing out parallel computing
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26
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
27 @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
28 @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
29 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
30 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
31
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
32 gridsize = (10000, 10000); # Global grid size
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)
150
4dc19757cada Minor cleanup.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 149
diff changeset
40 # TODO: Fix initiation of nworkers_per_dim
4dc19757cada Minor cleanup.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 149
diff changeset
41 nworkers_per_dim = Int.(ntuple(x->nworkers()/2,2))
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
42 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
43 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
44 @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
45 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
46 Δ = 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
47 @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
48 end
147
aa18b7bf4926 Changed to initialize u and v as distributed arrays
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 146
diff changeset
49 @show maximum(abs.(u + v))