root / synthbench / euroben-dm / mod2g / btrans.f @ 0:839f52ef7657
History | View | Annotate | Download (974 Bytes)
1 |
Subroutine btrans (a, n1, n2, sizes, t) |
---|---|
2 |
! ------------------------------------------------------------- |
3 |
! --- 'btrans' performs a blockwise local transposition. Input |
4 |
! array is 'a', output array is 't' |
5 |
! ------------------------------------------------------------- |
6 |
Use numerics |
7 |
Use dist_module ! Contains #procs and no.s |
8 |
Implicit None |
9 |
|
10 |
Integer :: n1, n2, sizes(0:nodes-1,2) |
11 |
Real(l_) :: a(n1*n2), t(n1*n2) |
12 |
|
13 |
Integer :: m1, m2, b1, b2, i, j, k, l |
14 |
! ------------------------------------------------------------- |
15 |
b1 = 0; l = 1; m2 = sizes(me,1) |
16 |
Do k = 0, nodes - 1 |
17 |
m1 = sizes(k,2) |
18 |
b2 = 0 |
19 |
Do i = 1, m2 |
20 |
Do j = 1, m1 |
21 |
t(j+b1+b2) = a(l) |
22 |
l = l + 1 |
23 |
End Do |
24 |
b2 = b2 + n2 |
25 |
End Do |
26 |
b1 = b1 + m1 |
27 |
End Do |
28 |
! ------------------------------------------------------------- |
29 |
End Subroutine btrans |