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