Actual source code: ex12.c
2: static char help[] = "Tests timing PetscSortInt().\n\n";
4: #include <petscsys.h>
6: int main(int argc, char **argv)
7: {
8: PetscInt i, n = 1000, *values;
9: #if defined(PETSC_USE_LOG)
10: PetscLogEvent event;
11: #endif
12: PetscRandom rand;
13: PetscReal value;
14: PetscBool values_view = PETSC_FALSE;
15: PetscMPIInt rank;
18: PetscInitialize(&argc, &argv, (char *)0, help);
19: MPI_Comm_rank(PETSC_COMM_WORLD, &rank);
20: PetscOptionsGetInt(NULL, NULL, "-n", &n, NULL);
21: PetscOptionsGetBool(NULL, 0, "-values_view", &values_view, NULL);
23: PetscRandomCreate(PETSC_COMM_SELF, &rand);
24: PetscRandomSetFromOptions(rand);
26: PetscMalloc1(n, &values);
27: for (i = 0; i < n; i++) {
28: PetscRandomGetValueReal(rand, &value);
29: values[i] = (PetscInt)(n * value + 2.0);
30: }
31: PetscSortInt(n, values);
33: PetscLogEventRegister("Sort", 0, &event);
34: PetscLogEventBegin(event, 0, 0, 0, 0);
36: for (i = 0; i < n; i++) {
37: PetscRandomGetValueReal(rand, &value);
38: values[i] = (PetscInt)(n * value + 2.0);
39: }
40: PetscSortInt(n, values);
41: PetscLogEventEnd(event, 0, 0, 0, 0);
43: for (i = 1; i < n; i++) {
45: if (values_view && rank == 0) PetscPrintf(PETSC_COMM_SELF, "%" PetscInt_FMT " %" PetscInt_FMT "\n", i, values[i]);
46: }
47: PetscFree(values);
48: PetscRandomDestroy(&rand);
50: PetscFinalize();
51: return 0;
52: }
54: /*TEST
56: test:
57: args: -values_view
59: TEST*/