Subversion Repositories slepc-dev

Rev

Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2544 Rev 2560
Line 25... Line 25...
 
 
#undef __FUNCT__
#undef __FUNCT__
#define __FUNCT__ "main"
#define __FUNCT__ "main"
int main( int argc, char **argv )
int main( int argc, char **argv )
{
{
  MatDense       A,B,C,D;        /* matrices */
  MatDense       A,B,C;        /* matrices */
  PetscScalar    *v;
  PetscScalar    *v;
  PetscInt       n=45,m,i,j,its,M,reps=1;
  PetscInt       n=45,m,i,j,its,M,reps=1;
  PetscBool      flag;
  PetscBool      flag;
  Vec            *vecs0,*vecs1,t;
  Vec            *vecs0,*vecs1,t,*vecso;
  PetscLogStage  saxpy,smult,supdate;
  PetscLogStage  saxpy,smult,supdate,supdateo;
  PetscErrorCode ierr;
  PetscErrorCode ierr;
 
 
  SlepcInitialize(&argc,&argv,(char*)0,help);
  SlepcInitialize(&argc,&argv,(char*)0,help);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-n",&n,PETSC_NULL);CHKERRQ(ierr);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-m",&m,&flag);CHKERRQ(ierr);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-m",&m,&flag);CHKERRQ(ierr);
  if(!flag) m=n;
  if(!flag) m=n;
  M = PetscMax(m,n);
  M = PetscMax(m,n);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-r",&reps,&flag);CHKERRQ(ierr);
  ierr = PetscOptionsGetInt(PETSC_NULL,"-r",&reps,&flag);CHKERRQ(ierr);
  ierr = PetscPrintf(PETSC_COMM_WORLD,"\nDense matrices of size %Dx%D\n\n",m,n);CHKERRQ(ierr);
  ierr = PetscPrintf(PETSC_COMM_WORLD,"\nDense matrices of size %Dx%D\n\n",m,n);CHKERRQ(ierr);
 
 
 
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
     Initialize vectors
 
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 
  ierr = VecCreate(PETSC_COMM_WORLD,&t);CHKERRQ(ierr);
 
  ierr = VecSetSizes(t,PETSC_DECIDE,m);CHKERRQ(ierr);
 
  ierr = VecSetFromOptions(t);CHKERRQ(ierr);
 
  ierr = VecDuplicateVecs(t,n,&vecso);CHKERRQ(ierr);
 
  ierr = SlepcVecSetTemplate(t);CHKERRQ(ierr);
 
  ierr = VecDuplicateVecs(t,n,&vecs0);CHKERRQ(ierr);
 
  ierr = VecDuplicateVecs(t,n,&vecs1);CHKERRQ(ierr);
 
  ierr = VecGetLocalSize(t,&m);CHKERRQ(ierr);
 
  ierr = VecDestroy(&t);CHKERRQ(ierr);
 
  for (i=0;i<n;i++) { ierr = VecSetRandom(vecs0[i],PETSC_NULL);CHKERRQ(ierr); }
 
  for (i=0;i<n;i++) { ierr = VecSetRandom(vecs1[i],PETSC_NULL);CHKERRQ(ierr); }
 
  for (i=0;i<n;i++) { ierr = VecSetRandom(vecso[i],PETSC_NULL);CHKERRQ(ierr); }
 
 
 
 
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Create matrices
     Create matrices
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 
 
Line 79... Line 96...
    for (i=0; i<m; i++) {
    for (i=0; i<m; i++) {
      v[m*j+i] = i & 1 ? 1.0 : -1.0;
      v[m*j+i] = i & 1 ? 1.0 : -1.0;
    }
    }
  }
  }
  ierr = MatDenseRestoreArray(B,&v);CHKERRQ(ierr);
  ierr = MatDenseRestoreArray(B,&v);CHKERRQ(ierr);
 
 
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
     Initialize vectors
 
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 
  ierr = VecCreate(PETSC_COMM_WORLD,&t);CHKERRQ(ierr);
 
  ierr = VecSetSizes(t,m,PETSC_DECIDE);CHKERRQ(ierr);
 
  ierr = VecSetFromOptions(t);CHKERRQ(ierr);
 
  ierr = SlepcVecSetTemplate(t);CHKERRQ(ierr);
 
  ierr = VecDuplicateVecs(t,n,&vecs0);CHKERRQ(ierr);
 
  ierr = VecDuplicateVecs(t,n,&vecs1);CHKERRQ(ierr);
 
  ierr = VecDestroy(&t);CHKERRQ(ierr);
 
  for (i=0;i<n;i++) { ierr = VecSetRandom(vecs0[i],PETSC_NULL);CHKERRQ(ierr); }
 
  for (i=0;i<n;i++) { ierr = VecSetRandom(vecs1[i],PETSC_NULL);CHKERRQ(ierr); }
 
 
 
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     Test operations
     Test operations
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
 
 
Line 118... Line 122...
  ierr = MatDenseRestoreArray(C,&v);CHKERRQ(ierr);
  ierr = MatDenseRestoreArray(C,&v);CHKERRQ(ierr);
  PetscLogStagePop();
  PetscLogStagePop();
 
 
  ierr = PetscLogStageRegister("Update",&supdate);CHKERRQ(ierr);
  ierr = PetscLogStageRegister("Update",&supdate);CHKERRQ(ierr);
  ierr = PetscLogStagePush(supdate);CHKERRQ(ierr);
  ierr = PetscLogStagePush(supdate);CHKERRQ(ierr);
  ierr = MatDenseSetSizes(A,0,0,m,n);CHKERRQ(ierr);
 
  ierr = MatDenseDuplicate(A,MATDENSE_MAKE_SIBLING,&D);CHKERRQ(ierr);
 
  ierr = MatDenseSetSizes(D,0,0,m,n);CHKERRQ(ierr);
 
  ierr = MatDenseSetSizes(C,0,0,n,n);CHKERRQ(ierr);
  ierr = MatDenseSetSizes(C,0,0,n,n);CHKERRQ(ierr);
  for (i=0; i<reps; i++) { ierr = MatDenseMatMult(D,1.0,0.0,A,PETSC_FALSE,C,PETSC_FALSE);CHKERRQ(ierr); }
 
  ierr = MatDenseDestroy(&D);CHKERRQ(ierr);
 
  ierr = MatDenseGetArray(C,&v);CHKERRQ(ierr);
  ierr = MatDenseGetArray(C,&v);CHKERRQ(ierr);
  for (i=0; i<reps; i++) {
  for (i=0; i<reps; i++) {
    ierr = SlepcUpdateVectors(n,vecs0,0,n,v,m,PETSC_FALSE);CHKERRQ(ierr);
    ierr = SlepcUpdateVectors(n,vecs0,0,n,v,m,PETSC_FALSE);CHKERRQ(ierr);
 
    for (j=0; j<n; j++) { ierr = VecAXPY(vecs0[j],1.0,vecs1[j]);CHKERRQ(ierr); }
 
  }
 
  ierr = MatDenseRestoreArray(C,&v);CHKERRQ(ierr);
 
  PetscLogStagePop();
 
 
 
  ierr = PetscLogStageRegister("Update Orig.",&supdateo);CHKERRQ(ierr);
 
  ierr = PetscLogStagePush(supdateo);CHKERRQ(ierr);
 
  ierr = MatDenseSetSizes(C,0,0,n,n);CHKERRQ(ierr);
 
  ierr = MatDenseGetArray(C,&v);CHKERRQ(ierr);
 
  for (i=0; i<reps; i++) {
 
    ierr = SlepcUpdateVectors(n,vecso,0,n,v,m,PETSC_FALSE);CHKERRQ(ierr);
 
    for (j=0; j<n; j++) { ierr = VecAXPY(vecso[j],1.0,vecs1[j]);CHKERRQ(ierr); }
  }
  }
  ierr = MatDenseRestoreArray(C,&v);CHKERRQ(ierr);
  ierr = MatDenseRestoreArray(C,&v);CHKERRQ(ierr);
  PetscLogStagePop();
  PetscLogStagePop();
 
 
  ierr = MatDenseDestroy(&A);CHKERRQ(ierr);
  ierr = MatDenseDestroy(&A);CHKERRQ(ierr);
  ierr = MatDenseDestroy(&B);CHKERRQ(ierr);
  ierr = MatDenseDestroy(&B);CHKERRQ(ierr);
  ierr = MatDenseDestroy(&C);CHKERRQ(ierr);
  ierr = MatDenseDestroy(&C);CHKERRQ(ierr);
  ierr = VecDestroyVecs(n,&vecs0);CHKERRQ(ierr);
  ierr = VecDestroyVecs(n,&vecs0);CHKERRQ(ierr);
  ierr = VecDestroyVecs(n,&vecs1);CHKERRQ(ierr);
  ierr = VecDestroyVecs(n,&vecs1);CHKERRQ(ierr);
 
  ierr = VecDestroyVecs(n,&vecso);CHKERRQ(ierr);
  ierr = SlepcFinalize();CHKERRQ(ierr);
  ierr = SlepcFinalize();CHKERRQ(ierr);
  return 0;
  return 0;
}
}