1 #include <petscsys.h> 2 #include <petsctime.h> 3 4 int main(int argc, char **argv) 5 { 6 PetscLogDouble x, y, z; 7 PetscScalar A[10000]; 8 9 PetscCall(PetscInitialize(&argc, &argv, 0, 0)); 10 /* To take care of paging effects */ 11 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 12 PetscCall(PetscTime(&x)); 13 14 PetscCall(PetscTime(&x)); 15 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 16 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 17 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 18 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 19 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 20 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 21 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 22 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 23 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 24 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 10000)); 25 PetscCall(PetscTime(&y)); 26 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 27 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 28 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 29 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 30 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 31 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 32 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 33 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 34 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 35 PetscCall(PetscMemzero(A, sizeof(PetscScalar) * 0)); 36 PetscCall(PetscTime(&z)); 37 38 fprintf(stdout, "%s : \n", "PetscMemzero"); 39 fprintf(stdout, " %-15s : %e sec\n", "Latency", (z - y) / 10.0); 40 fprintf(stdout, " %-15s : %e sec\n", "Per PetscScalar", (2 * y - x - z) / 100000.0); 41 42 PetscCall(PetscFinalize()); 43 return 0; 44 } 45