Lines Matching +full:- +full:j
1 static char help[] = "Benchmark for MatMatMult() of AIJ matrices using different 2d finite-differen…
5 /* Converts 3d grid coordinates (i,j,k) for a grid of size m \times n to global indexing. Pass k = …
6 PetscInt global_index(PetscInt i, PetscInt j, PetscInt k, PetscInt m, PetscInt n) in global_index() argument
8 return i + j * m + k * m * n; in global_index()
14 PetscInt i, M, N, Istart, Iend, n = 7, j, J, Ii, m = 8, k, o = 1; in main() local
22 PetscCall(PetscOptionsGetInt(NULL, NULL, "-m", &m, NULL)); in main()
23 PetscCall(PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL)); in main()
24 PetscCall(PetscOptionsGetInt(NULL, NULL, "-o", &o, NULL)); in main()
25 PetscCall(PetscOptionsHasName(NULL, NULL, "-result_view", &mat_view)); in main()
26 PetscCall(PetscOptionsGetString(NULL, NULL, "-stencil", stencil, sizeof(stencil), NULL)); in main()
40 if (equal) { /* 5-point stencil, 2D */ in main()
45 v = -1.0; in main()
47 j = (Ii - k * m * n) / m; in main()
48 i = (Ii - k * m * n - j * m); in main()
50 J = global_index(i - 1, j, k, m, n); in main()
51 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
53 if (i < m - 1) { in main()
54 J = global_index(i + 1, j, k, m, n); in main()
55 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
57 if (j > 0) { in main()
58 J = global_index(i, j - 1, k, m, n); in main()
59 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
61 if (j < n - 1) { in main()
62 J = global_index(i, j + 1, k, m, n); in main()
63 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
70 if (equal) { /* 9-point stencil, 2D */ in main()
75 v = -1.0; in main()
77 j = (Ii - k * m * n) / m; in main()
78 i = (Ii - k * m * n - j * m); in main()
80 J = global_index(i - 1, j, k, m, n); in main()
81 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
83 if (i > 0 && j > 0) { in main()
84 J = global_index(i - 1, j - 1, k, m, n); in main()
85 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
87 if (j > 0) { in main()
88 J = global_index(i, j - 1, k, m, n); in main()
89 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
91 if (i < m - 1 && j > 0) { in main()
92 J = global_index(i + 1, j - 1, k, m, n); in main()
93 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
95 if (i < m - 1) { in main()
96 J = global_index(i + 1, j, k, m, n); in main()
97 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
99 if (i < m - 1 && j < n - 1) { in main()
100 J = global_index(i + 1, j + 1, k, m, n); in main()
101 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
103 if (j < n - 1) { in main()
104 J = global_index(i, j + 1, k, m, n); in main()
105 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
107 if (i > 0 && j < n - 1) { in main()
108 J = global_index(i - 1, j + 1, k, m, n); in main()
109 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
116 if (equal) { /* 9-point Cartesian stencil (width 2 per coordinate), 2D */ in main()
121 v = -1.0; in main()
123 j = (Ii - k * m * n) / m; in main()
124 i = (Ii - k * m * n - j * m); in main()
126 J = global_index(i - 1, j, k, m, n); in main()
127 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
130 J = global_index(i - 2, j, k, m, n); in main()
131 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
133 if (i < m - 1) { in main()
134 J = global_index(i + 1, j, k, m, n); in main()
135 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
137 if (i < m - 2) { in main()
138 J = global_index(i + 2, j, k, m, n); in main()
139 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
141 if (j > 0) { in main()
142 J = global_index(i, j - 1, k, m, n); in main()
143 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
145 if (j > 1) { in main()
146 J = global_index(i, j - 2, k, m, n); in main()
147 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
149 if (j < n - 1) { in main()
150 J = global_index(i, j + 1, k, m, n); in main()
151 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
153 if (j < n - 2) { in main()
154 J = global_index(i, j + 2, k, m, n); in main()
155 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
162 if (equal) { /* 13-point Cartesian stencil (width 3 per coordinate), 2D */ in main()
167 v = -1.0; in main()
169 j = (Ii - k * m * n) / m; in main()
170 i = (Ii - k * m * n - j * m); in main()
172 J = global_index(i - 1, j, k, m, n); in main()
173 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
176 J = global_index(i - 2, j, k, m, n); in main()
177 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
180 J = global_index(i - 3, j, k, m, n); in main()
181 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
183 if (i < m - 1) { in main()
184 J = global_index(i + 1, j, k, m, n); in main()
185 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
187 if (i < m - 2) { in main()
188 J = global_index(i + 2, j, k, m, n); in main()
189 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
191 if (i < m - 3) { in main()
192 J = global_index(i + 3, j, k, m, n); in main()
193 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
195 if (j > 0) { in main()
196 J = global_index(i, j - 1, k, m, n); in main()
197 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
199 if (j > 1) { in main()
200 J = global_index(i, j - 2, k, m, n); in main()
201 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
203 if (j > 2) { in main()
204 J = global_index(i, j - 3, k, m, n); in main()
205 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
207 if (j < n - 1) { in main()
208 J = global_index(i, j + 1, k, m, n); in main()
209 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
211 if (j < n - 2) { in main()
212 J = global_index(i, j + 2, k, m, n); in main()
213 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
215 if (j < n - 3) { in main()
216 J = global_index(i, j + 3, k, m, n); in main()
217 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
225 if (equal) { /* 7-point stencil, 3D */ in main()
230 v = -1.0; in main()
232 j = (Ii - k * m * n) / m; in main()
233 i = (Ii - k * m * n - j * m); in main()
235 J = global_index(i - 1, j, k, m, n); in main()
236 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
238 if (i < m - 1) { in main()
239 J = global_index(i + 1, j, k, m, n); in main()
240 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
242 if (j > 0) { in main()
243 J = global_index(i, j - 1, k, m, n); in main()
244 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
246 if (j < n - 1) { in main()
247 J = global_index(i, j + 1, k, m, n); in main()
248 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
251 J = global_index(i, j, k - 1, m, n); in main()
252 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
254 if (k < o - 1) { in main()
255 J = global_index(i, j, k + 1, m, n); in main()
256 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
263 if (equal) { /* 13-point stencil, 3D */ in main()
268 v = -1.0; in main()
270 j = (Ii - k * m * n) / m; in main()
271 i = (Ii - k * m * n - j * m); in main()
273 J = global_index(i - 1, j, k, m, n); in main()
274 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
277 J = global_index(i - 2, j, k, m, n); in main()
278 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
280 if (i < m - 1) { in main()
281 J = global_index(i + 1, j, k, m, n); in main()
282 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
284 if (i < m - 2) { in main()
285 J = global_index(i + 2, j, k, m, n); in main()
286 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
288 if (j > 0) { in main()
289 J = global_index(i, j - 1, k, m, n); in main()
290 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
292 if (j > 1) { in main()
293 J = global_index(i, j - 2, k, m, n); in main()
294 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
296 if (j < n - 1) { in main()
297 J = global_index(i, j + 1, k, m, n); in main()
298 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
300 if (j < n - 2) { in main()
301 J = global_index(i, j + 2, k, m, n); in main()
302 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
305 J = global_index(i, j, k - 1, m, n); in main()
306 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
309 J = global_index(i, j, k - 2, m, n); in main()
310 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
312 if (k < o - 1) { in main()
313 J = global_index(i, j, k + 1, m, n); in main()
314 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
316 if (k < o - 2) { in main()
317 J = global_index(i, j, k + 2, m, n); in main()
318 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
325 if (equal) { /* 19-point stencil, 3D */ in main()
330 v = -1.0; in main()
332 j = (Ii - k * m * n) / m; in main()
333 i = (Ii - k * m * n - j * m); in main()
336 J = global_index(i - 1, j, k, m, n); in main()
337 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
339 if (i < m - 1) { in main()
340 J = global_index(i + 1, j, k, m, n); in main()
341 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
343 if (j > 0) { in main()
344 J = global_index(i, j - 1, k, m, n); in main()
345 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
347 if (j < n - 1) { in main()
348 J = global_index(i, j + 1, k, m, n); in main()
349 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
352 J = global_index(i, j, k - 1, m, n); in main()
353 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
355 if (k < o - 1) { in main()
356 J = global_index(i, j, k + 1, m, n); in main()
357 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
360 if (i > 0 && j > 0) { in main()
361 J = global_index(i - 1, j - 1, k, m, n); in main()
362 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
365 J = global_index(i - 1, j, k - 1, m, n); in main()
366 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
368 if (i > 0 && j < n - 1) { in main()
369 J = global_index(i - 1, j + 1, k, m, n); in main()
370 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
372 if (i > 0 && k < o - 1) { in main()
373 J = global_index(i - 1, j, k + 1, m, n); in main()
374 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
376 if (i < m - 1 && j > 0) { in main()
377 J = global_index(i + 1, j - 1, k, m, n); in main()
378 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
380 if (i < m - 1 && k > 0) { in main()
381 J = global_index(i + 1, j, k - 1, m, n); in main()
382 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
384 if (i < m - 1 && j < n - 1) { in main()
385 J = global_index(i + 1, j + 1, k, m, n); in main()
386 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
388 if (i < m - 1 && k < o - 1) { in main()
389 J = global_index(i + 1, j, k + 1, m, n); in main()
390 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
392 if (j > 0 && k > 0) { in main()
393 J = global_index(i, j - 1, k - 1, m, n); in main()
394 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
396 if (j > 0 && k < o - 1) { in main()
397 J = global_index(i, j - 1, k + 1, m, n); in main()
398 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
400 if (j < n - 1 && k > 0) { in main()
401 J = global_index(i, j + 1, k - 1, m, n); in main()
402 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
404 if (j < n - 1 && k < o - 1) { in main()
405 J = global_index(i, j + 1, k + 1, m, n); in main()
406 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
413 if (equal) { /* 27-point stencil, 3D */ in main()
418 v = -1.0; in main()
420 j = (Ii - k * m * n) / m; in main()
421 i = (Ii - k * m * n - j * m); in main()
423 if (j > 0) { in main()
425 J = global_index(i - 1, j - 1, k - 1, m, n); in main()
426 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
428 J = global_index(i, j - 1, k - 1, m, n); in main()
429 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
430 if (i < m - 1) { in main()
431 J = global_index(i + 1, j - 1, k - 1, m, n); in main()
432 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
437 J = global_index(i - 1, j, k - 1, m, n); in main()
438 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
440 J = global_index(i, j, k - 1, m, n); in main()
441 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
442 if (i < m - 1) { in main()
443 J = global_index(i + 1, j, k - 1, m, n); in main()
444 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
447 if (j < n - 1) { in main()
449 J = global_index(i - 1, j + 1, k - 1, m, n); in main()
450 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
452 J = global_index(i, j + 1, k - 1, m, n); in main()
453 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
454 if (i < m - 1) { in main()
455 J = global_index(i + 1, j + 1, k - 1, m, n); in main()
456 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
461 if (j > 0) { in main()
463 J = global_index(i - 1, j - 1, k, m, n); in main()
464 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
466 J = global_index(i, j - 1, k, m, n); in main()
467 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
468 if (i < m - 1) { in main()
469 J = global_index(i + 1, j - 1, k, m, n); in main()
470 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
475 J = global_index(i - 1, j, k, m, n); in main()
476 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
478 J = global_index(i, j, k, m, n); in main()
479 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
480 if (i < m - 1) { in main()
481 J = global_index(i + 1, j, k, m, n); in main()
482 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
485 if (j < n - 1) { in main()
487 J = global_index(i - 1, j + 1, k, m, n); in main()
488 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
490 J = global_index(i, j + 1, k, m, n); in main()
491 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
492 if (i < m - 1) { in main()
493 J = global_index(i + 1, j + 1, k, m, n); in main()
494 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
498 if (k < o - 1) { in main()
499 if (j > 0) { in main()
501 J = global_index(i - 1, j - 1, k + 1, m, n); in main()
502 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
504 J = global_index(i, j - 1, k + 1, m, n); in main()
505 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
506 if (i < m - 1) { in main()
507 J = global_index(i + 1, j - 1, k + 1, m, n); in main()
508 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
513 J = global_index(i - 1, j, k + 1, m, n); in main()
514 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
516 J = global_index(i, j, k + 1, m, n); in main()
517 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
518 if (i < m - 1) { in main()
519 J = global_index(i + 1, j, k + 1, m, n); in main()
520 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
523 if (j < n - 1) { in main()
525 J = global_index(i - 1, j + 1, k + 1, m, n); in main()
526 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
528 J = global_index(i, j + 1, k + 1, m, n); in main()
529 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
530 if (i < m - 1) { in main()
531 J = global_index(i + 1, j + 1, k + 1, m, n); in main()
532 PetscCall(MatSetValues(A, 1, &Ii, 1, &J, &v, INSERT_VALUES)); in main()
575 args: -m 8 -n 8 -stencil 2d5point -matmatmult_via sorted
580 args: -m 5 -n 5 -o 5 -stencil 3d27point -matmatmult_via rowmerge
585 args: -m 6 -n 6 -stencil 2d5point -matmatmult_via seqmpi