1 /*$Id: PetscMemcpy.c,v 1.13 1999/05/04 20:38:02 balay Exp bsmith $*/ 2 3 #include "petsc.h" 4 5 #undef __FUNC__ 6 #define __FUNC__ "main" 7 int main( int argc, char **argv) 8 { 9 PLogDouble x, y, z; 10 int i,ierr; 11 Scalar *A, *B; 12 13 PetscInitialize(&argc, &argv,0,0); 14 15 A = (Scalar *) PetscMalloc(8000000*sizeof(Scalar)); 16 B = (Scalar *) PetscMalloc(8000000*sizeof(Scalar)); 17 18 for (i=0; i<8000000; i++) { 19 A[i] = i%61897; 20 B[i] = i%61897; 21 } 22 /* To take care of paging effects */ 23 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 24 ierr = PetscGetTime(&x);CHKERRA(ierr); 25 26 ierr = PetscGetTime(&x);CHKERRA(ierr); 27 /* 28 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 29 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 30 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 31 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 32 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 33 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 34 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 35 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 36 PetscMemcpy(A,B,sizeof(Scalar)*8000000); 37 PetscMemcpy(A,B,sizeof(Scalar)*8000000); */ 38 { int j; 39 for (j = 0; j<10; j++ ) { 40 for ( i=0; i<8000000; i++) { 41 B[i] = A[i]; 42 } 43 }} 44 45 ierr = PetscGetTime(&y);CHKERRA(ierr); 46 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 47 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 48 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 49 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 50 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 51 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 52 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 53 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 54 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 55 ierr = PetscMemcpy(A,B,sizeof(Scalar)*0);CHKERRA(ierr); 56 ierr = PetscGetTime(&z);CHKERRA(ierr); 57 58 fprintf(stderr,"%s : \n","PetscMemcpy"); 59 fprintf(stderr," %-11s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x)); 60 fprintf(stderr," %-11s : %e sec\n","Latency",(z-y)/10.0); 61 fprintf(stderr," %-11s : %e sec\n","Per Scalar",(2*y-x-z)/8000000.0); 62 63 PetscFinalize(); 64 PetscFunctionReturn(0); 65 } 66