xref: /petsc/src/benchmarks/PetscMemcpy.c (revision b122ec5aa1bd4469eb4e0673542fb7de3f411254)
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;
8ea709b57SSatish Balay   PetscScalar    *A,*B;
9b0878937SSatish Balay 
10*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscInitialize(&argc,&argv,0,0));
115f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscCalloc1(8000000,&A));
125f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscMalloc1(8000000,&B));
13e24b481bSBarry Smith 
14e24b481bSBarry Smith   for (i=0; i<8000000; i++) {
15b0878937SSatish Balay     A[i] = i%61897;
16b0878937SSatish Balay     B[i] = i%61897;
17b0878937SSatish Balay   }
18b0878937SSatish Balay   /* To take care of paging effects */
195f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscArraycpy(A,B,8000000));
205f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscTime(&x));
215f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscArraycpy(A,B,8000000));
225f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscTime(&x));
23b0878937SSatish Balay 
2435d8aa7fSBarry Smith   fprintf(stdout,"%s : \n","PetscMemcpy");
25b4d8b9abSSatish Balay   fprintf(stdout,"    %-15s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x));
26b0878937SSatish Balay 
275f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscFree(A));
285f80ce2aSJacob Faibussowitsch   CHKERRQ(PetscFree(B));
29*b122ec5aSJacob Faibussowitsch   CHKERRQ(PetscFinalize());
30*b122ec5aSJacob Faibussowitsch   return 0;
31b0878937SSatish Balay }
32