ScaLAPACK 2.1
2.1
ScaLAPACK: Scalable Linear Algebra PACKage
PB_Cdescset.c
Go to the documentation of this file.
1
/* ---------------------------------------------------------------------
2
*
3
* -- PBLAS auxiliary routine (version 2.0) --
4
* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5
* and University of California, Berkeley.
6
* April 1, 1998
7
*
8
* ---------------------------------------------------------------------
9
*/
10
/*
11
* Include files
12
*/
13
#include "../pblas.h"
14
#include "../PBpblas.h"
15
#include "../PBtools.h"
16
#include "../PBblacs.h"
17
#include "../PBblas.h"
18
19
#ifdef __STDC__
20
void
PB_Cdescset
(
int
* DESC,
int
M,
int
N,
int
IMB,
int
INB,
int
MB,
int
NB,
21
int
RSRC,
int
CSRC,
int
CTXT,
int
LLD )
22
#else
23
void
PB_Cdescset
( DESC, M, N, IMB, INB, MB, NB, RSRC, CSRC, CTXT, LLD )
24
/*
25
* .. Scalar Arguments ..
26
*/
27
int
CSRC, CTXT, IMB, INB, LLD, M, MB, N, NB, RSRC;
28
/*
29
* .. Array Arguments ..
30
*/
31
int
* DESC;
32
#endif
33
{
34
/*
35
* Purpose
36
* =======
37
*
38
* PB_Cdescset uses its 10 input arguments M, N, IMB, INB, MB, NB,
39
* RSRC, CSRC, CTXT and LLD to initialize a descriptor vector of type
40
* BLOCK_CYCLIC_2D_INB.
41
*
42
* Notes
43
* =====
44
*
45
* A description vector is associated with each 2D block-cyclicly dis-
46
* tributed matrix. This vector stores the information required to
47
* establish the mapping between a matrix entry and its corresponding
48
* process and memory location.
49
*
50
* In the following comments, the character _ should be read as
51
* "of the distributed matrix". Let A be a generic term for any 2D
52
* block cyclicly distributed matrix. Its description vector is DESC_A:
53
*
54
* NOTATION STORED IN EXPLANATION
55
* ---------------- --------------- ------------------------------------
56
* DTYPE_A (global) DESCA[ DTYPE_ ] The descriptor type.
57
* CTXT_A (global) DESCA[ CTXT_ ] The BLACS context handle, indicating
58
* the NPROW x NPCOL BLACS process grid
59
* A is distributed over. The context
60
* itself is global, but the handle
61
* (the integer value) may vary.
62
* M_A (global) DESCA[ M_ ] The number of rows in the distribu-
63
* ted matrix A, M_A >= 0.
64
* N_A (global) DESCA[ N_ ] The number of columns in the distri-
65
* buted matrix A, N_A >= 0.
66
* IMB_A (global) DESCA[ IMB_ ] The number of rows of the upper left
67
* block of the matrix A, IMB_A > 0.
68
* INB_A (global) DESCA[ INB_ ] The number of columns of the upper
69
* left block of the matrix A,
70
* INB_A > 0.
71
* MB_A (global) DESCA[ MB_ ] The blocking factor used to distri-
72
* bute the last M_A-IMB_A rows of A,
73
* MB_A > 0.
74
* NB_A (global) DESCA[ NB_ ] The blocking factor used to distri-
75
* bute the last N_A-INB_A columns of
76
* A, NB_A > 0.
77
* RSRC_A (global) DESCA[ RSRC_ ] The process row over which the first
78
* row of the matrix A is distributed,
79
* NPROW > RSRC_A >= 0.
80
* CSRC_A (global) DESCA[ CSRC_ ] The process column over which the
81
* first column of A is distributed.
82
* NPCOL > CSRC_A >= 0.
83
* LLD_A (local) DESCA[ LLD_ ] The leading dimension of the local
84
* array storing the local blocks of
85
* the distributed matrix A,
86
* IF( Lc( 1, N_A ) > 0 )
87
* LLD_A >= MAX( 1, Lr( 1, M_A ) )
88
* ELSE
89
* LLD_A >= 1.
90
*
91
* Let K be the number of rows of a matrix A starting at the global in-
92
* dex IA,i.e, A( IA:IA+K-1, : ). Lr( IA, K ) denotes the number of rows
93
* that the process of row coordinate MYROW ( 0 <= MYROW < NPROW ) would
94
* receive if these K rows were distributed over NPROW processes. If K
95
* is the number of columns of a matrix A starting at the global index
96
* JA, i.e, A( :, JA:JA+K-1, : ), Lc( JA, K ) denotes the number of co-
97
* lumns that the process MYCOL ( 0 <= MYCOL < NPCOL ) would receive if
98
* these K columns were distributed over NPCOL processes.
99
*
100
* The values of Lr() and Lc() may be determined via a call to the func-
101
* tion PB_Cnumroc:
102
* Lr( IA, K ) = PB_Cnumroc( K, IA, IMB_A, MB_A, MYROW, RSRC_A, NPROW )
103
* Lc( JA, K ) = PB_Cnumroc( K, JA, INB_A, NB_A, MYCOL, CSRC_A, NPCOL )
104
*
105
* Arguments
106
* =========
107
*
108
* DESC (global and local output) INTEGER array
109
* On entry, DESC is an array of dimension DLEN_. DESC is the
110
* array descriptor to be set.
111
*
112
* M (global input) INTEGER
113
* On entry, M specifies the number of rows of the matrix.
114
* M must be at least zero.
115
*
116
* N (global input) INTEGER
117
* On entry, N specifies the number of columns of the matrix.
118
* N must be at least zero.
119
*
120
* IMB (global input) INTEGER
121
* On entry, IMB specifies the row size of the first block of
122
* the global matrix distribution. IMB must be at least one.
123
*
124
* INB (global input) INTEGER
125
* On entry, INB specifies the column size of the first block
126
* of the global matrix distribution. INB must be at least one.
127
*
128
* MB (global input) INTEGER
129
* On entry, MB specifies the row size of the blocks used to
130
* partition the matrix. MB must be at least one.
131
*
132
* NB (global input) INTEGER
133
* On entry, NB specifies the column size of the blocks used to
134
* partition the matrix. NB must be at least one.
135
*
136
* RSRC (global input) INTEGER
137
* On entry, RSRC specifies the row coordinate of the process
138
* that possesses the first row of the matrix. When RSRC = -1,
139
* the data is not distributed but replicated, otherwise RSRC
140
* must be at least zero and strictly less than NPROW.
141
*
142
* CSRC (global input) INTEGER
143
* On entry, CSRC specifies the column coordinate of the pro-
144
* cess that possesses the first column of the matrix. When
145
* CSRC = -1, the data is not distributed but replicated, other-
146
* wise CSRC must be at least zero and strictly less than NPCOL.
147
*
148
* CTXT (local input) INTEGER
149
* On entry, CTXT specifies the BLACS context handle, indicating
150
* the global communication context. The value of the context
151
* itself is local.
152
*
153
* LLD (local input) INTEGER
154
* On entry, LLD specifies the leading dimension of the local
155
* array storing the local entries of the matrix. LLD must be at
156
* least MAX( 1, Lr(1,M) ).
157
*
158
* -- Written on April 1, 1998 by
159
* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
160
*
161
* ---------------------------------------------------------------------
162
*/
163
/* ..
164
* .. Executable Statements ..
165
*
166
*/
167
DESC[
DTYPE_
] =
BLOCK_CYCLIC_2D_INB
;
168
DESC[
CTXT_
] = CTXT;
169
DESC[
M_
] = M;
170
DESC[
N_
] = N;
171
DESC[
IMB_
] = IMB;
172
DESC[
INB_
] = INB;
173
DESC[
MB_
] = MB;
174
DESC[
NB_
] = NB;
175
DESC[
RSRC_
] = RSRC;
176
DESC[
CSRC_
] = CSRC;
177
DESC[
LLD_
] = LLD;
178
/*
179
* End of PB_Cdescset
180
*/
181
}
M_
#define M_
Definition:
PBtools.h:39
MB_
#define MB_
Definition:
PBtools.h:43
NB_
#define NB_
Definition:
PBtools.h:44
CSRC_
#define CSRC_
Definition:
PBtools.h:46
LLD_
#define LLD_
Definition:
PBtools.h:47
BLOCK_CYCLIC_2D_INB
#define BLOCK_CYCLIC_2D_INB
Definition:
PBtools.h:35
IMB_
#define IMB_
Definition:
PBtools.h:41
RSRC_
#define RSRC_
Definition:
PBtools.h:45
DTYPE_
#define DTYPE_
Definition:
PBtools.h:37
N_
#define N_
Definition:
PBtools.h:40
INB_
#define INB_
Definition:
PBtools.h:42
CTXT_
#define CTXT_
Definition:
PBtools.h:38
PB_Cdescset
void PB_Cdescset(int *DESC, int M, int N, int IMB, int INB, int MB, int NB, int RSRC, int CSRC, int CTXT, int LLD)
Definition:
PB_Cdescset.c:23
PBLAS
SRC
PTOOLS
PB_Cdescset.c
Generated by
1.8.16