Statistics
| Branch: | Revision:

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