1 2 #include "petscsys.h" 3 4 #undef __FUNCT__ 5 #define __FUNCT__ "main" 6 int main(int argc,char **argv) 7 { 8 PetscLogDouble x,y,z; 9 int i,ierr; 10 PetscScalar *A,*B; 11 12 PetscInitialize(&argc,&argv,0,0); 13 14 ierr = PetscMalloc(8000000*sizeof(PetscScalar),&A);CHKERRQ(ierr); 15 ierr = PetscMalloc(8000000*sizeof(PetscScalar),&B);CHKERRQ(ierr); 16 17 for (i=0; i<8000000; i++) { 18 A[i] = i%61897; 19 B[i] = i%61897; 20 } 21 /* To take care of paging effects */ 22 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);CHKERRQ(ierr); 23 ierr = PetscGetTime(&x);CHKERRQ(ierr); 24 25 ierr = PetscGetTime(&x);CHKERRQ(ierr); 26 /* 27 PetscMemcpy(A,B,sizeof(PetscScalar)*8000000); 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 { int j; 38 for (j = 0; j<10; j++) { 39 for (i=0; i<8000000; i++) { 40 B[i] = A[i]; 41 } 42 }} 43 44 ierr = PetscGetTime(&y);CHKERRQ(ierr); 45 ierr = PetscMemcpy(A,B,sizeof(PetscScalar)*0);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 = PetscGetTime(&z);CHKERRQ(ierr); 56 57 fprintf(stdout,"%s : \n","PetscMemcpy"); 58 fprintf(stdout," %-15s : %e MB/s\n","Bandwidth",10.0*8*8/(y-x)); 59 fprintf(stdout," %-15s : %e sec\n","Latency",(z-y)/10.0); 60 fprintf(stdout," %-15s : %e sec\n","Per PetscScalar",(2*y-x-z)/8000000.0); 61 62 ierr = PetscFree(A);CHKERRQ(ierr); 63 ierr = PetscFree(B);CHKERRQ(ierr); 64 ierr = PetscFinalize(); 65 PetscFunctionReturn(0); 66 } 67