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