Dear All,
This is Ravi Kannan from CFD Research Corporation.
I am trying to solve this Ax=b problem in parallel and serial with no
preconditioner. The A matrix is 3x3. The matrices are identical, as shown by
the PETSCViewerAsciiFormat.
The serial one solves to nearly machine zero in one iteration. The parallel
residual is much higher than zero. MORE IMPORTANTLY, the ghost values are not
updated after the Ksp solve!
Here is the code snippet:
int PetSc::solving(std::vector<double>& sol)
{
#ifdef TIMING_STUDY_ON
bool solver_timing_study=true;
#else
bool solver_timing_study=false;
#endif
PetscLogDouble startsolvingfunc, endsolvingfunc;
_ierr = PetscGetTime(&startsolvingfunc);
VecSetValues(_x,_size,&_id[0],&sol[0],INSERT_VALUES);
PetscLogDouble start, end;
_ierr = PetscGetTime(&start);
_assemblySystem();
_ierr = PetscGetTime(&end);
if(_LSType != mf_base::DIRECT) KSPSetInitialGuessNonzero(_ksp, PETSC_TRU
E);
_ierr = KSPSetTolerances(_ksp,_resNob2,_abstol,1.e+30,_maxits);
PetscLogDouble v1,v2;
_ierr = PetscGetTime(&v1);//CHKERRQ(_ierr);
_ierr = KSPSolve(_ksp,_b,_x);//CHKERRQ(_ierr);
_ierr = PetscGetTime(&v2);//CHKERRQ(_ierr);
_elapsed_time = fabs(v2 - v1);
VecGhostUpdateBegin(_x,INSERT_VALUES,SCATTER_FORWARD);
VecGhostUpdateEnd(_x,INSERT_VALUES,SCATTER_FORWARD);
// z = A*x
_ierr = MatMult(_A,_x,_z);
// z = z - b (which is Ax-b)
_ierr = VecAXPY(_z,-1.0,_b);
_ierr = VecNorm(_z,NORM_2,&_norm);CHKERRQ(_ierr);
_ierr = KSPGetIterationNumber(_ksp,&_iters);CHKERRQ(_ierr);
double flops;
_ierr = PetscGetFlops(&flops); CHKERRQ(_ierr);
// SVM changes 04/02/07
Vec lx;
_ierr = VecGhostGetLocalForm(_x,&lx);
PetscScalar *xx;
//VecGetArray(Vec x,PetscScalar *a[]) :Remove this later
VecGetArray(lx,&xx); // SVM changes 04/02/07
for(int i=0;i<sol.size();++i){sol[i]=xx[i];}
VecRestoreArray(lx,&xx); // SVM changes 04/02/07
_ierr = VecGhostRestoreLocalForm(_x,&lx);
_ierr = MatZeroEntries(_A);
_ierr = PetscGetTime(&endsolvingfunc);
return 0;
}
Anything wrong with this?
Thanks
Ravi
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130323/21eaa73e/attachment.html>