xref: /petsc/src/mat/tests/ex123.c (revision dcfd994d081f5f6b19844c8e8bc67e93edfc619a)
14e47ed04SStefano Zampini static char help[] = "Test MatSetPreallocationCOO and MatSetValuesCOO\n\n";
24e47ed04SStefano Zampini 
34e47ed04SStefano Zampini #include <petscmat.h>
416406dc7SBarry Smith 
59371c9d4SSatish Balay int main(int argc, char **args) {
64e47ed04SStefano Zampini   Mat                    A, At, AAt;
74e47ed04SStefano Zampini   Vec                    x, y, z;
8cbc6b225SStefano Zampini   ISLocalToGlobalMapping rl2g, cl2g;
9cbc6b225SStefano Zampini   IS                     is;
104e47ed04SStefano Zampini   PetscLayout            rmap, cmap;
11cbc6b225SStefano Zampini   PetscInt              *it, *jt;
124e47ed04SStefano Zampini   PetscInt               n1 = 11, n2 = 9;
13cbc6b225SStefano Zampini   PetscInt               i1[] = {7, 6, 2, 0, 4, 1, 1, 0, 2, 2, 1, -1, -1};
14cbc6b225SStefano Zampini   PetscInt               j1[] = {1, 4, 3, 5, 3, 3, 4, 5, 0, 3, 1, -1, -1};
15cbc6b225SStefano Zampini   PetscInt               i2[] = {7, 6, 2, 0, 4, 1, 1, 2, 1, -1, -1};
16cbc6b225SStefano Zampini   PetscInt               j2[] = {1, 4, 3, 5, 3, 3, 4, 0, 1, -1, -1};
17cbc6b225SStefano Zampini   PetscScalar            v1[] = {-1., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., PETSC_MAX_REAL, PETSC_MAX_REAL};
18cbc6b225SStefano Zampini   PetscScalar            v2[] = {1., -1., -2., -3., -4., -5., -6., -7., -8., -9., -10., PETSC_MAX_REAL, PETSC_MAX_REAL};
19cbc6b225SStefano Zampini   PetscInt               N = 6, m = 8, M, rstart, cstart, i;
204e47ed04SStefano Zampini   PetscMPIInt            size;
214e47ed04SStefano Zampini   PetscBool              loc      = PETSC_FALSE;
22cbc6b225SStefano Zampini   PetscBool              locdiag  = PETSC_TRUE;
23cbc6b225SStefano Zampini   PetscBool              localapi = PETSC_FALSE;
24cbc6b225SStefano Zampini   PetscBool              neg      = PETSC_FALSE;
25cbc6b225SStefano Zampini   PetscBool              ismatis, ismpiaij;
264e47ed04SStefano Zampini 
27327415f7SBarry Smith   PetscFunctionBeginUser;
289566063dSJacob Faibussowitsch   PetscCall(PetscInitialize(&argc, &args, (char *)0, help));
299566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL, NULL, "-neg", &neg, NULL));
309566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL, NULL, "-loc", &loc, NULL));
319566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL, NULL, "-locdiag", &locdiag, NULL));
329566063dSJacob Faibussowitsch   PetscCall(PetscOptionsGetBool(NULL, NULL, "-localapi", &localapi, NULL));
339566063dSJacob Faibussowitsch   PetscCall(MatCreate(PETSC_COMM_WORLD, &A));
344e47ed04SStefano Zampini   if (loc) {
354e47ed04SStefano Zampini     if (locdiag) {
369566063dSJacob Faibussowitsch       PetscCall(MatSetSizes(A, m, N, PETSC_DECIDE, PETSC_DECIDE));
374e47ed04SStefano Zampini     } else {
389566063dSJacob Faibussowitsch       PetscCall(MatSetSizes(A, m, m + N, PETSC_DECIDE, PETSC_DECIDE));
394e47ed04SStefano Zampini     }
404e47ed04SStefano Zampini   } else {
419566063dSJacob Faibussowitsch     PetscCall(MatSetSizes(A, m, PETSC_DECIDE, PETSC_DECIDE, N));
424e47ed04SStefano Zampini   }
439566063dSJacob Faibussowitsch   PetscCall(MatSetFromOptions(A));
449566063dSJacob Faibussowitsch   PetscCall(MatGetLayouts(A, &rmap, &cmap));
459566063dSJacob Faibussowitsch   PetscCall(PetscLayoutSetUp(rmap));
469566063dSJacob Faibussowitsch   PetscCall(PetscLayoutSetUp(cmap));
479566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetRange(rmap, &rstart, NULL));
489566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetRange(cmap, &cstart, NULL));
499566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetSize(rmap, &M));
509566063dSJacob Faibussowitsch   PetscCall(PetscLayoutGetSize(cmap, &N));
51cbc6b225SStefano Zampini 
529566063dSJacob Faibussowitsch   PetscCall(PetscObjectTypeCompare((PetscObject)A, MATIS, &ismatis));
53cbc6b225SStefano Zampini 
54cbc6b225SStefano Zampini   /* create fake l2g maps to test the local API */
559566063dSJacob Faibussowitsch   PetscCall(ISCreateStride(PETSC_COMM_WORLD, M - rstart, rstart, 1, &is));
569566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingCreateIS(is, &rl2g));
579566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&is));
589566063dSJacob Faibussowitsch   PetscCall(ISCreateStride(PETSC_COMM_WORLD, N, 0, 1, &is));
599566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingCreateIS(is, &cl2g));
609566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&is));
619566063dSJacob Faibussowitsch   PetscCall(MatSetLocalToGlobalMapping(A, rl2g, cl2g));
629566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingDestroy(&rl2g));
639566063dSJacob Faibussowitsch   PetscCall(ISLocalToGlobalMappingDestroy(&cl2g));
64cbc6b225SStefano Zampini 
659566063dSJacob Faibussowitsch   PetscCall(MatCreateVecs(A, &x, &y));
669566063dSJacob Faibussowitsch   PetscCall(MatCreateVecs(A, NULL, &z));
679566063dSJacob Faibussowitsch   PetscCall(VecSet(x, 1.));
689566063dSJacob Faibussowitsch   PetscCall(VecSet(z, 2.));
699371c9d4SSatish Balay   if (!localapi)
709371c9d4SSatish Balay     for (i = 0; i < n1; i++) i1[i] += rstart;
719371c9d4SSatish Balay   if (!localapi)
729371c9d4SSatish Balay     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   }
829371c9d4SSatish Balay   if (neg) {
839371c9d4SSatish Balay     n1 += 2;
849371c9d4SSatish Balay     n2 += 2;
859371c9d4SSatish Balay   }
86cbc6b225SStefano Zampini   /* MatSetPreallocationCOOLocal maps the indices! */
879566063dSJacob Faibussowitsch   PetscCall(PetscMalloc2(PetscMax(n1, n2), &it, PetscMax(n1, n2), &jt));
884e47ed04SStefano Zampini   /* test with repeated entries */
89cbc6b225SStefano Zampini   if (!localapi) {
909566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOO(A, n1, i1, j1));
91cbc6b225SStefano Zampini   } else {
929566063dSJacob Faibussowitsch     PetscCall(PetscArraycpy(it, i1, n1));
939566063dSJacob Faibussowitsch     PetscCall(PetscArraycpy(jt, j1, n1));
949566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A, n1, it, jt));
95cbc6b225SStefano Zampini   }
969566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v1, ADD_VALUES));
979566063dSJacob Faibussowitsch   PetscCall(MatMult(A, x, y));
9816406dc7SBarry Smith   PetscCall(MatView(A, NULL));
9916406dc7SBarry Smith   PetscCall(VecView(y, NULL));
1009566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v2, ADD_VALUES));
1019566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A, x, y, y));
10216406dc7SBarry Smith   PetscCall(MatView(A, NULL));
10316406dc7SBarry Smith   PetscCall(VecView(y, NULL));
1049566063dSJacob Faibussowitsch   PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &At));
105cbc6b225SStefano Zampini   if (!ismatis) {
1069566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A, At, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
10716406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
1089566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
1099566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At, A, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
11016406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
1119566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
112cbc6b225SStefano Zampini   }
1139566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&At));
114cbc6b225SStefano Zampini 
115e61fc153SStefano Zampini   /* INSERT_VALUES will overwrite matrix entries but
116e61fc153SStefano Zampini      still perform the sum of the repeated entries */
1179566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v2, INSERT_VALUES));
11816406dc7SBarry Smith   PetscCall(MatView(A, NULL));
1194e47ed04SStefano Zampini 
1204e47ed04SStefano Zampini   /* test with unique entries */
1219566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(it, i2, n2));
1229566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(jt, j2, n2));
123e8729f6fSJunchao Zhang   if (!localapi) {
124e8729f6fSJunchao Zhang     PetscCall(MatSetPreallocationCOO(A, n2, it, jt));
125e8729f6fSJunchao Zhang   } else {
1269566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A, n2, it, jt));
127cbc6b225SStefano Zampini   }
1289566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v1, ADD_VALUES));
1299566063dSJacob Faibussowitsch   PetscCall(MatMult(A, x, y));
13016406dc7SBarry Smith   PetscCall(MatView(A, NULL));
13116406dc7SBarry Smith   PetscCall(VecView(y, NULL));
1329566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v2, ADD_VALUES));
1339566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A, x, y, z));
13416406dc7SBarry Smith   PetscCall(MatView(A, NULL));
13516406dc7SBarry Smith   PetscCall(VecView(z, NULL));
1369566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(it, i2, n2));
1379566063dSJacob Faibussowitsch   PetscCall(PetscArraycpy(jt, j2, n2));
138e8729f6fSJunchao Zhang   if (!localapi) {
139e8729f6fSJunchao Zhang     PetscCall(MatSetPreallocationCOO(A, n2, it, jt));
140e8729f6fSJunchao Zhang   } else {
1419566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOOLocal(A, n2, it, jt));
142cbc6b225SStefano Zampini   }
1439566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v1, INSERT_VALUES));
1449566063dSJacob Faibussowitsch   PetscCall(MatMult(A, x, y));
14516406dc7SBarry Smith   PetscCall(MatView(A, NULL));
14616406dc7SBarry Smith   PetscCall(VecView(y, NULL));
1479566063dSJacob Faibussowitsch   PetscCall(MatSetValuesCOO(A, v2, INSERT_VALUES));
1489566063dSJacob Faibussowitsch   PetscCall(MatMultAdd(A, x, y, z));
14916406dc7SBarry Smith   PetscCall(MatView(A, NULL));
15016406dc7SBarry Smith   PetscCall(VecView(z, NULL));
1519566063dSJacob Faibussowitsch   PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &At));
152cbc6b225SStefano Zampini   if (!ismatis) {
1539566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A, At, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
15416406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
1559566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
1569566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At, A, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
15716406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
1589566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
159cbc6b225SStefano Zampini   }
1609566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&At));
1614e47ed04SStefano Zampini 
162cbc6b225SStefano Zampini   /* test providing diagonal first, then offdiagonal */
1639566063dSJacob Faibussowitsch   PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)A), &size));
1649566063dSJacob Faibussowitsch   PetscCall(PetscObjectBaseTypeCompare((PetscObject)A, MATMPIAIJ, &ismpiaij));
1654e47ed04SStefano Zampini   if (ismpiaij && size > 1) {
1664e47ed04SStefano Zampini     Mat                lA, lB;
1674e47ed04SStefano Zampini     const PetscInt    *garray, *iA, *jA, *iB, *jB;
1684e47ed04SStefano Zampini     const PetscScalar *vA, *vB;
1694e47ed04SStefano Zampini     PetscScalar       *coo_v;
1704e47ed04SStefano Zampini     PetscInt          *coo_i, *coo_j;
1714e47ed04SStefano Zampini     PetscInt           i, j, nA, nB, nnz;
1724e47ed04SStefano Zampini     PetscBool          flg;
1734e47ed04SStefano Zampini 
1749566063dSJacob Faibussowitsch     PetscCall(MatMPIAIJGetSeqAIJ(A, &lA, &lB, &garray));
1759566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJGetArrayRead(lA, &vA));
1769566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJGetArrayRead(lB, &vB));
1779566063dSJacob Faibussowitsch     PetscCall(MatGetRowIJ(lA, 0, PETSC_FALSE, PETSC_FALSE, &nA, &iA, &jA, &flg));
1789566063dSJacob Faibussowitsch     PetscCall(MatGetRowIJ(lB, 0, PETSC_FALSE, PETSC_FALSE, &nB, &iB, &jB, &flg));
1794e47ed04SStefano Zampini     nnz = iA[nA] + iB[nB];
1809566063dSJacob Faibussowitsch     PetscCall(PetscMalloc3(nnz, &coo_i, nnz, &coo_j, nnz, &coo_v));
1814e47ed04SStefano Zampini     nnz = 0;
1824e47ed04SStefano Zampini     for (i = 0; i < nA; i++) {
1834e47ed04SStefano Zampini       for (j = iA[i]; j < iA[i + 1]; j++, nnz++) {
1844e47ed04SStefano Zampini         coo_i[nnz] = i + rstart;
1854e47ed04SStefano Zampini         coo_j[nnz] = jA[j] + cstart;
1864e47ed04SStefano Zampini         coo_v[nnz] = vA[j];
1874e47ed04SStefano Zampini       }
1884e47ed04SStefano Zampini     }
1894e47ed04SStefano Zampini     for (i = 0; i < nB; i++) {
1904e47ed04SStefano Zampini       for (j = iB[i]; j < iB[i + 1]; j++, nnz++) {
1914e47ed04SStefano Zampini         coo_i[nnz] = i + rstart;
1924e47ed04SStefano Zampini         coo_j[nnz] = garray[jB[j]];
1934e47ed04SStefano Zampini         coo_v[nnz] = vB[j];
1944e47ed04SStefano Zampini       }
1954e47ed04SStefano Zampini     }
1969566063dSJacob Faibussowitsch     PetscCall(MatRestoreRowIJ(lA, 0, PETSC_FALSE, PETSC_FALSE, &nA, &iA, &jA, &flg));
1979566063dSJacob Faibussowitsch     PetscCall(MatRestoreRowIJ(lB, 0, PETSC_FALSE, PETSC_FALSE, &nB, &iB, &jB, &flg));
1989566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJRestoreArrayRead(lA, &vA));
1999566063dSJacob Faibussowitsch     PetscCall(MatSeqAIJRestoreArrayRead(lB, &vB));
2004e47ed04SStefano Zampini 
2019566063dSJacob Faibussowitsch     PetscCall(MatSetPreallocationCOO(A, nnz, coo_i, coo_j));
2029566063dSJacob Faibussowitsch     PetscCall(MatSetValuesCOO(A, coo_v, ADD_VALUES));
2039566063dSJacob Faibussowitsch     PetscCall(MatMult(A, x, y));
20416406dc7SBarry Smith     PetscCall(MatView(A, NULL));
20516406dc7SBarry Smith     PetscCall(VecView(y, NULL));
2069566063dSJacob Faibussowitsch     PetscCall(MatSetValuesCOO(A, coo_v, INSERT_VALUES));
2079566063dSJacob Faibussowitsch     PetscCall(MatMult(A, x, y));
20816406dc7SBarry Smith     PetscCall(MatView(A, NULL));
20916406dc7SBarry Smith     PetscCall(VecView(y, NULL));
2109566063dSJacob Faibussowitsch     PetscCall(MatTranspose(A, MAT_INITIAL_MATRIX, &At));
2119566063dSJacob Faibussowitsch     PetscCall(MatMatMult(A, At, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
21216406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
2139566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
2149566063dSJacob Faibussowitsch     PetscCall(MatMatMult(At, A, MAT_INITIAL_MATRIX, PETSC_DEFAULT, &AAt));
21516406dc7SBarry Smith     PetscCall(MatView(AAt, NULL));
2169566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&AAt));
2179566063dSJacob Faibussowitsch     PetscCall(MatDestroy(&At));
2184e47ed04SStefano Zampini 
2199566063dSJacob Faibussowitsch     PetscCall(PetscFree3(coo_i, coo_j, coo_v));
2204e47ed04SStefano Zampini   }
2219566063dSJacob Faibussowitsch   PetscCall(PetscFree2(it, jt));
2229566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&z));
2239566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&x));
2249566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&y));
2259566063dSJacob Faibussowitsch   PetscCall(MatDestroy(&A));
2269566063dSJacob Faibussowitsch   PetscCall(PetscFinalize());
227b122ec5aSJacob Faibussowitsch   return 0;
2284e47ed04SStefano Zampini }
2294e47ed04SStefano Zampini 
2304e47ed04SStefano Zampini /*TEST
2314e47ed04SStefano Zampini 
2324e47ed04SStefano Zampini    test:
2334e47ed04SStefano Zampini      suffix: 1
2344e47ed04SStefano Zampini      filter: grep -v type
2354e47ed04SStefano Zampini      diff_args: -j
236cbc6b225SStefano Zampini      args: -mat_type {{seqaij mpiaij}} -localapi {{0 1}} -neg {{0 1}}
2374e47ed04SStefano Zampini 
2384e47ed04SStefano Zampini    test:
2394e47ed04SStefano Zampini      requires: cuda
2404e47ed04SStefano Zampini      suffix: 1_cuda
2414e47ed04SStefano Zampini      filter: grep -v type
2424e47ed04SStefano Zampini      diff_args: -j
243cbc6b225SStefano Zampini      args: -mat_type {{seqaijcusparse mpiaijcusparse}} -localapi {{0 1}} -neg {{0 1}}
244cbc6b225SStefano Zampini      output_file: output/ex123_1.out
245cbc6b225SStefano Zampini 
246cbc6b225SStefano Zampini    test:
247*dcfd994dSJunchao Zhang      requires: kokkos_kernels
248cbc6b225SStefano Zampini      suffix: 1_kokkos
249cbc6b225SStefano Zampini      filter: grep -v type
250cbc6b225SStefano Zampini      diff_args: -j
251cbc6b225SStefano Zampini      args: -mat_type {{seqaijkokkos mpiaijkokkos}} -localapi {{0 1}} -neg {{0 1}}
2524e47ed04SStefano Zampini      output_file: output/ex123_1.out
2534e47ed04SStefano Zampini 
2544e47ed04SStefano Zampini    test:
2554e47ed04SStefano Zampini      suffix: 2
2564e47ed04SStefano Zampini      nsize: 7
2574e47ed04SStefano Zampini      filter: grep -v type
2584e47ed04SStefano Zampini      diff_args: -j
259cbc6b225SStefano Zampini      args: -mat_type mpiaij -localapi {{0 1}} -neg {{0 1}}
2604e47ed04SStefano Zampini 
2614e47ed04SStefano Zampini    test:
2624e47ed04SStefano Zampini      requires: cuda
2634e47ed04SStefano Zampini      suffix: 2_cuda
2644e47ed04SStefano Zampini      nsize: 7
2654e47ed04SStefano Zampini      filter: grep -v type
2664e47ed04SStefano Zampini      diff_args: -j
267cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -localapi {{0 1}} -neg {{0 1}}
268cbc6b225SStefano Zampini      output_file: output/ex123_2.out
269cbc6b225SStefano Zampini 
270cbc6b225SStefano Zampini    test:
271*dcfd994dSJunchao Zhang      requires: kokkos_kernels
272cbc6b225SStefano Zampini      suffix: 2_kokkos
273cbc6b225SStefano Zampini      nsize: 7
274cbc6b225SStefano Zampini      filter: grep -v type
275cbc6b225SStefano Zampini      diff_args: -j
276cbc6b225SStefano Zampini      args: -mat_type mpiaijkokkos -localapi {{0 1}} -neg {{0 1}}
2774e47ed04SStefano Zampini      output_file: output/ex123_2.out
2784e47ed04SStefano Zampini 
2794e47ed04SStefano Zampini    test:
2804e47ed04SStefano Zampini      suffix: 3
2814e47ed04SStefano Zampini      nsize: 3
2824e47ed04SStefano Zampini      filter: grep -v type
2834e47ed04SStefano Zampini      diff_args: -j
284cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -localapi {{0 1}} -neg {{0 1}}
2854e47ed04SStefano Zampini 
2864e47ed04SStefano Zampini    test:
2874e47ed04SStefano Zampini      requires: cuda
2884e47ed04SStefano Zampini      suffix: 3_cuda
2894e47ed04SStefano Zampini      nsize: 3
2904e47ed04SStefano Zampini      filter: grep -v type
2914e47ed04SStefano Zampini      diff_args: -j
292cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -localapi {{0 1}} -neg {{0 1}}
2934e47ed04SStefano Zampini      output_file: output/ex123_3.out
2944e47ed04SStefano Zampini 
2954e47ed04SStefano Zampini    test:
296*dcfd994dSJunchao Zhang      requires: kokkos_kernels
29742550becSJunchao Zhang      suffix: 3_kokkos
29842550becSJunchao Zhang      nsize: 3
29942550becSJunchao Zhang      filter: grep -v type
30042550becSJunchao Zhang      diff_args: -j
301cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -localapi {{0 1}} -neg {{0 1}}
30242550becSJunchao Zhang      output_file: output/ex123_3.out
30342550becSJunchao Zhang 
30442550becSJunchao Zhang    test:
305cbc6b225SStefano Zampini      suffix: 4
306cbc6b225SStefano Zampini      nsize: 4
307cbc6b225SStefano Zampini      filter: grep -v type
308cbc6b225SStefano Zampini      diff_args: -j
309cbc6b225SStefano Zampini      args: -mat_type mpiaij -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
310cbc6b225SStefano Zampini 
311cbc6b225SStefano Zampini    test:
312cbc6b225SStefano Zampini      requires: cuda
313cbc6b225SStefano Zampini      suffix: 4_cuda
314cbc6b225SStefano Zampini      nsize: 4
315cbc6b225SStefano Zampini      filter: grep -v type
316cbc6b225SStefano Zampini      diff_args: -j
317cbc6b225SStefano Zampini      args: -mat_type mpiaijcusparse -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
318cbc6b225SStefano Zampini      output_file: output/ex123_4.out
319cbc6b225SStefano Zampini 
320cbc6b225SStefano Zampini    test:
321*dcfd994dSJunchao Zhang      requires: kokkos_kernels
32242550becSJunchao Zhang      suffix: 4_kokkos
32342550becSJunchao Zhang      nsize: 4
32442550becSJunchao Zhang      filter: grep -v type
32542550becSJunchao Zhang      diff_args: -j
326cbc6b225SStefano Zampini      args: -mat_type aijkokkos -loc -locdiag 0 -localapi {{0 1}} -neg {{0 1}}
32742550becSJunchao Zhang      output_file: output/ex123_4.out
32842550becSJunchao Zhang 
329cbc6b225SStefano Zampini    test:
330cbc6b225SStefano Zampini      suffix: matis
331cbc6b225SStefano Zampini      nsize: 3
332cbc6b225SStefano Zampini      filter: grep -v type
333cbc6b225SStefano Zampini      diff_args: -j
334cbc6b225SStefano Zampini      args: -mat_type is -localapi {{0 1}} -neg {{0 1}}
335cbc6b225SStefano Zampini 
3364e47ed04SStefano Zampini TEST*/
337