I think you are messing up with what is a matrix for ScaLAPACK.
Here is an example, consider the 7-by-7 matrix
- Code: Select all
( 0 1 2 3 4 5 6 )
( 1 7 8 9 A B C )
( 2 8 D E F G H )
( 3 9 E I J K L )
( 4 A F J M N O )
( 5 B G K N P Q )
( 6 C H L O Q R )
we are going to map it on a 2-by-2 process grid with 2-by-2 blocks, this gives
the following blocking
- Code: Select all
( 0 1 | 2 3 | 4 5 | 6 )
( 1 7 | 8 9 | A B | C )
-----------------------
( 2 8 | D E | F G | H )
( 3 9 | E I | J K | L )
-----------------------
( 4 A | F J | M N | O )
( 5 B | G K | N P | Q )
-----------------------
( 6 C | H L | O Q | R )
and get partitionned as:
- Code: Select all
Process (0,0) Process (0,1) Process (1,0) Process (1,1)
( 0 1 4 5 ) ( 2 8 F G ) ( 2 3 6 ) ( D E H )
( 1 7 A B ) ( 3 9 J K ) ( 8 9 C ) ( E I L )
( 4 A M N ) ( 6 C O Q ) ( F J O ) ( H L R )
( 5 B N P ) ( G K Q )
So that when you only want to reference the lower part you end up with
- Code: Select all
Process (0,0) Process (0,1) Process (1,0) Process (1,1)
( 0 ) ( 2 8 ) ( ) ( D )
( 1 7 ) ( 3 9 ) ( ) ( E I )
( 4 A M ) ( 6 C O Q ) ( F J ) ( H L R )
( 5 B N P ) ( G K )
We agree on this?
Start again with your full symmetric matrix, give a try to PDLASET, to set ZERO in
the upper part, then try PDPOSV (this will work) and check what form the input
matrix as.
Good luck,
Julien.