xref: /petsc/src/mat/tests/ex123.c (revision 16406dc77e476f6098c901ee4dfb2a5f0eba2f01)
14e47ed04SStefano Zampini static char help[] = "Test MatSetPreallocationCOO and MatSetValuesCOO\n\n";
24e47ed04SStefano Zampini 
34e47ed04SStefano Zampini #include <petscmat.h>
4*16406dc7SBarry Smith 
54e47ed04SStefano Zampini int main(int argc,char **args)
64e47ed04SStefano Zampini {
74e47ed04SStefano Zampini   Mat                    A,At,AAt;
84e47ed04SStefano Zampini   Vec                    x,y,z;
9cbc6b225SStefano Zampini   ISLocalToGlobalMapping rl2g,cl2g;
10cbc6b225SStefano Zampini   IS                     is;
114e47ed04SStefano Zampini   PetscLayout            rmap,cmap;
12cbc6b225SStefano Zampini   PetscInt               *it,*jt;
134e47ed04SStefano Zampini   PetscInt               n1 = 11, n2 = 9;
14cbc6b225SStefano Zampini   PetscInt               i1[] = {   7,  6,  2,  0,  4,  1,  1,  0,  2,  2,  1 , -1, -1};
15cbc6b225SStefano Zampini   PetscInt               j1[] = {   1,  4,  3,  5,  3,  3,  4,  5,  0,  3,  1 , -1, -1};
16cbc6b225SStefano Zampini   PetscInt               i2[] = {   7,  6,  2,  0,  4,  1,  1,  2,  1, -1, -1};
17cbc6b225SStefano Zampini   PetscInt               j2[] = {   1,  4,  3,  5,  3,  3,  4,  0,  1, -1, -1};
18cbc6b225SStefano Zampini   PetscScalar            v1[] = { -1., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., PETSC_MAX_REAL, PETSC_MAX_REAL};
19cbc6b225SStefano Zampini   PetscScalar            v2[] = {  1.,-1.,-2.,-3.,-4.,-5.,-6.,-7.,-8.,-9.,-10., PETSC_MAX_REAL, PETSC_MAX_REAL};
20cbc6b225SStefano Zampini   PetscInt               N = 6, m = 8, M, rstart, cstart, i;
214e47ed04SStefano Zampini   PetscMPIInt            size;
224e47ed04SStefano Zampini   PetscBool              loc = PETSC_FALSE;
23cbc6b225SStefano Zampini   PetscBool              locdiag = PETSC_TRUE;
24cbc6b225SStefano Zampini   PetscBool              localapi = PETSC_FALSE;
25cbc6b225SStefano Zampini   PetscBool              neg = PETSC_FALSE;
26cbc6b225SStefano Zampini   PetscBool              ismatis, ismpiaij;
274e47ed04SStefano Zampini 
28327415f7SBarry Smith   PetscFunctionBeginUser;
299566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc,&args,(char*)0,help));
309566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL,NULL,"-neg",&neg,NULL));
319566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL,NULL,"-loc",&loc,NULL));
329566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL,NULL,"-locdiag",&locdiag,NULL));
339566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL,NULL,"-localapi",&localapi,NULL));
349566063dSJacob Faibussowitsch   PetscCall(MatCreate(PETSC_COMM_WORLD,&A));
354e47ed04SStefano Zampini   if (loc) {
364e47ed04SStefano Zampini     if (locdiag) {
379566063dSJacob Faibussowitsch       PetscCall(MatSetSizes(A,m,N,PETSC_DECIDE,PETSC_DECIDE));
384e47ed04SStefano Zampini     } else {
399566063dSJacob Faibussowitsch       PetscCall(MatSetSizes(A,m,m+N,PETSC_DECIDE,PETSC_DECIDE));
404e47ed04SStefano Zampini     }
414e47ed04SStefano Zampini   } else {
429566063dSJacob Faibussowitsch     PetscCall(MatSetSizes(A,m,PETSC_DECIDE,PETSC_DECIDE,N));
434e47ed04SStefano Zampini   }
449566063dSJacob Faibussowitsch   PetscCall(MatSetFromOptions(A));
459566063dSJacob Faibussowitsch   PetscCall(MatGetLayouts(A,&rmap,&cmap));
469566063dSJacob Faibussowitsch   PetscCall(PetscLayoutSetUp(rmap));
479566063dSJacob Faibussowitsch   PetscCall(PetscLayoutSetUp(cmap));
489566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetRange(rmap,&rstart,NULL));
499566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetRange(cmap,&cstart,NULL));
509566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetSize(rmap,&M));
519566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetSize(cmap,&N));
52cbc6b225SStefano Zampini 
539566063dSJacob Faibussowitsch   PetscCall(PetscObjectTypeCompare((PetscObject)A,MATIS,&ismatis));
54cbc6b225SStefano Zampini 
55cbc6b225SStefano Zampini   /* create fake l2g maps to test the local API */
569566063dSJacob Faibussowitsch   PetscCall(ISCreateStride(PETSC_COMM_WORLD,M-rstart,rstart,1,&is));
579566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingCreateIS(is,&rl2g));
589566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&is));
599566063dSJacob Faibussowitsch   PetscCall(ISCreateStride(PETSC_COMM_WORLD,N,0,1,&is));
609566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingCreateIS(is,&cl2g));
619566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&is));
629566063dSJacob Faibussowitsch   PetscCall(MatSetLocalToGlobalMapping(A,rl2g,cl2g));
639566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingDestroy(&rl2g));
649566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingDestroy(&cl2g));
65cbc6b225SStefano Zampini 
669566063dSJacob Faibussowitsch   PetscCall(MatCreateVecs(A,&x,&y));
679566063dSJacob Faibussowitsch   PetscCall(MatCreateVecs(A,NULL,&z));
689566063dSJacob Faibussowitsch   PetscCall(VecSet(x,1.));
699566063dSJacob Faibussowitsch   PetscCall(VecSet(z,2.));
70cbc6b225SStefano Zampini   if (!localapi) for (i = 0; i < n1; i++) i1[i] += rstart;
71cbc6b225SStefano Zampini   if (!localapi) for (i = 0; i < n2; i++) i2[i] += rstart;
724e47ed04SStefano Zampini   if (loc) {
734e47ed04SStefano Zampini     if (locdiag) {
744e47ed04SStefano Zampini       for (i = 0; i < n1; i++) j1[i] += cstart;
754e47ed04SStefano Zampini       for (i = 0; i < n2; i++) j2[i] += cstart;
764e47ed04SStefano Zampini     } else {
774e47ed04SStefano Zampini       for (i = 0; i < n1; i++) j1[i] += cstart + m;
784e47ed04SStefano Zampini       for (i = 0; i < n2; i++) j2[i] += cstart + m;
794e47ed04SStefano Zampini     }
804e47ed04SStefano Zampini   }
81cbc6b225SStefano Zampini   if (neg) { n1 += 2; n2 += 2; }
82cbc6b225SStefano Zampini   /* MatSetPreallocationCOOLocal maps the indices! */
839566063dSJacob Faibussowitsch   PetscCall(PetscMalloc2(PetscMax(n1,n2),&it,PetscMax(n1,n2),&jt));
844e47ed04SStefano Zampini   /* test with repeated entries */
85cbc6b225SStefano Zampini   if (!localapi) {
869566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOO(A,n1,i1,j1));
87cbc6b225SStefano Zampini   } else {
889566063dSJacob Faibussowitsch     PetscCall(PetscArraycpy(it,i1,n1));
899566063dSJacob Faibussowitsch     PetscCall(PetscArraycpy(jt,j1,n1));
909566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A,n1,it,jt));
91cbc6b225SStefano Zampini   }
929566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v1,ADD_VALUES));
939566063dSJacob Faibussowitsch   PetscCall(MatMult(A,x,y));
94*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
95*16406dc7SBarry Smith   PetscCall(VecView(y,NULL));
969566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v2,ADD_VALUES));
979566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A,x,y,y));
98*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
99*16406dc7SBarry Smith   PetscCall(VecView(y,NULL));
1009566063dSJacob Faibussowitsch   PetscCall(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
101cbc6b225SStefano Zampini   if (!ismatis) {
1029566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
103*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
1049566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
1059566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
106*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
1079566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
108cbc6b225SStefano Zampini   }
1099566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&At));
110cbc6b225SStefano Zampini 
111e61fc153SStefano Zampini   /* INSERT_VALUES will overwrite matrix entries but
112e61fc153SStefano Zampini      still perform the sum of the repeated entries */
1139566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v2,INSERT_VALUES));
114*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
1154e47ed04SStefano Zampini 
1164e47ed04SStefano Zampini   /* test with unique entries */
1179566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(it,i2,n2));
1189566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(jt,j2,n2));
119e8729f6fSJunchao Zhang   if (!localapi) {
120e8729f6fSJunchao Zhang     PetscCall(MatSetPreallocationCOO(A,n2,it,jt));
121e8729f6fSJunchao Zhang   } else {
1229566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A,n2,it,jt));
123cbc6b225SStefano Zampini   }
1249566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v1,ADD_VALUES));
1259566063dSJacob Faibussowitsch   PetscCall(MatMult(A,x,y));
126*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
127*16406dc7SBarry Smith   PetscCall(VecView(y,NULL));
1289566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v2,ADD_VALUES));
1299566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A,x,y,z));
130*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
131*16406dc7SBarry Smith   PetscCall(VecView(z,NULL));
1329566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(it,i2,n2));
1339566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(jt,j2,n2));
134e8729f6fSJunchao Zhang   if (!localapi) {
135e8729f6fSJunchao Zhang     PetscCall(MatSetPreallocationCOO(A,n2,it,jt));
136e8729f6fSJunchao Zhang   } else {
1379566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A,n2,it,jt));
138cbc6b225SStefano Zampini   }
1399566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v1,INSERT_VALUES));
1409566063dSJacob Faibussowitsch   PetscCall(MatMult(A,x,y));
141*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
142*16406dc7SBarry Smith   PetscCall(VecView(y,NULL));
1439566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A,v2,INSERT_VALUES));
1449566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A,x,y,z));
145*16406dc7SBarry Smith   PetscCall(MatView(A,NULL));
146*16406dc7SBarry Smith   PetscCall(VecView(z,NULL));
1479566063dSJacob Faibussowitsch   PetscCall(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
148cbc6b225SStefano Zampini   if (!ismatis) {
1499566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
150*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
1519566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
1529566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
153*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
1549566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
155cbc6b225SStefano Zampini   }
1569566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&At));
1574e47ed04SStefano Zampini 
158cbc6b225SStefano Zampini   /* test providing diagonal first, then offdiagonal */
1599566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)A),&size));
1609566063dSJacob Faibussowitsch   PetscCall(PetscObjectBaseTypeCompare((PetscObject)A,MATMPIAIJ,&ismpiaij));
1614e47ed04SStefano Zampini   if (ismpiaij && size > 1) {
1624e47ed04SStefano Zampini     Mat               lA,lB;
1634e47ed04SStefano Zampini     const PetscInt    *garray,*iA,*jA,*iB,*jB;
1644e47ed04SStefano Zampini     const PetscScalar *vA,*vB;
1654e47ed04SStefano Zampini     PetscScalar       *coo_v;
1664e47ed04SStefano Zampini     PetscInt          *coo_i,*coo_j;
1674e47ed04SStefano Zampini     PetscInt          i,j,nA,nB,nnz;
1684e47ed04SStefano Zampini     PetscBool         flg;
1694e47ed04SStefano Zampini 
1709566063dSJacob Faibussowitsch     PetscCall(MatMPIAIJGetSeqAIJ(A,&lA,&lB,&garray));
1719566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJGetArrayRead(lA,&vA));
1729566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJGetArrayRead(lB,&vB));
1739566063dSJacob Faibussowitsch     PetscCall(MatGetRowIJ(lA,0,PETSC_FALSE,PETSC_FALSE,&nA,&iA,&jA,&flg));
1749566063dSJacob Faibussowitsch     PetscCall(MatGetRowIJ(lB,0,PETSC_FALSE,PETSC_FALSE,&nB,&iB,&jB,&flg));
1754e47ed04SStefano Zampini     nnz  = iA[nA] + iB[nB];
1769566063dSJacob Faibussowitsch     PetscCall(PetscMalloc3(nnz,&coo_i,nnz,&coo_j,nnz,&coo_v));
1774e47ed04SStefano Zampini     nnz  = 0;
1784e47ed04SStefano Zampini     for (i=0;i<nA;i++) {
1794e47ed04SStefano Zampini       for (j=iA[i];j<iA[i+1];j++,nnz++) {
1804e47ed04SStefano Zampini         coo_i[nnz] = i+rstart;
1814e47ed04SStefano Zampini         coo_j[nnz] = jA[j]+cstart;
1824e47ed04SStefano Zampini         coo_v[nnz] = vA[j];
1834e47ed04SStefano Zampini       }
1844e47ed04SStefano Zampini     }
1854e47ed04SStefano Zampini     for (i=0;i<nB;i++) {
1864e47ed04SStefano Zampini       for (j=iB[i];j<iB[i+1];j++,nnz++) {
1874e47ed04SStefano Zampini         coo_i[nnz] = i+rstart;
1884e47ed04SStefano Zampini         coo_j[nnz] = garray[jB[j]];
1894e47ed04SStefano Zampini         coo_v[nnz] = vB[j];
1904e47ed04SStefano Zampini       }
1914e47ed04SStefano Zampini     }
1929566063dSJacob Faibussowitsch     PetscCall(MatRestoreRowIJ(lA,0,PETSC_FALSE,PETSC_FALSE,&nA,&iA,&jA,&flg));
1939566063dSJacob Faibussowitsch     PetscCall(MatRestoreRowIJ(lB,0,PETSC_FALSE,PETSC_FALSE,&nB,&iB,&jB,&flg));
1949566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJRestoreArrayRead(lA,&vA));
1959566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJRestoreArrayRead(lB,&vB));
1964e47ed04SStefano Zampini 
1979566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOO(A,nnz,coo_i,coo_j));
1989566063dSJacob Faibussowitsch     PetscCall(MatSetValuesCOO(A,coo_v,ADD_VALUES));
1999566063dSJacob Faibussowitsch     PetscCall(MatMult(A,x,y));
200*16406dc7SBarry Smith     PetscCall(MatView(A,NULL));
201*16406dc7SBarry Smith     PetscCall(VecView(y,NULL));
2029566063dSJacob Faibussowitsch     PetscCall(MatSetValuesCOO(A,coo_v,INSERT_VALUES));
2039566063dSJacob Faibussowitsch     PetscCall(MatMult(A,x,y));
204*16406dc7SBarry Smith     PetscCall(MatView(A,NULL));
205*16406dc7SBarry Smith     PetscCall(VecView(y,NULL));
2069566063dSJacob Faibussowitsch     PetscCall(MatTranspose(A,MAT_INITIAL_MATRIX,&At));
2079566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A,At,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
208*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
2099566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
2109566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At,A,MAT_INITIAL_MATRIX,PETSC_DEFAULT,&AAt));
211*16406dc7SBarry Smith     PetscCall(MatView(AAt,NULL));
2129566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
2139566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&At));
2144e47ed04SStefano Zampini 
2159566063dSJacob Faibussowitsch     PetscCall(PetscFree3(coo_i,coo_j,coo_v));
2164e47ed04SStefano Zampini   }
2179566063dSJacob Faibussowitsch   PetscCall(PetscFree2(it,jt));
2189566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&z));
2199566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&x));
2209566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&y));
2219566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&A));
2229566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
223b122ec5aSJacob Faibussowitsch   return 0;
2244e47ed04SStefano Zampini }
2254e47ed04SStefano Zampini 
2264e47ed04SStefano Zampini /*TEST
2274e47ed04SStefano Zampini 
2284e47ed04SStefano Zampini    test:
2294e47ed04SStefano Zampini      suffix: 1
2304e47ed04SStefano Zampini      filter: grep -v type
2314e47ed04SStefano Zampini      diff_args: -j
232cbc6b225SStefano Zampini      args: -mat_type {{seqaij mpiaij}} -localapi {{0 1}} -neg {{0 1}}
2334e47ed04SStefano Zampini 
2344e47ed04SStefano Zampini    test:
2354e47ed04SStefano Zampini      requires: cuda
2364e47ed04SStefano Zampini      suffix: 1_cuda
2374e47ed04SStefano Zampini      filter: grep -v type
2384e47ed04SStefano Zampini      diff_args: -j
239cbc6b225SStefano Zampini      args: -mat_type {{seqaijcusparse mpiaijcusparse}} -localapi {{0 1}} -neg {{0 1}}
240cbc6b225SStefano Zampini      output_file: output/ex123_1.out
241cbc6b225SStefano Zampini 
242cbc6b225SStefano Zampini    test:
243cbc6b225SStefano Zampini      requires: kokkos_kernels !sycl
244cbc6b225SStefano Zampini      suffix: 1_kokkos
245cbc6b225SStefano Zampini      filter: grep -v type
246cbc6b225SStefano Zampini      diff_args: -j
247cbc6b225SStefano Zampini      args: -mat_type {{seqaijkokkos mpiaijkokkos}} -localapi {{0 1}} -neg {{0 1}}
2484e47ed04SStefano Zampini      output_file: output/ex123_1.out
2494e47ed04SStefano Zampini 
2504e47ed04SStefano Zampini    test:
2514e47ed04SStefano Zampini      suffix: 2
2524e47ed04SStefano Zampini      nsize: 7
2534e47ed04SStefano Zampini      filter: grep -v type
2544e47ed04SStefano Zampini      diff_args: -j
255cbc6b225SStefano Zampini      args: -mat_type mpiaij -localapi {{0 1}} -neg {{0 1}}
2564e47ed04SStefano Zampini 
2574e47ed04SStefano Zampini    test:
2584e47ed04SStefano Zampini      requires: cuda
2594e47ed04SStefano Zampini      suffix: 2_cuda
2604e47ed04SStefano Zampini      nsize: 7
2614e47ed04SStefano Zampini      filter: grep -v type
2624e47ed04SStefano Zampini      diff_args: -j
263cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -localapi {{0 1}} -neg {{0 1}}
264cbc6b225SStefano Zampini      output_file: output/ex123_2.out
265cbc6b225SStefano Zampini 
266cbc6b225SStefano Zampini    test:
267cbc6b225SStefano Zampini      requires: kokkos_kernels !sycl
268cbc6b225SStefano Zampini      suffix: 2_kokkos
269cbc6b225SStefano Zampini      nsize: 7
270cbc6b225SStefano Zampini      filter: grep -v type
271cbc6b225SStefano Zampini      diff_args: -j
272cbc6b225SStefano Zampini      args: -mat_type mpiaijkokkos -localapi {{0 1}} -neg {{0 1}}
2734e47ed04SStefano Zampini      output_file: output/ex123_2.out
2744e47ed04SStefano Zampini 
2754e47ed04SStefano Zampini    test:
2764e47ed04SStefano Zampini      suffix: 3
2774e47ed04SStefano Zampini      nsize: 3
2784e47ed04SStefano Zampini      filter: grep -v type
2794e47ed04SStefano Zampini      diff_args: -j
280cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -localapi {{0 1}} -neg {{0 1}}
2814e47ed04SStefano Zampini 
2824e47ed04SStefano Zampini    test:
2834e47ed04SStefano Zampini      requires: cuda
2844e47ed04SStefano Zampini      suffix: 3_cuda
2854e47ed04SStefano Zampini      nsize: 3
2864e47ed04SStefano Zampini      filter: grep -v type
2874e47ed04SStefano Zampini      diff_args: -j
288cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -localapi {{0 1}} -neg {{0 1}}
2894e47ed04SStefano Zampini      output_file: output/ex123_3.out
2904e47ed04SStefano Zampini 
2914e47ed04SStefano Zampini    test:
29242550becSJunchao Zhang      requires: !sycl kokkos_kernels
29342550becSJunchao Zhang      suffix: 3_kokkos
29442550becSJunchao Zhang      nsize: 3
29542550becSJunchao Zhang      filter: grep -v type
29642550becSJunchao Zhang      diff_args: -j
297cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -localapi {{0 1}} -neg {{0 1}}
29842550becSJunchao Zhang      output_file: output/ex123_3.out
29942550becSJunchao Zhang 
30042550becSJunchao Zhang    test:
301cbc6b225SStefano Zampini      suffix: 4
302cbc6b225SStefano Zampini      nsize: 4
303cbc6b225SStefano Zampini      filter: grep -v type
304cbc6b225SStefano Zampini      diff_args: -j
305cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
306cbc6b225SStefano Zampini 
307cbc6b225SStefano Zampini    test:
308cbc6b225SStefano Zampini      requires: cuda
309cbc6b225SStefano Zampini      suffix: 4_cuda
310cbc6b225SStefano Zampini      nsize: 4
311cbc6b225SStefano Zampini      filter: grep -v type
312cbc6b225SStefano Zampini      diff_args: -j
313cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
314cbc6b225SStefano Zampini      output_file: output/ex123_4.out
315cbc6b225SStefano Zampini 
316cbc6b225SStefano Zampini    test:
31742550becSJunchao Zhang      requires: !sycl kokkos_kernels
31842550becSJunchao Zhang      suffix: 4_kokkos
31942550becSJunchao Zhang      nsize: 4
32042550becSJunchao Zhang      filter: grep -v type
32142550becSJunchao Zhang      diff_args: -j
322cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
32342550becSJunchao Zhang      output_file: output/ex123_4.out
32442550becSJunchao Zhang 
325cbc6b225SStefano Zampini    test:
326cbc6b225SStefano Zampini      suffix: matis
327cbc6b225SStefano Zampini      nsize: 3
328cbc6b225SStefano Zampini      filter: grep -v type
329cbc6b225SStefano Zampini      diff_args: -j
330cbc6b225SStefano Zampini      args: -mat_type is -localapi {{0 1}} -neg {{0 1}}
331cbc6b225SStefano Zampini 
3324e47ed04SStefano Zampini TEST*/
333