1 /*$Id: PetscMemcpy.c,v 1.21 2001/03/23 23:25:45 balay Exp bsmith $*/ 2 3 #include "petsc.h" 4 5 #undef __FUNCT__ 6 #define __FUNCT__ "main" 7 int main(int argc,char **argv) 8 { 9 PetscLogDouble x,y,z; 10 int i,ierr; 11 Scalar *A,*B; 12 13 PetscInitialize(&argc,&argv,0,0); 14 15 ierr = PetscMalloc(8000000*sizeof(PetscScalar),&A);CHKERRQ(ierr); 16 ierr = PetscMalloc(8000000*sizeof(PetscScalar),&B);CHKERRQ(ierr); 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(PetscScalar)*0);CHKERRQ(ierr); 24 ierr = PetscGetTime(&x);CHKERRQ(ierr); 25 26 ierr = PetscGetTime(&x);CHKERRQ(ierr); 27 /* 28 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 29 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 30 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 31 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 32 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 33 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 34 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 35 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 36 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 37 PetscMemcpy(A,B,sizeof(PetscScalar)*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);CHKERRQ(ierr); 46 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 47 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 48 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 49 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 50 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 51 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 52 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 53 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 54 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 55 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 56 ierr = PetscGetTime(&z);CHKERRQ(ierr); 57 58 fprintf(stdout,"%s : \n","PetscMemcpy"); 59 fprintf(stdout," %-11s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x)); 60 fprintf(stdout," %-11s : %e sec\n","Latency",(z-y)/10.0); 61 fprintf(stdout," %-11s : %e sec\n","Per Scalar",(2*y-x-z)/8000000.0); 62 63 ierr = PetscFinalize();CHKERRQ(ierr); 64 PetscFunctionReturn(0); 65 } 66