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