xref: /petsc/src/mat/tests/ex2.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
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;
125f80ce2aSJacob Faibussowitsch   CHKERRQ(MatGetType(mat,&mtype));
13c4762a1bSJed Brown   if (f == MatCreateTranspose) {
145f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^T)^T = (C^T)^T + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
15c4762a1bSJed Brown   } else {
165f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^H)^H = (C^H)^H + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
17c4762a1bSJed Brown   }
185f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDuplicate(mat,MAT_COPY_VALUES,&C));
195f80ce2aSJacob Faibussowitsch   CHKERRQ(f(C,&D));
205f80ce2aSJacob Faibussowitsch   CHKERRQ(f(D,&E));
215f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAXPY(E,alpha,mat,SAME_NONZERO_PATTERN));
225f80ce2aSJacob Faibussowitsch   CHKERRQ(MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E));
235f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(E,PETSC_VIEWER_STDOUT_WORLD));
245f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&E));
255f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&D));
265f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&C));
27c4762a1bSJed Brown   if (f == MatCreateTranspose) {
285f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
29c4762a1bSJed Brown   } else {
305f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
31c4762a1bSJed Brown   }
32c4762a1bSJed Brown   if (f == MatCreateTranspose) {
335f80ce2aSJacob Faibussowitsch     CHKERRQ(MatTranspose(mat,MAT_INITIAL_MATRIX,&D));
34c4762a1bSJed Brown   } else {
355f80ce2aSJacob Faibussowitsch     CHKERRQ(MatHermitianTranspose(mat,MAT_INITIAL_MATRIX,&D));
36c4762a1bSJed Brown   }
375f80ce2aSJacob Faibussowitsch   CHKERRQ(f(D,&E));
385f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDuplicate(mat,MAT_COPY_VALUES,&C));
395f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAXPY(C,alpha,E,SAME_NONZERO_PATTERN));
405f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(C,PETSC_VIEWER_STDOUT_WORLD));
415f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&E));
425f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&D));
435f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&C));
44c4762a1bSJed Brown   if (f == MatCreateTranspose) {
455f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^T)^T = (C^T)^T + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n"));
46c4762a1bSJed Brown   } else {
475f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^H)^H = (C^H)^H + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n"));
48c4762a1bSJed Brown   }
495f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDuplicate(mat,MAT_COPY_VALUES,&C));
505f80ce2aSJacob Faibussowitsch   CHKERRQ(f(C,&D));
515f80ce2aSJacob Faibussowitsch   CHKERRQ(f(D,&E));
525f80ce2aSJacob Faibussowitsch   CHKERRQ(f(mat,&F));
535f80ce2aSJacob Faibussowitsch   CHKERRQ(f(F,&G));
545f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAXPY(E,alpha,G,SAME_NONZERO_PATTERN));
555f80ce2aSJacob Faibussowitsch   CHKERRQ(MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E));
565f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(E,PETSC_VIEWER_STDOUT_WORLD));
575f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&G));
585f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&F));
595f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&E));
605f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&D));
615f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&C));
628e160fb9SStefano Zampini 
638e160fb9SStefano Zampini   /* Call f on a matrix that does not implement the transposition */
645f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  Now without the transposition operation\n"));
655f80ce2aSJacob Faibussowitsch   CHKERRQ(MatConvert(mat,MATSHELL,MAT_INITIAL_MATRIX,&C));
665f80ce2aSJacob Faibussowitsch   CHKERRQ(f(C,&D));
675f80ce2aSJacob Faibussowitsch   CHKERRQ(f(D,&E));
688e160fb9SStefano Zampini   /* XXX cannot use MAT_INPLACE_MATRIX, it leaks mat */
695f80ce2aSJacob Faibussowitsch   CHKERRQ(MatConvert(E,mtype,MAT_INITIAL_MATRIX,&F));
705f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAXPY(F,alpha,mat,SAME_NONZERO_PATTERN));
715f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(F,PETSC_VIEWER_STDOUT_WORLD));
725f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&F));
735f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&E));
745f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&D));
755f80ce2aSJacob Faibussowitsch   CHKERRQ(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*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscInitialize(&argc,&argv,(char*)0,help));
895f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_ASCII_COMMON));
905f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-m",&m,NULL));
915f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_rank(PETSC_COMM_WORLD,&rank));
925f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(PETSC_COMM_WORLD,&size));
93c4762a1bSJed Brown   n    = m;
945f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-rectA",&flg));
95c4762a1bSJed Brown   if (flg) {n += 2; rect = 1;}
965f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-rectB",&flg));
97c4762a1bSJed Brown   if (flg) {n -= 2; rect = 1;}
98c4762a1bSJed Brown 
99a5225ed3SStefano Zampini   /* ------- Assemble matrix --------- */
1005f80ce2aSJacob Faibussowitsch   CHKERRQ(MatCreate(PETSC_COMM_WORLD,&mat));
1015f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetSizes(mat,PETSC_DECIDE,PETSC_DECIDE,m,n));
1025f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetFromOptions(mat));
1035f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetUp(mat));
1045f80ce2aSJacob Faibussowitsch   CHKERRQ(MatGetOwnershipRange(mat,&rstart,&rend));
105c4762a1bSJed Brown   for (i=rstart; i<rend; i++) {
106c4762a1bSJed Brown     for (j=0; j<n; j++) {
1078e160fb9SStefano Zampini       v    = 10.0*i+j+1.0;
1085f80ce2aSJacob Faibussowitsch       CHKERRQ(MatSetValues(mat,1,&i,1,&j,&v,INSERT_VALUES));
109c4762a1bSJed Brown     }
110c4762a1bSJed Brown   }
1115f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAssemblyBegin(mat,MAT_FINAL_ASSEMBLY));
1125f80ce2aSJacob Faibussowitsch   CHKERRQ(MatAssemblyEnd(mat,MAT_FINAL_ASSEMBLY));
113c4762a1bSJed Brown 
114c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
1155f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(mat,NORM_FROBENIUS,&normf));
1165f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(mat,NORM_1,&norm1));
1175f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(mat,NORM_INFINITY,&normi));
1185f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"original A: Frobenious norm = %g, one norm = %g, infinity norm = %g\n",(double)normf,(double)norm1,(double)normi));
1195f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
120c4762a1bSJed Brown 
121c4762a1bSJed Brown   /* --------------- Test MatTranspose()  -------------- */
1225f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsHasName(NULL,NULL,"-in_place",&flg));
123c4762a1bSJed Brown   if (!rect && flg) {
1245f80ce2aSJacob Faibussowitsch     CHKERRQ(MatTranspose(mat,MAT_REUSE_MATRIX,&mat));   /* in-place transpose */
1258e160fb9SStefano Zampini     tmat = mat;
1268e160fb9SStefano Zampini     mat  = NULL;
127c4762a1bSJed Brown   } else { /* out-of-place transpose */
1285f80ce2aSJacob Faibussowitsch     CHKERRQ(MatTranspose(mat,MAT_INITIAL_MATRIX,&tmat));
129c4762a1bSJed Brown   }
130c4762a1bSJed Brown 
131c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
132c4762a1bSJed Brown   /* Print info about transpose matrix */
1335f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(tmat,NORM_FROBENIUS,&normf));
1345f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(tmat,NORM_1,&norm1));
1355f80ce2aSJacob Faibussowitsch   CHKERRQ(MatNorm(tmat,NORM_INFINITY,&normi));
1365f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"B = A^T: Frobenious norm = %g, one norm = %g, infinity norm = %g\n",(double)normf,(double)norm1,(double)normi));
1375f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
138c4762a1bSJed Brown 
139c4762a1bSJed Brown   /* ----------------- Test MatAXPY(), MatAYPX()  ----------------- */
140c4762a1bSJed Brown   if (mat && !rect) {
141c4762a1bSJed Brown     alpha = 1.0;
1425f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscOptionsGetScalar(NULL,NULL,"-alpha",&alpha,NULL));
1435f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A\n"));
1445f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAXPY(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN));
1455f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
146c4762a1bSJed Brown 
1475f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAYPX:  B = alpha*B + A\n"));
1485f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAYPX(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN));
1495f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(tmat,PETSC_VIEWER_STDOUT_WORLD));
150c4762a1bSJed Brown   }
151c4762a1bSJed Brown 
152c4762a1bSJed Brown   {
153c4762a1bSJed Brown     Mat C;
154c4762a1bSJed Brown     alpha = 1.0;
1555f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * A, C=A, SAME_NONZERO_PATTERN\n"));
1565f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDuplicate(mat,MAT_COPY_VALUES,&C));
1575f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAXPY(C,alpha,mat,SAME_NONZERO_PATTERN));
1585f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(C,PETSC_VIEWER_STDOUT_WORLD));
1595f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&C));
1605f80ce2aSJacob Faibussowitsch     CHKERRQ(TransposeAXPY(C,alpha,mat,MatCreateTranspose));
1615f80ce2aSJacob Faibussowitsch     CHKERRQ(TransposeAXPY(C,alpha,mat,MatCreateHermitianTranspose));
162c4762a1bSJed Brown   }
163c4762a1bSJed Brown 
164c4762a1bSJed Brown   {
165c4762a1bSJed Brown     Mat matB;
166c4762a1bSJed Brown     /* get matB that has nonzeros of mat in all even numbers of row and col */
1675f80ce2aSJacob Faibussowitsch     CHKERRQ(MatCreate(PETSC_COMM_WORLD,&matB));
1685f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetSizes(matB,PETSC_DECIDE,PETSC_DECIDE,m,n));
1695f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetFromOptions(matB));
1705f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetUp(matB));
1715f80ce2aSJacob Faibussowitsch     CHKERRQ(MatGetOwnershipRange(matB,&rstart,&rend));
172c4762a1bSJed Brown     if (rstart % 2 != 0) rstart++;
173c4762a1bSJed Brown     for (i=rstart; i<rend; i += 2) {
174c4762a1bSJed Brown       for (j=0; j<n; j += 2) {
1758e160fb9SStefano Zampini         v    = 10.0*i+j+1.0;
1765f80ce2aSJacob Faibussowitsch         CHKERRQ(MatSetValues(matB,1,&i,1,&j,&v,INSERT_VALUES));
177c4762a1bSJed Brown       }
178c4762a1bSJed Brown     }
1795f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAssemblyBegin(matB,MAT_FINAL_ASSEMBLY));
1805f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAssemblyEnd(matB,MAT_FINAL_ASSEMBLY));
1815f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD," A: original matrix:\n"));
1825f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
1835f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD," B(a subset of A):\n"));
1845f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(matB,PETSC_VIEWER_STDOUT_WORLD));
1855f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A, SUBSET_NONZERO_PATTERN\n"));
1865f80ce2aSJacob Faibussowitsch     CHKERRQ(MatAXPY(mat,alpha,matB,SUBSET_NONZERO_PATTERN));
1875f80ce2aSJacob Faibussowitsch     CHKERRQ(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
1885f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&matB));
189c4762a1bSJed Brown   }
190c4762a1bSJed Brown 
191a5225ed3SStefano Zampini   /* Test MatZeroRows */
192a5225ed3SStefano Zampini   j = rstart - 1;
193a5225ed3SStefano Zampini   if (j < 0) j = m-1;
1945f80ce2aSJacob Faibussowitsch   CHKERRQ(MatZeroRows(mat,1,&j,0.0,NULL,NULL));
1955f80ce2aSJacob Faibussowitsch   CHKERRQ(MatView(mat,PETSC_VIEWER_STDOUT_WORLD));
196a5225ed3SStefano Zampini 
1975f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD));
198c4762a1bSJed Brown   /* Free data structures */
1995f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&mat));
2005f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&tmat));
201*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscFinalize());
202*b122ec5aSJacob Faibussowitsch   return 0;
203c4762a1bSJed Brown }
204c4762a1bSJed Brown 
205c4762a1bSJed Brown /*TEST
206c4762a1bSJed Brown 
207c4762a1bSJed Brown    test:
208c4762a1bSJed Brown       suffix: 11_A
209c4762a1bSJed Brown       args: -mat_type seqaij -rectA
210c4762a1bSJed Brown       filter: grep -v "Mat Object"
211c4762a1bSJed Brown 
212c4762a1bSJed Brown    test:
213c4762a1bSJed Brown       suffix: 12_A
214c4762a1bSJed Brown       args: -mat_type seqdense -rectA
215a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
216a5225ed3SStefano Zampini 
217a5225ed3SStefano Zampini    test:
218a5225ed3SStefano Zampini       requires: cuda
219a5225ed3SStefano Zampini       suffix: 12_A_cuda
220a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectA
221a5225ed3SStefano Zampini       output_file: output/ex2_12_A.out
222a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
223c4762a1bSJed Brown 
224c4762a1bSJed Brown    test:
22524b337e5SStefano Zampini       requires: kokkos_kernels
226d9265f21SStefano Zampini       suffix: 12_A_kokkos
227dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectA
228d9265f21SStefano Zampini       output_file: output/ex2_12_A.out
229d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
230d9265f21SStefano Zampini 
231d9265f21SStefano Zampini    test:
232c4762a1bSJed Brown       suffix: 11_B
233c4762a1bSJed Brown       args: -mat_type seqaij -rectB
234c4762a1bSJed Brown       filter: grep -v "Mat Object"
235c4762a1bSJed Brown 
236c4762a1bSJed Brown    test:
237c4762a1bSJed Brown       suffix: 12_B
238c4762a1bSJed Brown       args: -mat_type seqdense -rectB
239a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
240a5225ed3SStefano Zampini 
241a5225ed3SStefano Zampini    test:
242a5225ed3SStefano Zampini       requires: cuda
243a5225ed3SStefano Zampini       suffix: 12_B_cuda
244a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectB
245a5225ed3SStefano Zampini       output_file: output/ex2_12_B.out
246a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
247c4762a1bSJed Brown 
248c4762a1bSJed Brown    test:
24924b337e5SStefano Zampini       requires: kokkos_kernels
250d9265f21SStefano Zampini       suffix: 12_B_kokkos
251dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectB
252d9265f21SStefano Zampini       output_file: output/ex2_12_B.out
253d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
254d9265f21SStefano Zampini 
255d9265f21SStefano Zampini    test:
256c4762a1bSJed Brown       suffix: 21
257c4762a1bSJed Brown       args: -mat_type mpiaij
258a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
259c4762a1bSJed Brown 
260c4762a1bSJed Brown    test:
261c4762a1bSJed Brown       suffix: 22
262c4762a1bSJed Brown       args: -mat_type mpidense
263a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
264a5225ed3SStefano Zampini 
265a5225ed3SStefano Zampini    test:
266a5225ed3SStefano Zampini       requires: cuda
267a5225ed3SStefano Zampini       suffix: 22_cuda
268a5225ed3SStefano Zampini       output_file: output/ex2_22.out
269a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
270a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
271c4762a1bSJed Brown 
272c4762a1bSJed Brown    test:
27324b337e5SStefano Zampini       requires: kokkos_kernels
274d9265f21SStefano Zampini       suffix: 22_kokkos
275d9265f21SStefano Zampini       output_file: output/ex2_22.out
276dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
277d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
278d9265f21SStefano Zampini 
279d9265f21SStefano Zampini    test:
280c4762a1bSJed Brown       suffix: 23
281c4762a1bSJed Brown       nsize: 3
282c4762a1bSJed Brown       args: -mat_type mpiaij
283c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
284c4762a1bSJed Brown 
285c4762a1bSJed Brown    test:
286c4762a1bSJed Brown       suffix: 24
287c4762a1bSJed Brown       nsize: 3
288c4762a1bSJed Brown       args: -mat_type mpidense
289a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
290a5225ed3SStefano Zampini 
291a5225ed3SStefano Zampini    test:
292a5225ed3SStefano Zampini       requires: cuda
293a5225ed3SStefano Zampini       suffix: 24_cuda
294a5225ed3SStefano Zampini       nsize: 3
295a5225ed3SStefano Zampini       output_file: output/ex2_24.out
296a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
297a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
298c4762a1bSJed Brown 
299c4762a1bSJed Brown    test:
300c4762a1bSJed Brown       suffix: 2_aijcusparse_1
301c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
302a5225ed3SStefano Zampini       output_file: output/ex2_21.out
303c4762a1bSJed Brown       requires: cuda
304c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
305c4762a1bSJed Brown 
306c4762a1bSJed Brown    test:
307629dcba7SJunchao Zhang       suffix: 2_aijkokkos_1
308629dcba7SJunchao Zhang       args: -mat_type aijkokkos
309629dcba7SJunchao Zhang       output_file: output/ex2_21.out
310629dcba7SJunchao Zhang       requires: kokkos_kernels
311629dcba7SJunchao Zhang       filter: grep -v type | grep -v "MPI processes"
312629dcba7SJunchao Zhang 
313629dcba7SJunchao Zhang    test:
314c4762a1bSJed Brown       suffix: 2_aijcusparse_2
315c4762a1bSJed Brown       nsize: 3
316c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
317c4762a1bSJed Brown       output_file: output/ex2_23.out
318c4762a1bSJed Brown       requires: cuda
319c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
320c4762a1bSJed Brown 
321c4762a1bSJed Brown    test:
322d9265f21SStefano Zampini       suffix: 2_aijkokkos_2
323d9265f21SStefano Zampini       nsize: 3
324dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
325d9265f21SStefano Zampini       output_file: output/ex2_23.out
326629dcba7SJunchao Zhang       # Turn off hip due to intermittent CI failures on hip.txcorp.com. Should re-enable this test when the machine is upgraded.
327629dcba7SJunchao Zhang       requires: !sycl !hip kokkos_kernels
328d9265f21SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
329d9265f21SStefano Zampini 
330d9265f21SStefano Zampini    test:
331c4762a1bSJed Brown       suffix: 3
332c4762a1bSJed Brown       nsize: 2
333c4762a1bSJed Brown       args: -mat_type mpiaij -rectA
334c4762a1bSJed Brown 
335c4762a1bSJed Brown    test:
336c4762a1bSJed Brown       suffix: 3_aijcusparse
337c4762a1bSJed Brown       nsize: 2
338c4762a1bSJed Brown       args: -mat_type mpiaijcusparse -rectA
339c4762a1bSJed Brown       requires: cuda
340c4762a1bSJed Brown 
341c4762a1bSJed Brown    test:
342c4762a1bSJed Brown       suffix: 4
343c4762a1bSJed Brown       nsize: 2
344c4762a1bSJed Brown       args: -mat_type mpidense -rectA
345a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
346a5225ed3SStefano Zampini 
347a5225ed3SStefano Zampini    test:
348a5225ed3SStefano Zampini       requires: cuda
349a5225ed3SStefano Zampini       suffix: 4_cuda
350a5225ed3SStefano Zampini       nsize: 2
351a5225ed3SStefano Zampini       output_file: output/ex2_4.out
352a5225ed3SStefano Zampini       args: -mat_type mpidensecuda -rectA
353a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
354c4762a1bSJed Brown 
355c4762a1bSJed Brown    test:
356c4762a1bSJed Brown       suffix: aijcusparse_1
357c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectA
358c4762a1bSJed Brown       filter: grep -v "Mat Object"
359c4762a1bSJed Brown       output_file: output/ex2_11_A_aijcusparse.out
360c4762a1bSJed Brown       requires: cuda
361c4762a1bSJed Brown 
362c4762a1bSJed Brown    test:
363c4762a1bSJed Brown       suffix: aijcusparse_2
364c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectB
365c4762a1bSJed Brown       filter: grep -v "Mat Object"
366c4762a1bSJed Brown       output_file: output/ex2_11_B_aijcusparse.out
367c4762a1bSJed Brown       requires: cuda
368c4762a1bSJed Brown 
369c4762a1bSJed Brown TEST*/
370