xref: /petsc/src/mat/tests/ex123.c (revision 5f80ce2ab25dff0f4601e710601cbbcecf323266)
14e47ed04SStefano Zampini static char help[] = "Test MatSetPreallocationCOO and MatSetValuesCOO\n\n";
24e47ed04SStefano Zampini 
34e47ed04SStefano Zampini #include <petscmat.h>
4cbc6b225SStefano Zampini #define MyMatView(a,b) (PetscPrintf(PetscObjectComm((PetscObject)(a)),"LINE %d\n",__LINE__),MatView(a,b));
5cbc6b225SStefano Zampini #define MyVecView(a,b) (PetscPrintf(PetscObjectComm((PetscObject)(a)),"LINE %d\n",__LINE__),VecView(a,b));
64e47ed04SStefano Zampini int main(int argc,char **args)
74e47ed04SStefano Zampini {
84e47ed04SStefano Zampini   Mat                    A,At,AAt;
94e47ed04SStefano Zampini   Vec                    x,y,z;
10cbc6b225SStefano Zampini   ISLocalToGlobalMapping rl2g,cl2g;
11cbc6b225SStefano Zampini   IS                     is;
124e47ed04SStefano Zampini   PetscLayout            rmap,cmap;
13cbc6b225SStefano Zampini   PetscInt               *it,*jt;
144e47ed04SStefano Zampini   PetscInt               n1 = 11, n2 = 9;
15cbc6b225SStefano Zampini   PetscInt               i1[] = {   7,  6,  2,  0,  4,  1,  1,  0,  2,  2,  1 , -1, -1};
16cbc6b225SStefano Zampini   PetscInt               j1[] = {   1,  4,  3,  5,  3,  3,  4,  5,  0,  3,  1 , -1, -1};
17cbc6b225SStefano Zampini   PetscInt               i2[] = {   7,  6,  2,  0,  4,  1,  1,  2,  1, -1, -1};
18cbc6b225SStefano Zampini   PetscInt               j2[] = {   1,  4,  3,  5,  3,  3,  4,  0,  1, -1, -1};
19cbc6b225SStefano Zampini   PetscScalar            v1[] = { -1., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., PETSC_MAX_REAL, PETSC_MAX_REAL};
20cbc6b225SStefano Zampini   PetscScalar            v2[] = {  1.,-1.,-2.,-3.,-4.,-5.,-6.,-7.,-8.,-9.,-10., PETSC_MAX_REAL, PETSC_MAX_REAL};
21cbc6b225SStefano Zampini   PetscInt               N = 6, m = 8, M, rstart, cstart, i;
224e47ed04SStefano Zampini   PetscMPIInt            size;
234e47ed04SStefano Zampini   PetscBool              loc = PETSC_FALSE;
24cbc6b225SStefano Zampini   PetscBool              locdiag = PETSC_TRUE;
25cbc6b225SStefano Zampini   PetscBool              localapi = PETSC_FALSE;
26cbc6b225SStefano Zampini   PetscBool              neg = PETSC_FALSE;
27cbc6b225SStefano Zampini   PetscBool              ismatis, ismpiaij;
284e47ed04SStefano Zampini   PetscErrorCode         ierr;
294e47ed04SStefano Zampini 
304e47ed04SStefano Zampini   ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr;
31*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsGetBool(NULL,NULL,"-neg",&neg,NULL));
32*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsGetBool(NULL,NULL,"-loc",&loc,NULL));
33*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsGetBool(NULL,NULL,"-locdiag",&locdiag,NULL));
34*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscOptionsGetBool(NULL,NULL,"-localapi",&localapi,NULL));
35*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatCreate(PETSC_COMM_WORLD,&A));
364e47ed04SStefano Zampini   if (loc) {
374e47ed04SStefano Zampini     if (locdiag) {
38*5f80ce2aSJacob Faibussowitsch       CHKERRQ(MatSetSizes(A,m,N,PETSC_DECIDE,PETSC_DECIDE));
394e47ed04SStefano Zampini     } else {
40*5f80ce2aSJacob Faibussowitsch       CHKERRQ(MatSetSizes(A,m,m+N,PETSC_DECIDE,PETSC_DECIDE));
414e47ed04SStefano Zampini     }
424e47ed04SStefano Zampini   } else {
43*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetSizes(A,m,PETSC_DECIDE,PETSC_DECIDE,N));
444e47ed04SStefano Zampini   }
45*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetFromOptions(A));
46*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatGetLayouts(A,&rmap,&cmap));
47*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutSetUp(rmap));
48*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutSetUp(cmap));
49*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutGetRange(rmap,&rstart,NULL));
50*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutGetRange(cmap,&cstart,NULL));
51*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutGetSize(rmap,&M));
52*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscLayoutGetSize(cmap,&N));
53cbc6b225SStefano Zampini 
54*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscObjectTypeCompare((PetscObject)A,MATIS,&ismatis));
55cbc6b225SStefano Zampini 
56cbc6b225SStefano Zampini   /* create fake l2g maps to test the local API */
57*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,M-rstart,rstart,1,&is));
58*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISLocalToGlobalMappingCreateIS(is,&rl2g));
59*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISDestroy(&is));
60*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISCreateStride(PETSC_COMM_WORLD,N,0,1,&is));
61*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISLocalToGlobalMappingCreateIS(is,&cl2g));
62*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISDestroy(&is));
63*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetLocalToGlobalMapping(A,rl2g,cl2g));
64*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISLocalToGlobalMappingDestroy(&rl2g));
65*5f80ce2aSJacob Faibussowitsch   CHKERRQ(ISLocalToGlobalMappingDestroy(&cl2g));
66cbc6b225SStefano Zampini 
67*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatCreateVecs(A,&x,&y));
68*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatCreateVecs(A,NULL,&z));
69*5f80ce2aSJacob Faibussowitsch   CHKERRQ(VecSet(x,1.));
70*5f80ce2aSJacob Faibussowitsch   CHKERRQ(VecSet(z,2.));
71cbc6b225SStefano Zampini   if (!localapi) for (i = 0; i < n1; i++) i1[i] += rstart;
72cbc6b225SStefano Zampini   if (!localapi) for (i = 0; i < n2; i++) i2[i] += rstart;
734e47ed04SStefano Zampini   if (loc) {
744e47ed04SStefano Zampini     if (locdiag) {
754e47ed04SStefano Zampini       for (i = 0; i < n1; i++) j1[i] += cstart;
764e47ed04SStefano Zampini       for (i = 0; i < n2; i++) j2[i] += cstart;
774e47ed04SStefano Zampini     } else {
784e47ed04SStefano Zampini       for (i = 0; i < n1; i++) j1[i] += cstart + m;
794e47ed04SStefano Zampini       for (i = 0; i < n2; i++) j2[i] += cstart + m;
804e47ed04SStefano Zampini     }
814e47ed04SStefano Zampini   }
82cbc6b225SStefano Zampini   if (neg) { n1 += 2; n2 += 2; }
83cbc6b225SStefano Zampini   /* MatSetPreallocationCOOLocal maps the indices! */
84*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscMalloc2(PetscMax(n1,n2),&it,PetscMax(n1,n2),&jt));
854e47ed04SStefano Zampini   /* test with repeated entries */
86cbc6b225SStefano Zampini   if (!localapi) {
87*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOO(A,n1,i1,j1));
88cbc6b225SStefano Zampini   } else {
89*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(it,i1,n1));
90*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(jt,j1,n1));
91*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOOLocal(A,n1,it,jt));
92cbc6b225SStefano Zampini   }
93*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v1,ADD_VALUES));
94*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMult(A,x,y));
95*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
96*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(y,NULL));
97*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v2,ADD_VALUES));
98*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMultAdd(A,x,y,y));
99*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
100*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(y,NULL));
101*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
102cbc6b225SStefano Zampini   if (!ismatis) {
103*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
104*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
105*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
106*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
107*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
108*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
109cbc6b225SStefano Zampini   }
110*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&At));
111cbc6b225SStefano Zampini 
112e61fc153SStefano Zampini   /* INSERT_VALUES will overwrite matrix entries but
113e61fc153SStefano Zampini      still perform the sum of the repeated entries */
114*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v2,INSERT_VALUES));
115*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
1164e47ed04SStefano Zampini 
1174e47ed04SStefano Zampini   /* test with unique entries */
118cbc6b225SStefano Zampini   if (!localapi) {
119*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOO(A,n2,i2,j2));
120cbc6b225SStefano Zampini   } else {
121*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(it,i2,n2));
122*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(jt,j2,n2));
123*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOOLocal(A,n2,it,jt));
124cbc6b225SStefano Zampini   }
125*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v1,ADD_VALUES));
126*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMult(A,x,y));
127*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
128*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(y,NULL));
129*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v2,ADD_VALUES));
130*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMultAdd(A,x,y,z));
131*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
132*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(z,NULL));
133cbc6b225SStefano Zampini   if (!localapi) {
134*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOO(A,n2,i2,j2));
135cbc6b225SStefano Zampini   } else {
136*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(it,i2,n2));
137*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscArraycpy(jt,j2,n2));
138*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOOLocal(A,n2,it,jt));
139cbc6b225SStefano Zampini   }
140*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v1,INSERT_VALUES));
141*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMult(A,x,y));
142*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
143*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(y,NULL));
144*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatSetValuesCOO(A,v2,INSERT_VALUES));
145*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatMultAdd(A,x,y,z));
146*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyMatView(A,NULL));
147*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MyVecView(z,NULL));
148*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
149cbc6b225SStefano Zampini   if (!ismatis) {
150*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
151*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
152*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
153*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
154*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
155*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
156cbc6b225SStefano Zampini   }
157*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&At));
1584e47ed04SStefano Zampini 
159cbc6b225SStefano Zampini   /* test providing diagonal first, then offdiagonal */
160*5f80ce2aSJacob Faibussowitsch   CHKERRMPI(MPI_Comm_size(PetscObjectComm((PetscObject)A),&size));
161*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscObjectBaseTypeCompare((PetscObject)A,MATMPIAIJ,&ismpiaij));
1624e47ed04SStefano Zampini   if (ismpiaij && size > 1) {
1634e47ed04SStefano Zampini     Mat               lA,lB;
1644e47ed04SStefano Zampini     const PetscInt    *garray,*iA,*jA,*iB,*jB;
1654e47ed04SStefano Zampini     const PetscScalar *vA,*vB;
1664e47ed04SStefano Zampini     PetscScalar       *coo_v;
1674e47ed04SStefano Zampini     PetscInt          *coo_i,*coo_j;
1684e47ed04SStefano Zampini     PetscInt          i,j,nA,nB,nnz;
1694e47ed04SStefano Zampini     PetscBool         flg;
1704e47ed04SStefano Zampini 
171*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMPIAIJGetSeqAIJ(A,&lA,&lB,&garray));
172*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSeqAIJGetArrayRead(lA,&vA));
173*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSeqAIJGetArrayRead(lB,&vB));
174*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatGetRowIJ(lA,0,PETSC_FALSE,PETSC_FALSE,&nA,&iA,&jA,&flg));
175*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatGetRowIJ(lB,0,PETSC_FALSE,PETSC_FALSE,&nB,&iB,&jB,&flg));
1764e47ed04SStefano Zampini     nnz  = iA[nA] + iB[nB];
177*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscMalloc3(nnz,&coo_i,nnz,&coo_j,nnz,&coo_v));
1784e47ed04SStefano Zampini     nnz  = 0;
1794e47ed04SStefano Zampini     for (i=0;i<nA;i++) {
1804e47ed04SStefano Zampini       for (j=iA[i];j<iA[i+1];j++,nnz++) {
1814e47ed04SStefano Zampini         coo_i[nnz] = i+rstart;
1824e47ed04SStefano Zampini         coo_j[nnz] = jA[j]+cstart;
1834e47ed04SStefano Zampini         coo_v[nnz] = vA[j];
1844e47ed04SStefano Zampini       }
1854e47ed04SStefano Zampini     }
1864e47ed04SStefano Zampini     for (i=0;i<nB;i++) {
1874e47ed04SStefano Zampini       for (j=iB[i];j<iB[i+1];j++,nnz++) {
1884e47ed04SStefano Zampini         coo_i[nnz] = i+rstart;
1894e47ed04SStefano Zampini         coo_j[nnz] = garray[jB[j]];
1904e47ed04SStefano Zampini         coo_v[nnz] = vB[j];
1914e47ed04SStefano Zampini       }
1924e47ed04SStefano Zampini     }
193*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatRestoreRowIJ(lA,0,PETSC_FALSE,PETSC_FALSE,&nA,&iA,&jA,&flg));
194*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatRestoreRowIJ(lB,0,PETSC_FALSE,PETSC_FALSE,&nB,&iB,&jB,&flg));
195*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSeqAIJRestoreArrayRead(lA,&vA));
196*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSeqAIJRestoreArrayRead(lB,&vB));
1974e47ed04SStefano Zampini 
198*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetPreallocationCOO(A,nnz,coo_i,coo_j));
199*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetValuesCOO(A,coo_v,ADD_VALUES));
200*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMult(A,x,y));
201*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(A,NULL));
202*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyVecView(y,NULL));
203*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatSetValuesCOO(A,coo_v,INSERT_VALUES));
204*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMult(A,x,y));
205*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(A,NULL));
206*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyVecView(y,NULL));
207*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
208*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
209*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
210*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
211*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
212*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MyMatView(AAt,NULL));
213*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&AAt));
214*5f80ce2aSJacob Faibussowitsch     CHKERRQ(MatDestroy(&At));
2154e47ed04SStefano Zampini 
216*5f80ce2aSJacob Faibussowitsch     CHKERRQ(PetscFree3(coo_i,coo_j,coo_v));
2174e47ed04SStefano Zampini   }
218*5f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscFree2(it,jt));
219*5f80ce2aSJacob Faibussowitsch   CHKERRQ(VecDestroy(&z));
220*5f80ce2aSJacob Faibussowitsch   CHKERRQ(VecDestroy(&x));
221*5f80ce2aSJacob Faibussowitsch   CHKERRQ(VecDestroy(&y));
222*5f80ce2aSJacob Faibussowitsch   CHKERRQ(MatDestroy(&A));
2234e47ed04SStefano Zampini   ierr = PetscFinalize();
2244e47ed04SStefano Zampini   return ierr;
2254e47ed04SStefano Zampini }
2264e47ed04SStefano Zampini 
2274e47ed04SStefano Zampini /*TEST
2284e47ed04SStefano Zampini 
2294e47ed04SStefano Zampini    test:
2304e47ed04SStefano Zampini      suffix: 1
2314e47ed04SStefano Zampini      filter: grep -v type
2324e47ed04SStefano Zampini      diff_args: -j
233cbc6b225SStefano Zampini      args: -mat_type {{seqaij mpiaij}} -localapi {{0 1}} -neg {{0 1}}
2344e47ed04SStefano Zampini 
2354e47ed04SStefano Zampini    test:
2364e47ed04SStefano Zampini      requires: cuda
2374e47ed04SStefano Zampini      suffix: 1_cuda
2384e47ed04SStefano Zampini      filter: grep -v type
2394e47ed04SStefano Zampini      diff_args: -j
240cbc6b225SStefano Zampini      args: -mat_type {{seqaijcusparse mpiaijcusparse}} -localapi {{0 1}} -neg {{0 1}}
241cbc6b225SStefano Zampini      output_file: output/ex123_1.out
242cbc6b225SStefano Zampini 
243cbc6b225SStefano Zampini    test:
244cbc6b225SStefano Zampini      requires: kokkos_kernels !sycl
245cbc6b225SStefano Zampini      suffix: 1_kokkos
246cbc6b225SStefano Zampini      filter: grep -v type
247cbc6b225SStefano Zampini      diff_args: -j
248cbc6b225SStefano Zampini      args: -mat_type {{seqaijkokkos mpiaijkokkos}} -localapi {{0 1}} -neg {{0 1}}
2494e47ed04SStefano Zampini      output_file: output/ex123_1.out
2504e47ed04SStefano Zampini 
2514e47ed04SStefano Zampini    test:
2524e47ed04SStefano Zampini      suffix: 2
2534e47ed04SStefano Zampini      nsize: 7
2544e47ed04SStefano Zampini      filter: grep -v type
2554e47ed04SStefano Zampini      diff_args: -j
256cbc6b225SStefano Zampini      args: -mat_type mpiaij -localapi {{0 1}} -neg {{0 1}}
2574e47ed04SStefano Zampini 
2584e47ed04SStefano Zampini    test:
2594e47ed04SStefano Zampini      requires: cuda
2604e47ed04SStefano Zampini      suffix: 2_cuda
2614e47ed04SStefano Zampini      nsize: 7
2624e47ed04SStefano Zampini      filter: grep -v type
2634e47ed04SStefano Zampini      diff_args: -j
264cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -localapi {{0 1}} -neg {{0 1}}
265cbc6b225SStefano Zampini      output_file: output/ex123_2.out
266cbc6b225SStefano Zampini 
267cbc6b225SStefano Zampini    test:
268cbc6b225SStefano Zampini      requires: kokkos_kernels !sycl
269cbc6b225SStefano Zampini      suffix: 2_kokkos
270cbc6b225SStefano Zampini      nsize: 7
271cbc6b225SStefano Zampini      filter: grep -v type
272cbc6b225SStefano Zampini      diff_args: -j
273cbc6b225SStefano Zampini      args: -mat_type mpiaijkokkos -localapi {{0 1}} -neg {{0 1}}
2744e47ed04SStefano Zampini      output_file: output/ex123_2.out
2754e47ed04SStefano Zampini 
2764e47ed04SStefano Zampini    test:
2774e47ed04SStefano Zampini      suffix: 3
2784e47ed04SStefano Zampini      nsize: 3
2794e47ed04SStefano Zampini      filter: grep -v type
2804e47ed04SStefano Zampini      diff_args: -j
281cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -localapi {{0 1}} -neg {{0 1}}
2824e47ed04SStefano Zampini 
2834e47ed04SStefano Zampini    test:
2844e47ed04SStefano Zampini      requires: cuda
2854e47ed04SStefano Zampini      suffix: 3_cuda
2864e47ed04SStefano Zampini      nsize: 3
2874e47ed04SStefano Zampini      filter: grep -v type
2884e47ed04SStefano Zampini      diff_args: -j
289cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -localapi {{0 1}} -neg {{0 1}}
2904e47ed04SStefano Zampini      output_file: output/ex123_3.out
2914e47ed04SStefano Zampini 
2924e47ed04SStefano Zampini    test:
29342550becSJunchao Zhang      requires: !sycl kokkos_kernels
29442550becSJunchao Zhang      suffix: 3_kokkos
29542550becSJunchao Zhang      nsize: 3
29642550becSJunchao Zhang      filter: grep -v type
29742550becSJunchao Zhang      diff_args: -j
298cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -localapi {{0 1}} -neg {{0 1}}
29942550becSJunchao Zhang      output_file: output/ex123_3.out
30042550becSJunchao Zhang 
30142550becSJunchao Zhang    test:
302cbc6b225SStefano Zampini      suffix: 4
303cbc6b225SStefano Zampini      nsize: 4
304cbc6b225SStefano Zampini      filter: grep -v type
305cbc6b225SStefano Zampini      diff_args: -j
306cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
307cbc6b225SStefano Zampini 
308cbc6b225SStefano Zampini    test:
309cbc6b225SStefano Zampini      requires: cuda
310cbc6b225SStefano Zampini      suffix: 4_cuda
311cbc6b225SStefano Zampini      nsize: 4
312cbc6b225SStefano Zampini      filter: grep -v type
313cbc6b225SStefano Zampini      diff_args: -j
314cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
315cbc6b225SStefano Zampini      output_file: output/ex123_4.out
316cbc6b225SStefano Zampini 
317cbc6b225SStefano Zampini    test:
31842550becSJunchao Zhang      requires: !sycl kokkos_kernels
31942550becSJunchao Zhang      suffix: 4_kokkos
32042550becSJunchao Zhang      nsize: 4
32142550becSJunchao Zhang      filter: grep -v type
32242550becSJunchao Zhang      diff_args: -j
323cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
32442550becSJunchao Zhang      output_file: output/ex123_4.out
32542550becSJunchao Zhang 
326cbc6b225SStefano Zampini    test:
327cbc6b225SStefano Zampini      suffix: matis
328cbc6b225SStefano Zampini      nsize: 3
329cbc6b225SStefano Zampini      filter: grep -v type
330cbc6b225SStefano Zampini      diff_args: -j
331cbc6b225SStefano Zampini      args: -mat_type is -localapi {{0 1}} -neg {{0 1}}
332cbc6b225SStefano Zampini 
3334e47ed04SStefano Zampini TEST*/
334