xref: /petsc/src/mat/tests/ex2.c (revision 327415f76d85372a4417cf1aaa14db707d4d6c04)
1c4762a1bSJed Brown 
2c4762a1bSJed Brown static char help[] = "Tests MatTranspose(), MatNorm(), MatAXPY() and MatAYPX().\n\n";
3c4762a1bSJed Brown 
4c4762a1bSJed Brown #include <petscmat.h>
5c4762a1bSJed Brown 
6c4762a1bSJed Brown static PetscErrorCode TransposeAXPY(Mat C,PetscScalar alpha,Mat mat,PetscErrorCode (*f)(Mat,Mat*))
7c4762a1bSJed Brown {
8c4762a1bSJed Brown   Mat            D,E,F,G;
98e160fb9SStefano Zampini   MatType        mtype;
10c4762a1bSJed Brown 
11c4762a1bSJed Brown   PetscFunctionBegin;
129566063dSJacob Faibussowitsch   PetscCall(MatGetType(mat,&mtype));
13c4762a1bSJed Brown   if (f == MatCreateTranspose) {
149566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^T)^T = (C^T)^T + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
15c4762a1bSJed Brown   } else {
169566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^H)^H = (C^H)^H + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
17c4762a1bSJed Brown   }
189566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat,MAT_COPY_VALUES,&C));
199566063dSJacob Faibussowitsch   PetscCall(f(C,&D));
209566063dSJacob Faibussowitsch   PetscCall(f(D,&E));
219566063dSJacob Faibussowitsch   PetscCall(MatAXPY(E,alpha,mat,SAME_NONZERO_PATTERN));
229566063dSJacob Faibussowitsch   PetscCall(MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E));
239566063dSJacob Faibussowitsch   PetscCall(MatView(E,PETSC_VIEWER_STDOUT_WORLD));
249566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
259566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
269566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
27c4762a1bSJed Brown   if (f == MatCreateTranspose) {
289566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
29c4762a1bSJed Brown   } else {
309566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
31c4762a1bSJed Brown   }
32c4762a1bSJed Brown   if (f == MatCreateTranspose) {
339566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat,MAT_INITIAL_MATRIX,&D));
34c4762a1bSJed Brown   } else {
359566063dSJacob Faibussowitsch     PetscCall(MatHermitianTranspose(mat,MAT_INITIAL_MATRIX,&D));
36c4762a1bSJed Brown   }
379566063dSJacob Faibussowitsch   PetscCall(f(D,&E));
389566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat,MAT_COPY_VALUES,&C));
399566063dSJacob Faibussowitsch   PetscCall(MatAXPY(C,alpha,E,SAME_NONZERO_PATTERN));
409566063dSJacob Faibussowitsch   PetscCall(MatView(C,PETSC_VIEWER_STDOUT_WORLD));
419566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
429566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
439566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
44c4762a1bSJed Brown   if (f == MatCreateTranspose) {
459566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^T)^T = (C^T)^T + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
46c4762a1bSJed Brown   } else {
479566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^H)^H = (C^H)^H + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
48c4762a1bSJed Brown   }
499566063dSJacob Faibussowitsch   PetscCall(MatDuplicate(mat,MAT_COPY_VALUES,&C));
509566063dSJacob Faibussowitsch   PetscCall(f(C,&D));
519566063dSJacob Faibussowitsch   PetscCall(f(D,&E));
529566063dSJacob Faibussowitsch   PetscCall(f(mat,&F));
539566063dSJacob Faibussowitsch   PetscCall(f(F,&G));
549566063dSJacob Faibussowitsch   PetscCall(MatAXPY(E,alpha,G,SAME_NONZERO_PATTERN));
559566063dSJacob Faibussowitsch   PetscCall(MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E));
569566063dSJacob Faibussowitsch   PetscCall(MatView(E,PETSC_VIEWER_STDOUT_WORLD));
579566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&G));
589566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&F));
599566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
609566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
619566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
628e160fb9SStefano Zampini 
638e160fb9SStefano Zampini   /* Call f on a matrix that does not implement the transposition */
649566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  Now without the transposition operation\n"));
659566063dSJacob Faibussowitsch   PetscCall(MatConvert(mat,MATSHELL,MAT_INITIAL_MATRIX,&C));
669566063dSJacob Faibussowitsch   PetscCall(f(C,&D));
679566063dSJacob Faibussowitsch   PetscCall(f(D,&E));
688e160fb9SStefano Zampini   /* XXX cannot use MAT_INPLACE_MATRIX, it leaks mat */
699566063dSJacob Faibussowitsch   PetscCall(MatConvert(E,mtype,MAT_INITIAL_MATRIX,&F));
709566063dSJacob Faibussowitsch   PetscCall(MatAXPY(F,alpha,mat,SAME_NONZERO_PATTERN));
719566063dSJacob Faibussowitsch   PetscCall(MatView(F,PETSC_VIEWER_STDOUT_WORLD));
729566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&F));
739566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&E));
749566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&D));
759566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&C));
76c4762a1bSJed Brown   PetscFunctionReturn(0);
77c4762a1bSJed Brown }
78c4762a1bSJed Brown 
79c4762a1bSJed Brown int main(int argc,char **argv)
80c4762a1bSJed Brown {
81c4762a1bSJed Brown   Mat            mat,tmat = 0;
82c4762a1bSJed Brown   PetscInt       m = 7,n,i,j,rstart,rend,rect = 0;
83c4762a1bSJed Brown   PetscMPIInt    size,rank;
84c4762a1bSJed Brown   PetscBool      flg;
85c4762a1bSJed Brown   PetscScalar    v, alpha;
86c4762a1bSJed Brown   PetscReal      normf,normi,norm1;
87c4762a1bSJed Brown 
88*327415f7SBarry Smith   PetscFunctionBeginUser;
899566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&argv,(char*)0,help));
909566063dSJacob Faibussowitsch   PetscCall(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_ASCII_COMMON));
919566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetInt(NULL,NULL,"-m",&m,NULL));
929566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
939566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
94c4762a1bSJed Brown   n    = m;
959566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-rectA",&flg));
96c4762a1bSJed Brown   if (flg) {n += 2; rect = 1;}
979566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-rectB",&flg));
98c4762a1bSJed Brown   if (flg) {n -= 2; rect = 1;}
99c4762a1bSJed Brown 
100a5225ed3SStefano Zampini   /* ------- Assemble matrix --------- */
1019566063dSJacob Faibussowitsch   PetscCall(MatCreate(PETSC_COMM_WORLD,&mat));
1029566063dSJacob Faibussowitsch   PetscCall(MatSetSizes(mat,PETSC_DECIDE,PETSC_DECIDE,m,n));
1039566063dSJacob Faibussowitsch   PetscCall(MatSetFromOptions(mat));
1049566063dSJacob Faibussowitsch   PetscCall(MatSetUp(mat));
1059566063dSJacob Faibussowitsch   PetscCall(MatGetOwnershipRange(mat,&rstart,&rend));
106c4762a1bSJed Brown   for (i=rstart; i<rend; i++) {
107c4762a1bSJed Brown     for (j=0; j<n; j++) {
1088e160fb9SStefano Zampini       v    = 10.0*i+j+1.0;
1099566063dSJacob Faibussowitsch       PetscCall(MatSetValues(mat,1,&i,1,&j,&v,INSERT_VALUES));
110c4762a1bSJed Brown     }
111c4762a1bSJed Brown   }
1129566063dSJacob Faibussowitsch   PetscCall(MatAssemblyBegin(mat,MAT_FINAL_ASSEMBLY));
1139566063dSJacob Faibussowitsch   PetscCall(MatAssemblyEnd(mat,MAT_FINAL_ASSEMBLY));
114c4762a1bSJed Brown 
115c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
1169566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat,NORM_FROBENIUS,&normf));
1179566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat,NORM_1,&norm1));
1189566063dSJacob Faibussowitsch   PetscCall(MatNorm(mat,NORM_INFINITY,&normi));
1199566063dSJacob Faibussowitsch   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"original A: Frobenious norm = %g, one norm = %g, infinity norm = %g\n",(double)normf,(double)norm1,(double)normi));
1209566063dSJacob Faibussowitsch   PetscCall(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
121c4762a1bSJed Brown 
122c4762a1bSJed Brown   /* --------------- Test MatTranspose()  -------------- */
1239566063dSJacob Faibussowitsch   PetscCall(PetscOptionsHasName(NULL,NULL,"-in_place",&flg));
124c4762a1bSJed Brown   if (!rect && flg) {
1259566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat,MAT_REUSE_MATRIX,&mat));   /* in-place transpose */
1268e160fb9SStefano Zampini     tmat = mat;
1278e160fb9SStefano Zampini     mat  = NULL;
128c4762a1bSJed Brown   } else { /* out-of-place transpose */
1299566063dSJacob Faibussowitsch     PetscCall(MatTranspose(mat,MAT_INITIAL_MATRIX,&tmat));
130c4762a1bSJed Brown   }
131c4762a1bSJed Brown 
132c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
133c4762a1bSJed Brown   /* Print info about transpose matrix */
1349566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat,NORM_FROBENIUS,&normf));
1359566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat,NORM_1,&norm1));
1369566063dSJacob Faibussowitsch   PetscCall(MatNorm(tmat,NORM_INFINITY,&normi));
1379566063dSJacob 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));
1389566063dSJacob Faibussowitsch   PetscCall(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
139c4762a1bSJed Brown 
140c4762a1bSJed Brown   /* ----------------- Test MatAXPY(), MatAYPX()  ----------------- */
141c4762a1bSJed Brown   if (mat && !rect) {
142c4762a1bSJed Brown     alpha = 1.0;
1439566063dSJacob Faibussowitsch     PetscCall(PetscOptionsGetScalar(NULL,NULL,"-alpha",&alpha,NULL));
1449566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A\n"));
1459566063dSJacob Faibussowitsch     PetscCall(MatAXPY(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN));
1469566063dSJacob Faibussowitsch     PetscCall(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
147c4762a1bSJed Brown 
1489566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAYPX:  B = alpha*B + A\n"));
1499566063dSJacob Faibussowitsch     PetscCall(MatAYPX(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN));
1509566063dSJacob Faibussowitsch     PetscCall(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
151c4762a1bSJed Brown   }
152c4762a1bSJed Brown 
153c4762a1bSJed Brown   {
154c4762a1bSJed Brown     Mat C;
155c4762a1bSJed Brown     alpha = 1.0;
1569566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
1579566063dSJacob Faibussowitsch     PetscCall(MatDuplicate(mat,MAT_COPY_VALUES,&C));
1589566063dSJacob Faibussowitsch     PetscCall(MatAXPY(C,alpha,mat,SAME_NONZERO_PATTERN));
1599566063dSJacob Faibussowitsch     PetscCall(MatView(C,PETSC_VIEWER_STDOUT_WORLD));
1609566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&C));
1619566063dSJacob Faibussowitsch     PetscCall(TransposeAXPY(C,alpha,mat,MatCreateTranspose));
1629566063dSJacob Faibussowitsch     PetscCall(TransposeAXPY(C,alpha,mat,MatCreateHermitianTranspose));
163c4762a1bSJed Brown   }
164c4762a1bSJed Brown 
165c4762a1bSJed Brown   {
166c4762a1bSJed Brown     Mat matB;
167c4762a1bSJed Brown     /* get matB that has nonzeros of mat in all even numbers of row and col */
1689566063dSJacob Faibussowitsch     PetscCall(MatCreate(PETSC_COMM_WORLD,&matB));
1699566063dSJacob Faibussowitsch     PetscCall(MatSetSizes(matB,PETSC_DECIDE,PETSC_DECIDE,m,n));
1709566063dSJacob Faibussowitsch     PetscCall(MatSetFromOptions(matB));
1719566063dSJacob Faibussowitsch     PetscCall(MatSetUp(matB));
1729566063dSJacob Faibussowitsch     PetscCall(MatGetOwnershipRange(matB,&rstart,&rend));
173c4762a1bSJed Brown     if (rstart % 2 != 0) rstart++;
174c4762a1bSJed Brown     for (i=rstart; i<rend; i += 2) {
175c4762a1bSJed Brown       for (j=0; j<n; j += 2) {
1768e160fb9SStefano Zampini         v    = 10.0*i+j+1.0;
1779566063dSJacob Faibussowitsch         PetscCall(MatSetValues(matB,1,&i,1,&j,&v,INSERT_VALUES));
178c4762a1bSJed Brown       }
179c4762a1bSJed Brown     }
1809566063dSJacob Faibussowitsch     PetscCall(MatAssemblyBegin(matB,MAT_FINAL_ASSEMBLY));
1819566063dSJacob Faibussowitsch     PetscCall(MatAssemblyEnd(matB,MAT_FINAL_ASSEMBLY));
1829566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD," A: original matrix:\n"));
1839566063dSJacob Faibussowitsch     PetscCall(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
1849566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD," B(a subset of A):\n"));
1859566063dSJacob Faibussowitsch     PetscCall(MatView(matB,PETSC_VIEWER_STDOUT_WORLD));
1869566063dSJacob Faibussowitsch     PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A, SUBSET_NONZERO_PATTERN\n"));
1879566063dSJacob Faibussowitsch     PetscCall(MatAXPY(mat,alpha,matB,SUBSET_NONZERO_PATTERN));
1889566063dSJacob Faibussowitsch     PetscCall(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
1899566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&matB));
190c4762a1bSJed Brown   }
191c4762a1bSJed Brown 
192a5225ed3SStefano Zampini   /* Test MatZeroRows */
193a5225ed3SStefano Zampini   j = rstart - 1;
194a5225ed3SStefano Zampini   if (j < 0) j = m-1;
1952f605a99SJose E. Roman   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatZeroRows:\n"));
1969566063dSJacob Faibussowitsch   PetscCall(MatZeroRows(mat,1,&j,0.0,NULL,NULL));
1979566063dSJacob Faibussowitsch   PetscCall(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
198a5225ed3SStefano Zampini 
1992f605a99SJose E. Roman   /* Test MatShift */
2002f605a99SJose E. Roman   PetscCall(PetscPrintf(PETSC_COMM_WORLD,"MatShift: B = B - 2*I\n"));
2012f605a99SJose E. Roman   PetscCall(MatShift(mat,-2.0));
2022f605a99SJose E. Roman   PetscCall(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
2032f605a99SJose E. Roman 
2049566063dSJacob Faibussowitsch   PetscCall(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD));
205c4762a1bSJed Brown   /* Free data structures */
2069566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&mat));
2079566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&tmat));
2089566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
209b122ec5aSJacob Faibussowitsch   return 0;
210c4762a1bSJed Brown }
211c4762a1bSJed Brown 
212c4762a1bSJed Brown /*TEST
213c4762a1bSJed Brown 
214c4762a1bSJed Brown    test:
215c4762a1bSJed Brown       suffix: 11_A
216c4762a1bSJed Brown       args: -mat_type seqaij -rectA
217c4762a1bSJed Brown       filter: grep -v "Mat Object"
218c4762a1bSJed Brown 
219c4762a1bSJed Brown    test:
220c4762a1bSJed Brown       suffix: 12_A
221c4762a1bSJed Brown       args: -mat_type seqdense -rectA
222a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
223a5225ed3SStefano Zampini 
224a5225ed3SStefano Zampini    test:
225a5225ed3SStefano Zampini       requires: cuda
226a5225ed3SStefano Zampini       suffix: 12_A_cuda
227a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectA
228a5225ed3SStefano Zampini       output_file: output/ex2_12_A.out
229a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
230c4762a1bSJed Brown 
231c4762a1bSJed Brown    test:
23224b337e5SStefano Zampini       requires: kokkos_kernels
233d9265f21SStefano Zampini       suffix: 12_A_kokkos
234dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectA
235d9265f21SStefano Zampini       output_file: output/ex2_12_A.out
236d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
237d9265f21SStefano Zampini 
238d9265f21SStefano Zampini    test:
239c4762a1bSJed Brown       suffix: 11_B
240c4762a1bSJed Brown       args: -mat_type seqaij -rectB
241c4762a1bSJed Brown       filter: grep -v "Mat Object"
242c4762a1bSJed Brown 
243c4762a1bSJed Brown    test:
244c4762a1bSJed Brown       suffix: 12_B
245c4762a1bSJed Brown       args: -mat_type seqdense -rectB
246a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
247a5225ed3SStefano Zampini 
248cc19c814SJunchao Zhang    testset:
249cc19c814SJunchao Zhang       args: -rectB
250cc19c814SJunchao Zhang       output_file: output/ex2_12_B.out
251cc19c814SJunchao Zhang       filter: grep -v type | grep -v "Mat Object"
252cc19c814SJunchao Zhang 
253a5225ed3SStefano Zampini       test:
254a5225ed3SStefano Zampini          requires: cuda
255a5225ed3SStefano Zampini          suffix: 12_B_cuda
256cc19c814SJunchao Zhang          args: -mat_type {{seqdensecuda seqaijcusparse}}
257c4762a1bSJed Brown 
258c4762a1bSJed Brown       test:
25924b337e5SStefano Zampini          requires: kokkos_kernels
260d9265f21SStefano Zampini          suffix: 12_B_kokkos
261cc19c814SJunchao Zhang          args: -mat_type aijkokkos
262d9265f21SStefano Zampini 
263d9265f21SStefano Zampini       test:
264cc19c814SJunchao Zhang          suffix: 12_B_aij
265cc19c814SJunchao Zhang          args: -mat_type aij
266cc19c814SJunchao Zhang    test:
267c4762a1bSJed Brown       suffix: 21
268c4762a1bSJed Brown       args: -mat_type mpiaij
2698cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
270c4762a1bSJed Brown 
271c4762a1bSJed Brown    test:
272c4762a1bSJed Brown       suffix: 22
273c4762a1bSJed Brown       args: -mat_type mpidense
274a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
275a5225ed3SStefano Zampini 
276a5225ed3SStefano Zampini    test:
277a5225ed3SStefano Zampini       requires: cuda
278a5225ed3SStefano Zampini       suffix: 22_cuda
279a5225ed3SStefano Zampini       output_file: output/ex2_22.out
280a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
281a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
282c4762a1bSJed Brown 
283c4762a1bSJed Brown    test:
28424b337e5SStefano Zampini       requires: kokkos_kernels
285d9265f21SStefano Zampini       suffix: 22_kokkos
286d9265f21SStefano Zampini       output_file: output/ex2_22.out
287dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
288d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
289d9265f21SStefano Zampini 
290d9265f21SStefano Zampini    test:
291c4762a1bSJed Brown       suffix: 23
292c4762a1bSJed Brown       nsize: 3
293c4762a1bSJed Brown       args: -mat_type mpiaij
2948cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
295c4762a1bSJed Brown 
296c4762a1bSJed Brown    test:
297c4762a1bSJed Brown       suffix: 24
298c4762a1bSJed Brown       nsize: 3
299c4762a1bSJed Brown       args: -mat_type mpidense
300a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
301a5225ed3SStefano Zampini 
302a5225ed3SStefano Zampini    test:
303a5225ed3SStefano Zampini       requires: cuda
304a5225ed3SStefano Zampini       suffix: 24_cuda
305a5225ed3SStefano Zampini       nsize: 3
306a5225ed3SStefano Zampini       output_file: output/ex2_24.out
307a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
308a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
309c4762a1bSJed Brown 
310c4762a1bSJed Brown    test:
311c4762a1bSJed Brown       suffix: 2_aijcusparse_1
312c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
313a5225ed3SStefano Zampini       output_file: output/ex2_21.out
314c4762a1bSJed Brown       requires: cuda
3158cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
316c4762a1bSJed Brown 
317c4762a1bSJed Brown    test:
318629dcba7SJunchao Zhang       suffix: 2_aijkokkos_1
319629dcba7SJunchao Zhang       args: -mat_type aijkokkos
320629dcba7SJunchao Zhang       output_file: output/ex2_21.out
321629dcba7SJunchao Zhang       requires: kokkos_kernels
3228cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
323629dcba7SJunchao Zhang 
324629dcba7SJunchao Zhang    test:
325c4762a1bSJed Brown       suffix: 2_aijcusparse_2
326c4762a1bSJed Brown       nsize: 3
327c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
328c4762a1bSJed Brown       output_file: output/ex2_23.out
329c4762a1bSJed Brown       requires: cuda
3308cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
331c4762a1bSJed Brown 
332c4762a1bSJed Brown    test:
333d9265f21SStefano Zampini       suffix: 2_aijkokkos_2
334d9265f21SStefano Zampini       nsize: 3
335dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
336d9265f21SStefano Zampini       output_file: output/ex2_23.out
337629dcba7SJunchao Zhang       # Turn off hip due to intermittent CI failures on hip.txcorp.com. Should re-enable this test when the machine is upgraded.
338629dcba7SJunchao Zhang       requires: !sycl !hip kokkos_kernels
3398cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
340d9265f21SStefano Zampini 
341d9265f21SStefano Zampini    test:
342c4762a1bSJed Brown       suffix: 3
343c4762a1bSJed Brown       nsize: 2
344c4762a1bSJed Brown       args: -mat_type mpiaij -rectA
345c4762a1bSJed Brown 
346c4762a1bSJed Brown    test:
347c4762a1bSJed Brown       suffix: 3_aijcusparse
348c4762a1bSJed Brown       nsize: 2
349c4762a1bSJed Brown       args: -mat_type mpiaijcusparse -rectA
350c4762a1bSJed Brown       requires: cuda
351c4762a1bSJed Brown 
352c4762a1bSJed Brown    test:
353c4762a1bSJed Brown       suffix: 4
354c4762a1bSJed Brown       nsize: 2
355c4762a1bSJed Brown       args: -mat_type mpidense -rectA
3568cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
357a5225ed3SStefano Zampini 
358a5225ed3SStefano Zampini    test:
359a5225ed3SStefano Zampini       requires: cuda
360a5225ed3SStefano Zampini       suffix: 4_cuda
361a5225ed3SStefano Zampini       nsize: 2
362a5225ed3SStefano Zampini       output_file: output/ex2_4.out
363a5225ed3SStefano Zampini       args: -mat_type mpidensecuda -rectA
3648cc725e6SPierre Jolivet       filter: grep -v type | grep -v " MPI process"
365c4762a1bSJed Brown 
366c4762a1bSJed Brown    test:
367c4762a1bSJed Brown       suffix: aijcusparse_1
368c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectA
369c4762a1bSJed Brown       filter: grep -v "Mat Object"
370c4762a1bSJed Brown       output_file: output/ex2_11_A_aijcusparse.out
371c4762a1bSJed Brown       requires: cuda
372c4762a1bSJed Brown 
373c4762a1bSJed Brown TEST*/
374