1c6db04a5SJed Brown #include <petscsys.h>
28563dfccSBarry Smith #include <petsctime.h>
3b0878937SSatish Balay
main(int argc,char ** argv)4b0878937SSatish Balay int main(int argc, char **argv)
5b0878937SSatish Balay {
6580bdb30SBarry Smith PetscLogDouble x, y;
7ea709b57SSatish Balay PetscScalar *A, *B;
8b0878937SSatish Balay
9*9566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, 0, 0));
10*9566063dSJacob Faibussowitsch PetscCall(PetscCalloc1(8000000, &A));
11*9566063dSJacob Faibussowitsch PetscCall(PetscMalloc1(8000000, &B));
12e24b481bSBarry Smith
13e24b481bSBarry Smith for (i = 0; i < 8000000; i++) {
14b0878937SSatish Balay A[i] = i % 61897;
15b0878937SSatish Balay B[i] = i % 61897;
16b0878937SSatish Balay }
17b0878937SSatish Balay /* To take care of paging effects */
18*9566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(A, B, 8000000));
19*9566063dSJacob Faibussowitsch PetscCall(PetscTime(&x));
20*9566063dSJacob Faibussowitsch PetscCall(PetscArraycpy(A, B, 8000000));
21*9566063dSJacob Faibussowitsch PetscCall(PetscTime(&x));
22b0878937SSatish Balay
2335d8aa7fSBarry Smith fprintf(stdout, "%s : \n", "PetscMemcpy");
24b4d8b9abSSatish Balay fprintf(stdout, " %-15s : %e MB/s\n", "Bandwidth", 10.0 * 8 * 8 / (y - x));
25b0878937SSatish Balay
26*9566063dSJacob Faibussowitsch PetscCall(PetscFree(A));
27*9566063dSJacob Faibussowitsch PetscCall(PetscFree(B));
28*9566063dSJacob Faibussowitsch PetscCall(PetscFinalize());
29b122ec5aSJacob Faibussowitsch return 0;
30b0878937SSatish Balay }
31