#include "../pblas.h"
#include "../PBpblas.h"
#include "../PBtools.h"
#include "../PBblacs.h"
#include "../PBblas.h"
Go to the source code of this file.
|
| void | PB_CVMinit (PB_VM_T *VM, Int OFFD, Int M, Int N, Int IMB1, Int INB1, Int MB, Int NB, Int MRROW, Int MRCOL, Int NPROW, Int NPCOL, Int LCMB) |
◆ PB_CVMinit()
| void PB_CVMinit |
( |
PB_VM_T * | VM, |
|
|
Int | OFFD, |
|
|
Int | M, |
|
|
Int | N, |
|
|
Int | IMB1, |
|
|
Int | INB1, |
|
|
Int | MB, |
|
|
Int | NB, |
|
|
Int | MRROW, |
|
|
Int | MRCOL, |
|
|
Int | NPROW, |
|
|
Int | NPCOL, |
|
|
Int | LCMB ) |
Definition at line 24 of file PB_CVMinit.c.
36{
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
121
122
123
124
125
126
127
130 VM->
mp = M; VM->
imb1 = IMB1; VM->
mb = MB; VM->
upp = MB - 1;
132 VM->
nq =
N; VM->
inb1 = INB1; VM->
nb = NB; VM->
low = 1 - NB;
135
136 if( ( M <= 0 ) || (
N <= 0 ) )
137 {
138
139
140
141
143 VM->
iupp = ( MRROW ? MB - 1 : ( IMB1 > 0 ? IMB1 - 1 : 0 ) );
145 VM->
ilow = ( MRCOL ? 1 - NB : ( INB1 > 0 ? 1 - INB1 : 0 ) );
147 ( VM->
iupp - VM->
upp + MRROW * MB );
148 return;
149 }
150
151 if( MRROW )
152 {
153
154
155
156
157 VM->
lcmt00 -= IMB1 - MB + MRROW * MB;
159 VM->
mblks = ( M - 1 ) / MB + 1;
161 VM->
lmbloc = M - ( M / MB ) * MB;
163
164 if( MRCOL )
165 {
166
167
168
169
172 VM->
lcmt00 += INB1 - NB + MRCOL * NB;
173 VM->
nblks = (
N - 1 ) / NB + 1;
176 }
177 else
178 {
179
180
181
182
186 if( tmp1 )
187 {
188
189
190
191
192 VM->
nblks = ( tmp1 - 1 ) / NB + 2;
193 VM->
lnbloc = tmp1 - ( tmp1 / NB ) * NB;
195 }
196 else
197 {
198
199
200
203 }
204 }
205 }
206 else
207 {
208
209
210
211
214 tmp1 = M - IMB1;
215 if( tmp1 )
216 {
217
218
219
220
221 VM->
mblks = ( tmp1 - 1 ) / MB + 2;
222 VM->
lmbloc = tmp1 - ( tmp1 / MB ) * MB;
224 }
225 else
226 {
227
228
229
232 }
233 if( MRCOL )
234 {
235
236
237
238
241 VM->
lcmt00 += INB1 - NB + MRCOL * NB;
242 VM->
nblks = (
N - 1 ) / NB + 1;
245 }
246 else
247 {
248
249
250
251
255 if( tmp1 )
256 {
257
258
259
260
261 VM->
nblks = ( tmp1 - 1 ) / NB + 2;
262 VM->
lnbloc = tmp1 - ( tmp1 / NB ) * NB;
264 }
265 else
266 {
267
268
269
272 }
273 }
274 }
275
276
277
278}