Actual source code: ex52.c
1: static const char help[] = "Tests VecSum()\n\n";
3: #include <petscvec.h>
5: static PetscErrorCode CheckVecSumReturn(Vec v, PetscScalar expected)
6: {
7: PetscScalar actual;
9: PetscFunctionBegin;
10: PetscCall(VecSum(v, &actual));
11: PetscCheck(PetscIsCloseAtTolScalar(actual, expected, 1e-12, 0.0), PETSC_COMM_SELF, PETSC_ERR_PLIB, "VecSum() returned %g + %gi, expected %g + %gi", (double)PetscRealPart(actual), (double)PetscImaginaryPart(actual), (double)PetscRealPart(expected), (double)PetscImaginaryPart(expected));
12: PetscFunctionReturn(PETSC_SUCCESS);
13: }
15: int main(int argc, char **argv)
16: {
17: PetscInt n, lo, N = 10;
18: PetscScalar sum = 0.0;
19: Vec x;
20: PetscScalar *array;
22: PetscFunctionBeginUser;
23: PetscCall(PetscInitialize(&argc, &argv, NULL, help));
25: PetscCall(VecCreate(PETSC_COMM_WORLD, &x));
26: PetscCall(VecSetSizes(x, PETSC_DECIDE, N));
27: PetscCall(VecSetFromOptions(x));
29: PetscCall(CheckVecSumReturn(x, 0.0));
31: PetscCall(VecSet(x, 1.0));
32: PetscCall(CheckVecSumReturn(x, 10.0));
34: PetscCall(VecGetLocalSize(x, &n));
35: PetscCall(VecGetOwnershipRange(x, &lo, NULL));
36: PetscCall(VecGetArrayWrite(x, &array));
37: for (PetscInt i = 0; i < n; ++i) array[i] = (PetscScalar)(lo + i);
38: PetscCall(VecRestoreArrayWrite(x, &array));
40: PetscCall(VecGetSize(x, &N));
41: for (PetscInt i = 0; i < N; ++i) sum += (PetscScalar)i;
42: PetscCall(CheckVecSumReturn(x, sum));
44: PetscCall(VecDestroy(&x));
45: PetscCall(PetscFinalize());
46: return 0;
47: }
49: /*TEST
51: testset:
52: output_file: output/empty.out
53: nsize: {{1 2}}
54: test:
55: suffix: standard
56: test:
57: requires: defined(PETSC_USE_SHARED_MEMORY)
58: args: -vec_type shared
59: suffix: shared
60: test:
61: requires: viennacl
62: args: -vec_type viennacl
63: suffix: viennacl
64: test:
65: requires: kokkos_kernels
66: args: -vec_type kokkos
67: suffix: kokkos
68: test:
69: requires: cuda
70: args: -vec_type cuda
71: suffix: cuda
72: test:
73: requires: hip
74: args: -vec_type hip
75: suffix: hip
77: TEST*/