root / synthbench / euroben-dm / mod2b / distribute.f @ 0:839f52ef7657
History | View | Annotate | Download (793 Bytes)
1 |
Subroutine distribute( n, blocksize ) |
---|---|
2 |
! ----------------------------------------------------------------------- |
3 |
Use dist_module |
4 |
Implicit None |
5 |
|
6 |
Integer :: n, blocksize |
7 |
Integer :: i, rest |
8 |
! ----------------------------------------------------------------------- |
9 |
nb = blocksize |
10 |
Allocate( owner(n) ) |
11 |
Allocate( localindex(n) ) |
12 |
|
13 |
Do i = 1, n |
14 |
owner(i) = Mod( (i-1)/nb, nodes ) |
15 |
rest = 1 |
16 |
If ( me == owner(i) ) Then |
17 |
rest = Mod( i-1, nb ) + 1 |
18 |
Else If ( me < owner(i) ) Then |
19 |
rest = nb + 1 |
20 |
End If |
21 |
localindex(i) = ( (i-1)/( nodes*nb ) )*nb + rest |
22 |
End Do |
23 |
! ----------------------------------------------------------------------- |
24 |
End Subroutine distribute |
25 |
|