About global variable management in Scalapack

Open discussion regarding features, bugs, issues, vendors, etc.

About global variable management in Scalapack

Postby zhiminw » Sat Aug 15, 2015 9:28 am

Pls See the example:
program test

INTEGER :: LWORK, MAXN, LDA,M, N, MAXMAXN, MAXPROCS
REAL, PARAMETER :: MONE = -1.0E+0, ZERO = 0.0E+0

* ..
* .. Local Scalars ..
INTEGER :: CONTEXT, I, IAM, INFO, MYCOL, MYROW, NB
INTEGER :: NPCOL, NPROCS, NPROW

REAL, DIMENSION(:,:), ALLOCATABLE :: A

ALLOCATE(WORK(10000*10000))
ALLOCATE(W(10000))
ALLOCATE(A(10000,10000))


* Initialize the BLACS
*
CALL BLACS_PINFO( IAM, NPROCS )
IF( ( NPROCS.LT.1 ) ) THEN
CALL BLACS_SETUP( IAM, NPROW*NPCOL )
END IF
*
* Initialize a single BLACS context
*
CALL BLACS_GET( -1, 0, CONTEXT )
CALL BLACS_GRIDINIT( CONTEXT, 'R', NPROW, NPCOL )
CALL BLACS_GRIDINFO( CONTEXT, NPROW, NPCOL, MYROW, MYCOL )

* Bail out if this process is not a part of this context.
*
IF( MYROW.EQ.-1 )
$ GO TO 20

* These are basic array descriptors
CALL DESCINIT( DESCA, N, N, NB, NB, 0, 0, CONTEXT, LDA, INFO )
...................
other Omission

And then I run the job on several nodes: mpirun -np 8 test. Assume the first node's name is Node001
The question are:
(1)where are these global variable A ,work, W stored? Node001 or all nodes? whether are there copies of A stored on all nodes?
(2)if all nodes, then when A is very big, the other nodes need the same memory with the main node001? How to save memory?
(3)I hope the main node has a big memory to store A matrix, then the other nodes store the distributed sub(A) with a very small memory, how to do?

Thanks. I am new man for these basic problems.
zhiminw
 
Posts: 3
Joined: Sat Aug 15, 2015 8:16 am

Return to User Discussion

Who is online

Users browsing this forum: No registered users and 5 guests