SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
numroc.f
Go to the documentation of this file.
1 INTEGER FUNCTION numroc( N, NB, IPROC, ISRCPROC, NPROCS )
2*
3* -- ScaLAPACK tools routine (version 1.7) --
4* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5* and University of California, Berkeley.
6* May 1, 1997
7*
8* .. Scalar Arguments ..
9 INTEGER iproc, isrcproc, n, nb, nprocs
10* ..
11*
12* Purpose
13* =======
14*
15* NUMROC computes the NUMber of Rows Or Columns of a distributed
16* matrix owned by the process indicated by IPROC.
17*
18* Arguments
19* =========
20*
21* N (global input) INTEGER
22* The number of rows/columns in distributed matrix.
23*
24* NB (global input) INTEGER
25* Block size, size of the blocks the distributed matrix is
26* split into.
27*
28* IPROC (local input) INTEGER
29* The coordinate of the process whose local array row or
30* column is to be determined.
31*
32* ISRCPROC (global input) INTEGER
33* The coordinate of the process that possesses the first
34* row or column of the distributed matrix.
35*
36* NPROCS (global input) INTEGER
37* The total number processes over which the matrix is
38* distributed.
39*
40* =====================================================================
41*
42* .. Local Scalars ..
43 INTEGER extrablks, mydist, nblocks
44* ..
45* .. Intrinsic Functions ..
46 INTRINSIC mod
47* ..
48* .. Executable Statements ..
49*
50* Figure PROC's distance from source process
51*
52 mydist = mod( nprocs+iproc-isrcproc, nprocs )
53*
54* Figure the total number of whole NB blocks N is split up into
55*
56 nblocks = n / nb
57*
58* Figure the minimum number of rows/cols a process can have
59*
60 numroc = (nblocks/nprocs) * nb
61*
62* See if there are any extra blocks
63*
64 extrablks = mod( nblocks, nprocs )
65*
66* If I have an extra block
67*
68 IF( mydist.LT.extrablks ) THEN
69 numroc = numroc + nb
70*
71* If I have last block, it may be a partial block
72*
73 ELSE IF( mydist.EQ.extrablks ) THEN
74 numroc = numroc + mod( n, nb )
75 END IF
76*
77 RETURN
78*
79* End of NUMROC
80*
81 END
integer function numroc(n, nb, iproc, isrcproc, nprocs)
Definition numroc.f:2