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