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 ierr = PetscCalloc1(8000000,&A);CHKERRQ(ierr); 13 ierr = PetscMalloc1(8000000,&B);CHKERRQ(ierr); 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 ierr = PetscArraycpy(A,B,8000000);CHKERRQ(ierr); 21 ierr = PetscTime(&x);CHKERRQ(ierr); 22 ierr = PetscArraycpy(A,B,8000000);CHKERRQ(ierr); 23 ierr = PetscTime(&x);CHKERRQ(ierr); 24 25 fprintf(stdout,"%s : \n","PetscMemcpy"); 26 fprintf(stdout," %-15s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x)); 27 28 ierr = PetscFree(A);CHKERRQ(ierr); 29 ierr = PetscFree(B);CHKERRQ(ierr); 30 ierr = PetscFinalize(); 31 return ierr; 32 } 33