xref: /petsc/src/benchmarks/PetscMemcpy.c (revision 580bdb303e1ee3b1222b2042810b4c26340259c6)
1d8e9fea7SSatish Balay 
2c6db04a5SJed Brown #include <petscsys.h>
38563dfccSBarry Smith #include <petsctime.h>
4b0878937SSatish Balay 
5b0878937SSatish Balay int main(int argc,char **argv)
6b0878937SSatish Balay {
7*580bdb30SBarry 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*580bdb30SBarry Smith   ierr = PetscCalloc1(8000000,&A);CHKERRQ(ierr);
13785e854fSJed Brown   ierr = PetscMalloc1(8000000,&B);CHKERRQ(ierr);
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*580bdb30SBarry Smith   ierr = PetscArraycpy(A,B,8000000);CHKERRQ(ierr);
218563dfccSBarry Smith   ierr = PetscTime(&x);CHKERRQ(ierr);
22*580bdb30SBarry Smith   ierr = PetscArraycpy(A,B,8000000);CHKERRQ(ierr);
238563dfccSBarry Smith   ierr = PetscTime(&x);CHKERRQ(ierr);
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 
28b4d8b9abSSatish Balay   ierr = PetscFree(A);CHKERRQ(ierr);
29b4d8b9abSSatish Balay   ierr = PetscFree(B);CHKERRQ(ierr);
30f3fe499bSBarry Smith   ierr = PetscFinalize();
3126f47effSBarry Smith   return ierr;
32b0878937SSatish Balay }
33