xref: /petsc/src/mat/tests/ex2.c (revision 629dcba74487a1e3ecf9f020b952d6fbc46f19a2)
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;
9c4762a1bSJed Brown   PetscErrorCode ierr;
108e160fb9SStefano Zampini   MatType        mtype;
11c4762a1bSJed Brown 
12c4762a1bSJed Brown   PetscFunctionBegin;
138e160fb9SStefano Zampini   ierr = MatGetType(mat,&mtype);CHKERRQ(ierr);
14c4762a1bSJed Brown   if (f == MatCreateTranspose) {
158e160fb9SStefano Zampini     ierr = PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^T)^T = (C^T)^T + alpha * A, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
16c4762a1bSJed Brown   } else {
178e160fb9SStefano Zampini     ierr = PetscPrintf(PETSC_COMM_WORLD,"\nMatAXPY:  (C^H)^H = (C^H)^H + alpha * A, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
18c4762a1bSJed Brown   }
19c4762a1bSJed Brown   ierr = MatDuplicate(mat,MAT_COPY_VALUES,&C);CHKERRQ(ierr);
20c4762a1bSJed Brown   ierr = f(C,&D);CHKERRQ(ierr);
21c4762a1bSJed Brown   ierr = f(D,&E);CHKERRQ(ierr);
22c4762a1bSJed Brown   ierr = MatAXPY(E,alpha,mat,SAME_NONZERO_PATTERN);CHKERRQ(ierr);
238e160fb9SStefano Zampini   ierr = MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E);CHKERRQ(ierr);
248e160fb9SStefano Zampini   ierr = MatView(E,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
25c4762a1bSJed Brown   ierr = MatDestroy(&E);CHKERRQ(ierr);
26c4762a1bSJed Brown   ierr = MatDestroy(&D);CHKERRQ(ierr);
27c4762a1bSJed Brown   ierr = MatDestroy(&C);CHKERRQ(ierr);
28c4762a1bSJed Brown   if (f == MatCreateTranspose) {
29c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
30c4762a1bSJed Brown   } else {
31c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
32c4762a1bSJed Brown   }
33c4762a1bSJed Brown   if (f == MatCreateTranspose) {
34c4762a1bSJed Brown     ierr = MatTranspose(mat,MAT_INITIAL_MATRIX,&D);CHKERRQ(ierr);
35c4762a1bSJed Brown   } else {
36c4762a1bSJed Brown     ierr = MatHermitianTranspose(mat,MAT_INITIAL_MATRIX,&D);CHKERRQ(ierr);
37c4762a1bSJed Brown   }
38c4762a1bSJed Brown   ierr = f(D,&E);CHKERRQ(ierr);
398e160fb9SStefano Zampini   ierr = MatDuplicate(mat,MAT_COPY_VALUES,&C);CHKERRQ(ierr);
40c4762a1bSJed Brown   ierr = MatAXPY(C,alpha,E,SAME_NONZERO_PATTERN);CHKERRQ(ierr);
41c4762a1bSJed Brown   ierr = MatView(C,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
42c4762a1bSJed Brown   ierr = MatDestroy(&E);CHKERRQ(ierr);
43c4762a1bSJed Brown   ierr = MatDestroy(&D);CHKERRQ(ierr);
44c4762a1bSJed Brown   ierr = MatDestroy(&C);CHKERRQ(ierr);
45c4762a1bSJed Brown   if (f == MatCreateTranspose) {
46c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^T)^T = (C^T)^T + alpha * (A^T)^T, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
47c4762a1bSJed Brown   } else {
48c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  (C^H)^H = (C^H)^H + alpha * (A^H)^H, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
49c4762a1bSJed Brown   }
50c4762a1bSJed Brown   ierr = MatDuplicate(mat,MAT_COPY_VALUES,&C);CHKERRQ(ierr);
51c4762a1bSJed Brown   ierr = f(C,&D);CHKERRQ(ierr);
52c4762a1bSJed Brown   ierr = f(D,&E);CHKERRQ(ierr);
53c4762a1bSJed Brown   ierr = f(mat,&F);CHKERRQ(ierr);
54c4762a1bSJed Brown   ierr = f(F,&G);CHKERRQ(ierr);
55c4762a1bSJed Brown   ierr = MatAXPY(E,alpha,G,SAME_NONZERO_PATTERN);CHKERRQ(ierr);
568e160fb9SStefano Zampini   ierr = MatConvert(E,mtype,MAT_INPLACE_MATRIX,&E);CHKERRQ(ierr);
578e160fb9SStefano Zampini   ierr = MatView(E,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
58c4762a1bSJed Brown   ierr = MatDestroy(&G);CHKERRQ(ierr);
59c4762a1bSJed Brown   ierr = MatDestroy(&F);CHKERRQ(ierr);
60c4762a1bSJed Brown   ierr = MatDestroy(&E);CHKERRQ(ierr);
61c4762a1bSJed Brown   ierr = MatDestroy(&D);CHKERRQ(ierr);
62c4762a1bSJed Brown   ierr = MatDestroy(&C);CHKERRQ(ierr);
638e160fb9SStefano Zampini 
648e160fb9SStefano Zampini   /* Call f on a matrix that does not implement the transposition */
658e160fb9SStefano Zampini   ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  Now without the transposition operation\n");CHKERRQ(ierr);
668e160fb9SStefano Zampini   ierr = MatConvert(mat,MATSHELL,MAT_INITIAL_MATRIX,&C);CHKERRQ(ierr);
678e160fb9SStefano Zampini   ierr = f(C,&D);CHKERRQ(ierr);
688e160fb9SStefano Zampini   ierr = f(D,&E);CHKERRQ(ierr);
698e160fb9SStefano Zampini   /* XXX cannot use MAT_INPLACE_MATRIX, it leaks mat */
708e160fb9SStefano Zampini   ierr = MatConvert(E,mtype,MAT_INITIAL_MATRIX,&F);CHKERRQ(ierr);
718e160fb9SStefano Zampini   ierr = MatAXPY(F,alpha,mat,SAME_NONZERO_PATTERN);CHKERRQ(ierr);
728e160fb9SStefano Zampini   ierr = MatView(F,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
738e160fb9SStefano Zampini   ierr = MatDestroy(&F);CHKERRQ(ierr);
748e160fb9SStefano Zampini   ierr = MatDestroy(&E);CHKERRQ(ierr);
758e160fb9SStefano Zampini   ierr = MatDestroy(&D);CHKERRQ(ierr);
768e160fb9SStefano Zampini   ierr = MatDestroy(&C);CHKERRQ(ierr);
77c4762a1bSJed Brown   PetscFunctionReturn(0);
78c4762a1bSJed Brown }
79c4762a1bSJed Brown 
80c4762a1bSJed Brown int main(int argc,char **argv)
81c4762a1bSJed Brown {
82c4762a1bSJed Brown   Mat            mat,tmat = 0;
83c4762a1bSJed Brown   PetscInt       m = 7,n,i,j,rstart,rend,rect = 0;
84c4762a1bSJed Brown   PetscErrorCode ierr;
85c4762a1bSJed Brown   PetscMPIInt    size,rank;
86c4762a1bSJed Brown   PetscBool      flg;
87c4762a1bSJed Brown   PetscScalar    v, alpha;
88c4762a1bSJed Brown   PetscReal      normf,normi,norm1;
89c4762a1bSJed Brown 
90c4762a1bSJed Brown   ierr = PetscInitialize(&argc,&argv,(char*)0,help);if (ierr) return ierr;
91c4762a1bSJed Brown   ierr = PetscViewerPushFormat(PETSC_VIEWER_STDOUT_WORLD,PETSC_VIEWER_ASCII_COMMON);CHKERRQ(ierr);
92c4762a1bSJed Brown   ierr = PetscOptionsGetInt(NULL,NULL,"-m",&m,NULL);CHKERRQ(ierr);
93ffc4695bSBarry Smith   ierr = MPI_Comm_rank(PETSC_COMM_WORLD,&rank);CHKERRMPI(ierr);
94ffc4695bSBarry Smith   ierr = MPI_Comm_size(PETSC_COMM_WORLD,&size);CHKERRMPI(ierr);
95c4762a1bSJed Brown   n    = m;
96c4762a1bSJed Brown   ierr = PetscOptionsHasName(NULL,NULL,"-rectA",&flg);CHKERRQ(ierr);
97c4762a1bSJed Brown   if (flg) {n += 2; rect = 1;}
98c4762a1bSJed Brown   ierr = PetscOptionsHasName(NULL,NULL,"-rectB",&flg);CHKERRQ(ierr);
99c4762a1bSJed Brown   if (flg) {n -= 2; rect = 1;}
100c4762a1bSJed Brown 
101a5225ed3SStefano Zampini   /* ------- Assemble matrix --------- */
102c4762a1bSJed Brown   ierr = MatCreate(PETSC_COMM_WORLD,&mat);CHKERRQ(ierr);
103c4762a1bSJed Brown   ierr = MatSetSizes(mat,PETSC_DECIDE,PETSC_DECIDE,m,n);CHKERRQ(ierr);
104c4762a1bSJed Brown   ierr = MatSetFromOptions(mat);CHKERRQ(ierr);
105c4762a1bSJed Brown   ierr = MatSetUp(mat);CHKERRQ(ierr);
106c4762a1bSJed Brown   ierr = MatGetOwnershipRange(mat,&rstart,&rend);CHKERRQ(ierr);
107c4762a1bSJed Brown   for (i=rstart; i<rend; i++) {
108c4762a1bSJed Brown     for (j=0; j<n; j++) {
1098e160fb9SStefano Zampini       v    = 10.0*i+j+1.0;
110c4762a1bSJed Brown       ierr = MatSetValues(mat,1,&i,1,&j,&v,INSERT_VALUES);CHKERRQ(ierr);
111c4762a1bSJed Brown     }
112c4762a1bSJed Brown   }
113c4762a1bSJed Brown   ierr = MatAssemblyBegin(mat,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
114c4762a1bSJed Brown   ierr = MatAssemblyEnd(mat,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
115c4762a1bSJed Brown 
116c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
117c4762a1bSJed Brown   ierr = MatNorm(mat,NORM_FROBENIUS,&normf);CHKERRQ(ierr);
118c4762a1bSJed Brown   ierr = MatNorm(mat,NORM_1,&norm1);CHKERRQ(ierr);
119c4762a1bSJed Brown   ierr = MatNorm(mat,NORM_INFINITY,&normi);CHKERRQ(ierr);
120c4762a1bSJed Brown   ierr = PetscPrintf(PETSC_COMM_WORLD,"original A: Frobenious norm = %g, one norm = %g, infinity norm = %g\n",(double)normf,(double)norm1,(double)normi);CHKERRQ(ierr);
121c4762a1bSJed Brown   ierr = MatView(mat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
122c4762a1bSJed Brown 
123c4762a1bSJed Brown   /* --------------- Test MatTranspose()  -------------- */
124c4762a1bSJed Brown   ierr = PetscOptionsHasName(NULL,NULL,"-in_place",&flg);CHKERRQ(ierr);
125c4762a1bSJed Brown   if (!rect && flg) {
126c4762a1bSJed Brown     ierr = MatTranspose(mat,MAT_REUSE_MATRIX,&mat);CHKERRQ(ierr);   /* in-place transpose */
1278e160fb9SStefano Zampini     tmat = mat;
1288e160fb9SStefano Zampini     mat  = NULL;
129c4762a1bSJed Brown   } else { /* out-of-place transpose */
130c4762a1bSJed Brown     ierr = MatTranspose(mat,MAT_INITIAL_MATRIX,&tmat);CHKERRQ(ierr);
131c4762a1bSJed Brown   }
132c4762a1bSJed Brown 
133c4762a1bSJed Brown   /* ----------------- Test MatNorm()  ----------------- */
134c4762a1bSJed Brown   /* Print info about transpose matrix */
135c4762a1bSJed Brown   ierr = MatNorm(tmat,NORM_FROBENIUS,&normf);CHKERRQ(ierr);
136c4762a1bSJed Brown   ierr = MatNorm(tmat,NORM_1,&norm1);CHKERRQ(ierr);
137c4762a1bSJed Brown   ierr = MatNorm(tmat,NORM_INFINITY,&normi);CHKERRQ(ierr);
138c4762a1bSJed Brown   ierr = PetscPrintf(PETSC_COMM_WORLD,"B = A^T: Frobenious norm = %g, one norm = %g, infinity norm = %g\n",(double)normf,(double)norm1,(double)normi);CHKERRQ(ierr);
139c4762a1bSJed Brown   ierr = MatView(tmat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
140c4762a1bSJed Brown 
141c4762a1bSJed Brown   /* ----------------- Test MatAXPY(), MatAYPX()  ----------------- */
142c4762a1bSJed Brown   if (mat && !rect) {
143c4762a1bSJed Brown     alpha = 1.0;
144c4762a1bSJed Brown     ierr  = PetscOptionsGetScalar(NULL,NULL,"-alpha",&alpha,NULL);CHKERRQ(ierr);
145c4762a1bSJed Brown     ierr  = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A\n");CHKERRQ(ierr);
146c4762a1bSJed Brown     ierr  = MatAXPY(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN);CHKERRQ(ierr);
147c4762a1bSJed Brown     ierr  = MatView(tmat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
148c4762a1bSJed Brown 
149c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAYPX:  B = alpha*B + A\n");CHKERRQ(ierr);
150c4762a1bSJed Brown     ierr = MatAYPX(tmat,alpha,mat,DIFFERENT_NONZERO_PATTERN);CHKERRQ(ierr);
151c4762a1bSJed Brown     ierr = MatView(tmat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
152c4762a1bSJed Brown   }
153c4762a1bSJed Brown 
154c4762a1bSJed Brown   {
155c4762a1bSJed Brown     Mat C;
156c4762a1bSJed Brown     alpha = 1.0;
157c4762a1bSJed Brown     ierr  = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  C = C + alpha * A, C=A, SAME_NONZERO_PATTERN\n");CHKERRQ(ierr);
158c4762a1bSJed Brown     ierr  = MatDuplicate(mat,MAT_COPY_VALUES,&C);CHKERRQ(ierr);
159c4762a1bSJed Brown     ierr  = MatAXPY(C,alpha,mat,SAME_NONZERO_PATTERN);CHKERRQ(ierr);
160c4762a1bSJed Brown     ierr  = MatView(C,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
161c4762a1bSJed Brown     ierr  = MatDestroy(&C);CHKERRQ(ierr);
162c4762a1bSJed Brown     ierr  = TransposeAXPY(C,alpha,mat,MatCreateTranspose);CHKERRQ(ierr);
163c4762a1bSJed Brown     ierr  = TransposeAXPY(C,alpha,mat,MatCreateHermitianTranspose);CHKERRQ(ierr);
164c4762a1bSJed Brown   }
165c4762a1bSJed Brown 
166c4762a1bSJed Brown   {
167c4762a1bSJed Brown     Mat matB;
168c4762a1bSJed Brown     /* get matB that has nonzeros of mat in all even numbers of row and col */
169c4762a1bSJed Brown     ierr = MatCreate(PETSC_COMM_WORLD,&matB);CHKERRQ(ierr);
170c4762a1bSJed Brown     ierr = MatSetSizes(matB,PETSC_DECIDE,PETSC_DECIDE,m,n);CHKERRQ(ierr);
171c4762a1bSJed Brown     ierr = MatSetFromOptions(matB);CHKERRQ(ierr);
172c4762a1bSJed Brown     ierr = MatSetUp(matB);CHKERRQ(ierr);
173c4762a1bSJed Brown     ierr = MatGetOwnershipRange(matB,&rstart,&rend);CHKERRQ(ierr);
174c4762a1bSJed Brown     if (rstart % 2 != 0) rstart++;
175c4762a1bSJed Brown     for (i=rstart; i<rend; i += 2) {
176c4762a1bSJed Brown       for (j=0; j<n; j += 2) {
1778e160fb9SStefano Zampini         v    = 10.0*i+j+1.0;
178c4762a1bSJed Brown         ierr = MatSetValues(matB,1,&i,1,&j,&v,INSERT_VALUES);CHKERRQ(ierr);
179c4762a1bSJed Brown       }
180c4762a1bSJed Brown     }
181c4762a1bSJed Brown     ierr = MatAssemblyBegin(matB,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
182c4762a1bSJed Brown     ierr = MatAssemblyEnd(matB,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
183a5225ed3SStefano Zampini     ierr = PetscPrintf(PETSC_COMM_WORLD," A: original matrix:\n");CHKERRQ(ierr);
184c4762a1bSJed Brown     ierr = MatView(mat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
185a5225ed3SStefano Zampini     ierr = PetscPrintf(PETSC_COMM_WORLD," B(a subset of A):\n");CHKERRQ(ierr);
186c4762a1bSJed Brown     ierr = MatView(matB,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
187c4762a1bSJed Brown     ierr = PetscPrintf(PETSC_COMM_WORLD,"MatAXPY:  B = B + alpha * A, SUBSET_NONZERO_PATTERN\n");CHKERRQ(ierr);
188c4762a1bSJed Brown     ierr = MatAXPY(mat,alpha,matB,SUBSET_NONZERO_PATTERN);CHKERRQ(ierr);
189c4762a1bSJed Brown     ierr = MatView(mat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
190c4762a1bSJed Brown     ierr = MatDestroy(&matB);CHKERRQ(ierr);
191c4762a1bSJed Brown   }
192c4762a1bSJed Brown 
193a5225ed3SStefano Zampini   /* Test MatZeroRows */
194a5225ed3SStefano Zampini   j = rstart - 1;
195a5225ed3SStefano Zampini   if (j < 0) j = m-1;
196a5225ed3SStefano Zampini   ierr = MatZeroRows(mat,1,&j,0.0,NULL,NULL);CHKERRQ(ierr);
197a5225ed3SStefano Zampini   ierr = MatView(mat,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
198a5225ed3SStefano Zampini 
199c4762a1bSJed Brown   ierr = PetscViewerPopFormat(PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
200c4762a1bSJed Brown   /* Free data structures */
201c4762a1bSJed Brown   ierr = MatDestroy(&mat);CHKERRQ(ierr);
202c4762a1bSJed Brown   ierr = MatDestroy(&tmat);CHKERRQ(ierr);
203c4762a1bSJed Brown   ierr = PetscFinalize();
204c4762a1bSJed Brown   return ierr;
205c4762a1bSJed Brown }
206c4762a1bSJed Brown 
207c4762a1bSJed Brown /*TEST
208c4762a1bSJed Brown 
209c4762a1bSJed Brown    test:
210c4762a1bSJed Brown       suffix: 11_A
211c4762a1bSJed Brown       args: -mat_type seqaij -rectA
212c4762a1bSJed Brown       filter: grep -v "Mat Object"
213c4762a1bSJed Brown 
214c4762a1bSJed Brown    test:
215c4762a1bSJed Brown       suffix: 12_A
216c4762a1bSJed Brown       args: -mat_type seqdense -rectA
217a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
218a5225ed3SStefano Zampini 
219a5225ed3SStefano Zampini    test:
220a5225ed3SStefano Zampini       requires: cuda
221a5225ed3SStefano Zampini       suffix: 12_A_cuda
222a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectA
223a5225ed3SStefano Zampini       output_file: output/ex2_12_A.out
224a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
225c4762a1bSJed Brown 
226c4762a1bSJed Brown    test:
22724b337e5SStefano Zampini       requires: kokkos_kernels
228d9265f21SStefano Zampini       suffix: 12_A_kokkos
229dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectA
230d9265f21SStefano Zampini       output_file: output/ex2_12_A.out
231d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
232d9265f21SStefano Zampini 
233d9265f21SStefano Zampini    test:
234c4762a1bSJed Brown       suffix: 11_B
235c4762a1bSJed Brown       args: -mat_type seqaij -rectB
236c4762a1bSJed Brown       filter: grep -v "Mat Object"
237c4762a1bSJed Brown 
238c4762a1bSJed Brown    test:
239c4762a1bSJed Brown       suffix: 12_B
240c4762a1bSJed Brown       args: -mat_type seqdense -rectB
241a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
242a5225ed3SStefano Zampini 
243a5225ed3SStefano Zampini    test:
244a5225ed3SStefano Zampini       requires: cuda
245a5225ed3SStefano Zampini       suffix: 12_B_cuda
246a5225ed3SStefano Zampini       args: -mat_type seqdensecuda -rectB
247a5225ed3SStefano Zampini       output_file: output/ex2_12_B.out
248a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
249c4762a1bSJed Brown 
250c4762a1bSJed Brown    test:
25124b337e5SStefano Zampini       requires: kokkos_kernels
252d9265f21SStefano Zampini       suffix: 12_B_kokkos
253dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos -rectB
254d9265f21SStefano Zampini       output_file: output/ex2_12_B.out
255d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
256d9265f21SStefano Zampini 
257d9265f21SStefano Zampini    test:
258c4762a1bSJed Brown       suffix: 21
259c4762a1bSJed Brown       args: -mat_type mpiaij
260a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
261c4762a1bSJed Brown 
262c4762a1bSJed Brown    test:
263c4762a1bSJed Brown       suffix: 22
264c4762a1bSJed Brown       args: -mat_type mpidense
265a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
266a5225ed3SStefano Zampini 
267a5225ed3SStefano Zampini    test:
268a5225ed3SStefano Zampini       requires: cuda
269a5225ed3SStefano Zampini       suffix: 22_cuda
270a5225ed3SStefano Zampini       output_file: output/ex2_22.out
271a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
272a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
273c4762a1bSJed Brown 
274c4762a1bSJed Brown    test:
27524b337e5SStefano Zampini       requires: kokkos_kernels
276d9265f21SStefano Zampini       suffix: 22_kokkos
277d9265f21SStefano Zampini       output_file: output/ex2_22.out
278dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
279d9265f21SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
280d9265f21SStefano Zampini 
281d9265f21SStefano Zampini    test:
282c4762a1bSJed Brown       suffix: 23
283c4762a1bSJed Brown       nsize: 3
284c4762a1bSJed Brown       args: -mat_type mpiaij
285c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
286c4762a1bSJed Brown 
287c4762a1bSJed Brown    test:
288c4762a1bSJed Brown       suffix: 24
289c4762a1bSJed Brown       nsize: 3
290c4762a1bSJed Brown       args: -mat_type mpidense
291a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
292a5225ed3SStefano Zampini 
293a5225ed3SStefano Zampini    test:
294a5225ed3SStefano Zampini       requires: cuda
295a5225ed3SStefano Zampini       suffix: 24_cuda
296a5225ed3SStefano Zampini       nsize: 3
297a5225ed3SStefano Zampini       output_file: output/ex2_24.out
298a5225ed3SStefano Zampini       args: -mat_type mpidensecuda
299a5225ed3SStefano Zampini       filter: grep -v type | grep -v "Mat Object"
300c4762a1bSJed Brown 
301c4762a1bSJed Brown    test:
302c4762a1bSJed Brown       suffix: 2_aijcusparse_1
303c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
304a5225ed3SStefano Zampini       output_file: output/ex2_21.out
305c4762a1bSJed Brown       requires: cuda
306c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
307c4762a1bSJed Brown 
308c4762a1bSJed Brown    test:
309*629dcba7SJunchao Zhang       suffix: 2_aijkokkos_1
310*629dcba7SJunchao Zhang       args: -mat_type aijkokkos
311*629dcba7SJunchao Zhang       output_file: output/ex2_21.out
312*629dcba7SJunchao Zhang       requires: kokkos_kernels
313*629dcba7SJunchao Zhang       filter: grep -v type | grep -v "MPI processes"
314*629dcba7SJunchao Zhang 
315*629dcba7SJunchao Zhang    test:
316c4762a1bSJed Brown       suffix: 2_aijcusparse_2
317c4762a1bSJed Brown       nsize: 3
318c4762a1bSJed Brown       args: -mat_type mpiaijcusparse
319c4762a1bSJed Brown       output_file: output/ex2_23.out
320c4762a1bSJed Brown       requires: cuda
321c4762a1bSJed Brown       filter: grep -v type | grep -v "MPI processes"
322c4762a1bSJed Brown 
323c4762a1bSJed Brown    test:
324d9265f21SStefano Zampini       suffix: 2_aijkokkos_2
325d9265f21SStefano Zampini       nsize: 3
326dbdd8c31SJunchao Zhang       args: -mat_type aijkokkos
327d9265f21SStefano Zampini       output_file: output/ex2_23.out
328*629dcba7SJunchao Zhang       # Turn off hip due to intermittent CI failures on hip.txcorp.com. Should re-enable this test when the machine is upgraded.
329*629dcba7SJunchao Zhang       requires: !sycl !hip kokkos_kernels
330d9265f21SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
331d9265f21SStefano Zampini 
332d9265f21SStefano Zampini    test:
333c4762a1bSJed Brown       suffix: 3
334c4762a1bSJed Brown       nsize: 2
335c4762a1bSJed Brown       args: -mat_type mpiaij -rectA
336c4762a1bSJed Brown 
337c4762a1bSJed Brown    test:
338c4762a1bSJed Brown       suffix: 3_aijcusparse
339c4762a1bSJed Brown       nsize: 2
340c4762a1bSJed Brown       args: -mat_type mpiaijcusparse -rectA
341c4762a1bSJed Brown       requires: cuda
342c4762a1bSJed Brown 
343c4762a1bSJed Brown    test:
344c4762a1bSJed Brown       suffix: 4
345c4762a1bSJed Brown       nsize: 2
346c4762a1bSJed Brown       args: -mat_type mpidense -rectA
347a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
348a5225ed3SStefano Zampini 
349a5225ed3SStefano Zampini    test:
350a5225ed3SStefano Zampini       requires: cuda
351a5225ed3SStefano Zampini       suffix: 4_cuda
352a5225ed3SStefano Zampini       nsize: 2
353a5225ed3SStefano Zampini       output_file: output/ex2_4.out
354a5225ed3SStefano Zampini       args: -mat_type mpidensecuda -rectA
355a5225ed3SStefano Zampini       filter: grep -v type | grep -v "MPI processes"
356c4762a1bSJed Brown 
357c4762a1bSJed Brown    test:
358c4762a1bSJed Brown       suffix: aijcusparse_1
359c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectA
360c4762a1bSJed Brown       filter: grep -v "Mat Object"
361c4762a1bSJed Brown       output_file: output/ex2_11_A_aijcusparse.out
362c4762a1bSJed Brown       requires: cuda
363c4762a1bSJed Brown 
364c4762a1bSJed Brown    test:
365c4762a1bSJed Brown       suffix: aijcusparse_2
366c4762a1bSJed Brown       args: -mat_type seqaijcusparse -rectB
367c4762a1bSJed Brown       filter: grep -v "Mat Object"
368c4762a1bSJed Brown       output_file: output/ex2_11_B_aijcusparse.out
369c4762a1bSJed Brown       requires: cuda
370c4762a1bSJed Brown 
371c4762a1bSJed Brown TEST*/
372