xref: /petsc/src/mat/tests/ex2.c (revision dcfd994d081f5f6b19844c8e8bc67e93edfc619a)
1c4762a1bSJed Brown 
2c4762a1bSJed Brown static char help[] = "Tests MatTranspose(), MatNorm(), MatAXPY() and MatAYPX().\n\n";
3c4762a1bSJed Brown 
4c4762a1bSJed Brown #include <petscmat.h>
5c4762a1bSJed Brown 
69371c9d4SSatish Balay static PetscErrorCode TransposeAXPY(Mat C, PetscScalar alpha, Mat mat, PetscErrorCode (*f)(Mat, Mat *)) {
7c4762a1bSJed Brown   Mat     D, E, F, G;
88e160fb9SStefano Zampini   MatType mtype;
9c4762a1bSJed Brown 
10c4762a1bSJed Brown   PetscFunctionBegin;
119566063dSJacob Faibussowitsch   PetscCall(MatGetType(mat, &mtype));
12c4762a1bSJed Brown   if (f == MatCreateTranspose) {
139566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "\nMatAXPY:  (C^T)^T = (C^T)^T + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
14c4762a1bSJed Brown   } else {
159566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "\nMatAXPY:  (C^H)^H = (C^H)^H + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
16c4762a1bSJed Brown   }
179566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat, MAT_COPY_VALUES, &C));
189566063dSJacob Faibussowitsch   PetscCall(f(C, &D));
199566063dSJacob Faibussowitsch   PetscCall(f(D, &E));
209566063dSJacob Faibussowitsch   PetscCall(MatAXPY(E, alpha, mat, SAME_NONZERO_PATTERN));
219566063dSJacob Faibussowitsch   PetscCall(MatConvert(E, mtype, MAT_INPLACE_MATRIX, &E));
229566063dSJacob Faibussowitsch   PetscCall(MatView(E, PETSC_VIEWER_STDOUT_WORLD));
239566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
249566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
259566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
26c4762a1bSJed Brown   if (f == MatCreateTranspose) {
279566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  C = C + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
28c4762a1bSJed Brown   } else {
299566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  C = C + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
30c4762a1bSJed Brown   }
31c4762a1bSJed Brown   if (f == MatCreateTranspose) {
329566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat, MAT_INITIAL_MATRIX, &D));
33c4762a1bSJed Brown   } else {
349566063dSJacob Faibussowitsch     PetscCall(MatHermitianTranspose(mat, MAT_INITIAL_MATRIX, &D));
35c4762a1bSJed Brown   }
369566063dSJacob Faibussowitsch   PetscCall(f(D, &E));
379566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat, MAT_COPY_VALUES, &C));
389566063dSJacob Faibussowitsch   PetscCall(MatAXPY(C, alpha, E, SAME_NONZERO_PATTERN));
399566063dSJacob Faibussowitsch   PetscCall(MatView(C, PETSC_VIEWER_STDOUT_WORLD));
409566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
419566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
429566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
43c4762a1bSJed Brown   if (f == MatCreateTranspose) {
449566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  (C^T)^T = (C^T)^T + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
45c4762a1bSJed Brown   } else {
469566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  (C^H)^H = (C^H)^H + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
47c4762a1bSJed Brown   }
489566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat, MAT_COPY_VALUES, &C));
499566063dSJacob Faibussowitsch   PetscCall(f(C, &D));
509566063dSJacob Faibussowitsch   PetscCall(f(D, &E));
519566063dSJacob Faibussowitsch   PetscCall(f(mat, &F));
529566063dSJacob Faibussowitsch   PetscCall(f(F, &G));
539566063dSJacob Faibussowitsch   PetscCall(MatAXPY(E, alpha, G, SAME_NONZERO_PATTERN));
549566063dSJacob Faibussowitsch   PetscCall(MatConvert(E, mtype, MAT_INPLACE_MATRIX, &E));
559566063dSJacob Faibussowitsch   PetscCall(MatView(E, PETSC_VIEWER_STDOUT_WORLD));
569566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&G));
579566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&F));
589566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
599566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
609566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
618e160fb9SStefano Zampini 
628e160fb9SStefano Zampini   /* Call f on a matrix that does not implement the transposition */
639566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  Now without the transposition operation\n"));
649566063dSJacob Faibussowitsch   PetscCall(MatConvert(mat, MATSHELL, MAT_INITIAL_MATRIX, &C));
659566063dSJacob Faibussowitsch   PetscCall(f(C, &D));
669566063dSJacob Faibussowitsch   PetscCall(f(D, &E));
678e160fb9SStefano Zampini   /* XXX cannot use MAT_INPLACE_MATRIX, it leaks mat */
689566063dSJacob Faibussowitsch   PetscCall(MatConvert(E, mtype, MAT_INITIAL_MATRIX, &F));
699566063dSJacob Faibussowitsch   PetscCall(MatAXPY(F, alpha, mat, SAME_NONZERO_PATTERN));
709566063dSJacob Faibussowitsch   PetscCall(MatView(F, PETSC_VIEWER_STDOUT_WORLD));
719566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&F));
729566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
739566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
749566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
75c4762a1bSJed Brown   PetscFunctionReturn(0);
76c4762a1bSJed Brown }
77c4762a1bSJed Brown 
789371c9d4SSatish Balay int main(int argc, char **argv) {
79c4762a1bSJed Brown   Mat         mat, tmat = 0;
80c4762a1bSJed Brown   PetscInt    m = 7, n, i, j, rstart, rend, rect = 0;
81c4762a1bSJed Brown   PetscMPIInt size, rank;
82c4762a1bSJed Brown   PetscBool   flg;
83c4762a1bSJed Brown   PetscScalar v, alpha;
84c4762a1bSJed Brown   PetscReal   normf, normi, norm1;
85c4762a1bSJed Brown 
86327415f7SBarry Smith   PetscFunctionBeginUser;
879566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &argv, (char *)0, help));
889566063dSJacob Faibussowitsch   PetscCall(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD, PETSC_VIEWER_ASCII_COMMON));
899566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL, NULL, "-m", &m, NULL));
909566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD, &rank));
919566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD, &size));
92c4762a1bSJed Brown   n = m;
939566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL, NULL, "-rectA", &flg));
949371c9d4SSatish Balay   if (flg) {
959371c9d4SSatish Balay     n += 2;
969371c9d4SSatish Balay     rect = 1;
979371c9d4SSatish Balay   }
989566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL, NULL, "-rectB", &flg));
999371c9d4SSatish Balay   if (flg) {
1009371c9d4SSatish Balay     n -= 2;
1019371c9d4SSatish Balay     rect = 1;
1029371c9d4SSatish Balay   }
103c4762a1bSJed Brown 
104a5225ed3SStefano Zampini   /* ------- Assemble matrix --------- */
1059566063dSJacob Faibussowitsch   PetscCall(MatCreate(PETSC_COMM_WORLD, &mat));
1069566063dSJacob Faibussowitsch   PetscCall(MatSetSizes(mat, PETSC_DECIDE, PETSC_DECIDE, m, n));
1079566063dSJacob Faibussowitsch   PetscCall(MatSetFromOptions(mat));
1089566063dSJacob Faibussowitsch   PetscCall(MatSetUp(mat));
1099566063dSJacob Faibussowitsch   PetscCall(MatGetOwnershipRange(mat, &rstart, &rend));
110c4762a1bSJed Brown   for (i = rstart; i < rend; i++) {
111c4762a1bSJed Brown     for (j = 0; j < n; j++) {
1128e160fb9SStefano Zampini       v = 10.0 * i + j + 1.0;
1139566063dSJacob Faibussowitsch       PetscCall(MatSetValues(mat, 1, &i, 1, &j, &v, INSERT_VALUES));
114c4762a1bSJed Brown     }
115c4762a1bSJed Brown   }
1169566063dSJacob Faibussowitsch   PetscCall(MatAssemblyBegin(mat, MAT_FINAL_ASSEMBLY));
1179566063dSJacob Faibussowitsch   PetscCall(MatAssemblyEnd(mat, MAT_FINAL_ASSEMBLY));
118c4762a1bSJed Brown 
119c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
1209566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat, NORM_FROBENIUS, &normf));
1219566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat, NORM_1, &norm1));
1229566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat, NORM_INFINITY, &normi));
1239566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "original A: Frobenious norm = %g, one norm = %g, infinity norm = %g\n", (double)normf, (double)norm1, (double)normi));
1249566063dSJacob Faibussowitsch   PetscCall(MatView(mat, PETSC_VIEWER_STDOUT_WORLD));
125c4762a1bSJed Brown 
126c4762a1bSJed Brown   /* --------------- Test MatTranspose()  -------------- */
1279566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL, NULL, "-in_place", &flg));
128c4762a1bSJed Brown   if (!rect && flg) {
1299566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat, MAT_REUSE_MATRIX, &mat)); /* in-place transpose */
1308e160fb9SStefano Zampini     tmat = mat;
1318e160fb9SStefano Zampini     mat  = NULL;
132c4762a1bSJed Brown   } else { /* out-of-place transpose */
1339566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat, MAT_INITIAL_MATRIX, &tmat));
134c4762a1bSJed Brown   }
135c4762a1bSJed Brown 
136c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
137c4762a1bSJed Brown   /* Print info about transpose matrix */
1389566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat, NORM_FROBENIUS, &normf));
1399566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat, NORM_1, &norm1));
1409566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat, NORM_INFINITY, &normi));
1419566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "B = A^T: Frobenious norm = %g, one norm = %g, infinity norm = %g\n", (double)normf, (double)norm1, (double)normi));
1429566063dSJacob Faibussowitsch   PetscCall(MatView(tmat, PETSC_VIEWER_STDOUT_WORLD));
143c4762a1bSJed Brown 
144c4762a1bSJed Brown   /* ----------------- Test MatAXPY(), MatAYPX()  ----------------- */
145c4762a1bSJed Brown   if (mat && !rect) {
146c4762a1bSJed Brown     alpha = 1.0;
1479566063dSJacob Faibussowitsch     PetscCall(PetscOptionsGetScalar(NULL, NULL, "-alpha", &alpha, NULL));
1489566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  B = B + alpha * A\n"));
1499566063dSJacob Faibussowitsch     PetscCall(MatAXPY(tmat, alpha, mat, DIFFERENT_NONZERO_PATTERN));
1509566063dSJacob Faibussowitsch     PetscCall(MatView(tmat, PETSC_VIEWER_STDOUT_WORLD));
151c4762a1bSJed Brown 
1529566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAYPX:  B = alpha*B + A\n"));
1539566063dSJacob Faibussowitsch     PetscCall(MatAYPX(tmat, alpha, mat, DIFFERENT_NONZERO_PATTERN));
1549566063dSJacob Faibussowitsch     PetscCall(MatView(tmat, PETSC_VIEWER_STDOUT_WORLD));
155c4762a1bSJed Brown   }
156c4762a1bSJed Brown 
157c4762a1bSJed Brown   {
158c4762a1bSJed Brown     Mat C;
159c4762a1bSJed Brown     alpha = 1.0;
1609566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  C = C + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
1619566063dSJacob Faibussowitsch     PetscCall(MatDuplicate(mat, MAT_COPY_VALUES, &C));
1629566063dSJacob Faibussowitsch     PetscCall(MatAXPY(C, alpha, mat, SAME_NONZERO_PATTERN));
1639566063dSJacob Faibussowitsch     PetscCall(MatView(C, PETSC_VIEWER_STDOUT_WORLD));
1649566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&C));
1659566063dSJacob Faibussowitsch     PetscCall(TransposeAXPY(C, alpha, mat, MatCreateTranspose));
1669566063dSJacob Faibussowitsch     PetscCall(TransposeAXPY(C, alpha, mat, MatCreateHermitianTranspose));
167c4762a1bSJed Brown   }
168c4762a1bSJed Brown 
169c4762a1bSJed Brown   {
170c4762a1bSJed Brown     Mat matB;
171c4762a1bSJed Brown     /* get matB that has nonzeros of mat in all even numbers of row and col */
1729566063dSJacob Faibussowitsch     PetscCall(MatCreate(PETSC_COMM_WORLD, &matB));
1739566063dSJacob Faibussowitsch     PetscCall(MatSetSizes(matB, PETSC_DECIDE, PETSC_DECIDE, m, n));
1749566063dSJacob Faibussowitsch     PetscCall(MatSetFromOptions(matB));
1759566063dSJacob Faibussowitsch     PetscCall(MatSetUp(matB));
1769566063dSJacob Faibussowitsch     PetscCall(MatGetOwnershipRange(matB, &rstart, &rend));
177c4762a1bSJed Brown     if (rstart % 2 != 0) rstart++;
178c4762a1bSJed Brown     for (i = rstart; i < rend; i += 2) {
179c4762a1bSJed Brown       for (j = 0; j < n; j += 2) {
1808e160fb9SStefano Zampini         v = 10.0 * i + j + 1.0;
1819566063dSJacob Faibussowitsch         PetscCall(MatSetValues(matB, 1, &i, 1, &j, &v, INSERT_VALUES));
182c4762a1bSJed Brown       }
183c4762a1bSJed Brown     }
1849566063dSJacob Faibussowitsch     PetscCall(MatAssemblyBegin(matB, MAT_FINAL_ASSEMBLY));
1859566063dSJacob Faibussowitsch     PetscCall(MatAssemblyEnd(matB, MAT_FINAL_ASSEMBLY));
1869566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, " A: original matrix:\n"));
1879566063dSJacob Faibussowitsch     PetscCall(MatView(mat, PETSC_VIEWER_STDOUT_WORLD));
1889566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, " B(a subset of A):\n"));
1899566063dSJacob Faibussowitsch     PetscCall(MatView(matB, PETSC_VIEWER_STDOUT_WORLD));
1909566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatAXPY:  B = B + alpha * A, SUBSET_NONZERO_PATTERN\n"));
1919566063dSJacob Faibussowitsch     PetscCall(MatAXPY(mat, alpha, matB, SUBSET_NONZERO_PATTERN));
1929566063dSJacob Faibussowitsch     PetscCall(MatView(mat, PETSC_VIEWER_STDOUT_WORLD));
1939566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&matB));
194c4762a1bSJed Brown   }
195c4762a1bSJed Brown 
196a5225ed3SStefano Zampini   /* Test MatZeroRows */
197a5225ed3SStefano Zampini   j = rstart - 1;
198a5225ed3SStefano Zampini   if (j < 0) j = m - 1;
1992f605a99SJose E. Roman   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatZeroRows:\n"));
2009566063dSJacob Faibussowitsch   PetscCall(MatZeroRows(mat, 1, &j, 0.0, NULL, NULL));
2019566063dSJacob Faibussowitsch   PetscCall(MatView(mat, PETSC_VIEWER_STDOUT_WORLD));
202a5225ed3SStefano Zampini 
2032f605a99SJose E. Roman   /* Test MatShift */
2042f605a99SJose E. Roman   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "MatShift: B = B - 2*I\n"));
2052f605a99SJose E. Roman   PetscCall(MatShift(mat, -2.0));
2062f605a99SJose E. Roman   PetscCall(MatView(mat, PETSC_VIEWER_STDOUT_WORLD));
2072f605a99SJose E. Roman 
2089566063dSJacob Faibussowitsch   PetscCall(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD));
209c4762a1bSJed Brown   /* Free data structures */
2109566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&mat));
2119566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&tmat));
2129566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
213b122ec5aSJacob Faibussowitsch   return 0;
214c4762a1bSJed Brown }
215c4762a1bSJed Brown 
216c4762a1bSJed Brown /*TEST
217c4762a1bSJed Brown 
218c4762a1bSJed Brown    test:
219c4762a1bSJed Brown       suffix: 11_A
220c4762a1bSJed Brown       args: -mat_type seqaij -rectA
221c4762a1bSJed Brown       filter: grep -v "Mat Object"
222c4762a1bSJed Brown 
223c4762a1bSJed Brown    test:
224c4762a1bSJed Brown       suffix: 12_A
225c4762a1bSJed Brown       args: -mat_type seqdense -rectA
226a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
227a5225ed3SStefano Zampini 
228a5225ed3SStefano Zampini    test:
229a5225ed3SStefano Zampini       requires: cuda
230a5225ed3SStefano Zampini       suffix: 12_A_cuda
231a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectA
232a5225ed3SStefano Zampini       output_file: output/ex2_12_A.out
233a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
234c4762a1bSJed Brown 
235c4762a1bSJed Brown    test:
23624b337e5SStefano Zampini       requires: kokkos_kernels
237d9265f21SStefano Zampini       suffix: 12_A_kokkos
238dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectA
239d9265f21SStefano Zampini       output_file: output/ex2_12_A.out
240d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
241d9265f21SStefano Zampini 
242d9265f21SStefano Zampini    test:
243c4762a1bSJed Brown       suffix: 11_B
244c4762a1bSJed Brown       args: -mat_type seqaij -rectB
245c4762a1bSJed Brown       filter: grep -v "Mat Object"
246c4762a1bSJed Brown 
247c4762a1bSJed Brown    test:
248c4762a1bSJed Brown       suffix: 12_B
249c4762a1bSJed Brown       args: -mat_type seqdense -rectB
250a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
251a5225ed3SStefano Zampini 
252cc19c814SJunchao Zhang    testset:
253cc19c814SJunchao Zhang       args: -rectB
254cc19c814SJunchao Zhang       output_file: output/ex2_12_B.out
255cc19c814SJunchao Zhang       filter: grep -v type | grep -v "Mat Object"
256cc19c814SJunchao Zhang 
257a5225ed3SStefano Zampini       test:
258a5225ed3SStefano Zampini          requires: cuda
259a5225ed3SStefano Zampini          suffix: 12_B_cuda
260cc19c814SJunchao Zhang          args: -mat_type {{seqdensecuda seqaijcusparse}}
261c4762a1bSJed Brown 
262c4762a1bSJed Brown       test:
26324b337e5SStefano Zampini          requires: kokkos_kernels
264d9265f21SStefano Zampini          suffix: 12_B_kokkos
265cc19c814SJunchao Zhang          args: -mat_type aijkokkos
266d9265f21SStefano Zampini 
267d9265f21SStefano Zampini       test:
268cc19c814SJunchao Zhang          suffix: 12_B_aij
269cc19c814SJunchao Zhang          args: -mat_type aij
270cc19c814SJunchao Zhang    test:
271c4762a1bSJed Brown       suffix: 21
272c4762a1bSJed Brown       args: -mat_type mpiaij
2738cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
274c4762a1bSJed Brown 
275c4762a1bSJed Brown    test:
276c4762a1bSJed Brown       suffix: 22
277c4762a1bSJed Brown       args: -mat_type mpidense
278a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
279a5225ed3SStefano Zampini 
280a5225ed3SStefano Zampini    test:
281a5225ed3SStefano Zampini       requires: cuda
282a5225ed3SStefano Zampini       suffix: 22_cuda
283a5225ed3SStefano Zampini       output_file: output/ex2_22.out
284a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
285a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
286c4762a1bSJed Brown 
287c4762a1bSJed Brown    test:
28824b337e5SStefano Zampini       requires: kokkos_kernels
289d9265f21SStefano Zampini       suffix: 22_kokkos
290d9265f21SStefano Zampini       output_file: output/ex2_22.out
291dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
292d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
293d9265f21SStefano Zampini 
294d9265f21SStefano Zampini    test:
295c4762a1bSJed Brown       suffix: 23
296c4762a1bSJed Brown       nsize: 3
297c4762a1bSJed Brown       args: -mat_type mpiaij
2988cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
299c4762a1bSJed Brown 
300c4762a1bSJed Brown    test:
301c4762a1bSJed Brown       suffix: 24
302c4762a1bSJed Brown       nsize: 3
303c4762a1bSJed Brown       args: -mat_type mpidense
304a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
305a5225ed3SStefano Zampini 
306a5225ed3SStefano Zampini    test:
307a5225ed3SStefano Zampini       requires: cuda
308a5225ed3SStefano Zampini       suffix: 24_cuda
309a5225ed3SStefano Zampini       nsize: 3
310a5225ed3SStefano Zampini       output_file: output/ex2_24.out
311a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
312a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
313c4762a1bSJed Brown 
314c4762a1bSJed Brown    test:
315c4762a1bSJed Brown       suffix: 2_aijcusparse_1
316c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
317a5225ed3SStefano Zampini       output_file: output/ex2_21.out
318c4762a1bSJed Brown       requires: cuda
3198cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
320c4762a1bSJed Brown 
321c4762a1bSJed Brown    test:
322629dcba7SJunchao Zhang       suffix: 2_aijkokkos_1
323629dcba7SJunchao Zhang       args: -mat_type aijkokkos
324629dcba7SJunchao Zhang       output_file: output/ex2_21.out
325629dcba7SJunchao Zhang       requires: kokkos_kernels
3268cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
327629dcba7SJunchao Zhang 
328629dcba7SJunchao Zhang    test:
329c4762a1bSJed Brown       suffix: 2_aijcusparse_2
330c4762a1bSJed Brown       nsize: 3
331c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
332c4762a1bSJed Brown       output_file: output/ex2_23.out
333c4762a1bSJed Brown       requires: cuda
3348cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
335c4762a1bSJed Brown 
336c4762a1bSJed Brown    test:
337d9265f21SStefano Zampini       suffix: 2_aijkokkos_2
338d9265f21SStefano Zampini       nsize: 3
339dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
340d9265f21SStefano Zampini       output_file: output/ex2_23.out
341629dcba7SJunchao Zhang       # Turn off hip due to intermittent CI failures on hip.txcorp.com. Should re-enable this test when the machine is upgraded.
342*dcfd994dSJunchao Zhang       requires: !hip kokkos_kernels
343*dcfd994dSJunchao Zhang       filter: grep -v type | grep -v "MPI processes"
344d9265f21SStefano Zampini 
345d9265f21SStefano Zampini    test:
346c4762a1bSJed Brown       suffix: 3
347c4762a1bSJed Brown       nsize: 2
348c4762a1bSJed Brown       args: -mat_type mpiaij -rectA
349c4762a1bSJed Brown 
350c4762a1bSJed Brown    test:
351c4762a1bSJed Brown       suffix: 3_aijcusparse
352c4762a1bSJed Brown       nsize: 2
353c4762a1bSJed Brown       args: -mat_type mpiaijcusparse -rectA
354c4762a1bSJed Brown       requires: cuda
355c4762a1bSJed Brown 
356c4762a1bSJed Brown    test:
357c4762a1bSJed Brown       suffix: 4
358c4762a1bSJed Brown       nsize: 2
359c4762a1bSJed Brown       args: -mat_type mpidense -rectA
3608cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
361a5225ed3SStefano Zampini 
362a5225ed3SStefano Zampini    test:
363a5225ed3SStefano Zampini       requires: cuda
364a5225ed3SStefano Zampini       suffix: 4_cuda
365a5225ed3SStefano Zampini       nsize: 2
366a5225ed3SStefano Zampini       output_file: output/ex2_4.out
367a5225ed3SStefano Zampini       args: -mat_type mpidensecuda -rectA
3688cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
369c4762a1bSJed Brown 
370c4762a1bSJed Brown    test:
371c4762a1bSJed Brown       suffix: aijcusparse_1
372c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectA
373c4762a1bSJed Brown       filter: grep -v "Mat Object"
374c4762a1bSJed Brown       output_file: output/ex2_11_A_aijcusparse.out
375c4762a1bSJed Brown       requires: cuda
376c4762a1bSJed Brown 
377c4762a1bSJed Brown TEST*/
378