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