Actual source code: PetscMemcpy.c
1: #include <petscsys.h>
2: #include <petsctime.h>
4: int main(int argc,char **argv)
5: {
6: PetscLogDouble x,y;
7: PetscScalar *A,*B;
9: PetscCall(PetscInitialize(&argc,&argv,0,0));
10: PetscCall(PetscCalloc1(8000000,&A));
11: PetscCall(PetscMalloc1(8000000,&B));
13: for (i=0; i<8000000; i++) {
14: A[i] = i%61897;
15: B[i] = i%61897;
16: }
17: /* To take care of paging effects */
18: PetscCall(PetscArraycpy(A,B,8000000));
19: PetscCall(PetscTime(&x));
20: PetscCall(PetscArraycpy(A,B,8000000));
21: PetscCall(PetscTime(&x));
23: fprintf(stdout,"%s : \n","PetscMemcpy");
24: fprintf(stdout," %-15s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x));
26: PetscCall(PetscFree(A));
27: PetscCall(PetscFree(B));
28: PetscCall(PetscFinalize());
29: return 0;
30: }