Barry, I've added patch-vecdotnorm2-query.diff to petsc-31 and ran a couple of builds with tests - and they ran fine.
Satish On Thu, 8 Jul 2010, Barry Smith wrote: > > Satish, > > Can you try to apply solution 1 to 3.1 and see if the tests are ok? > > Barry > > On Jul 8, 2010, at 9:56 AM, Jose E. Roman wrote: > > > > > On 07/07/2010, Barry Smith wrote: > > > >> > >> On Jul 6, 2010, at 9:49 AM, Jose E. Roman wrote: > >> > >>> Dear all, > >>> > >>> We at SLEPc have included a custom implementation of vectors that > >>> emulates block vectors in the spirit of PetscExt: v=[v1' v2']' where v1 > >>> and v2 are PETSc vectors. This is required for some new SLEPc solvers. > >>> With this new type of vectors, we avoid the VecGetArray/VecRestoreArray > >>> operations, which would imply array copies, and overload any other > >>> required operation. The only place outside SLEPc where these vectors are > >>> used is as arguments to KSPSolve. > >>> > >>> The problem is VecDotNorm2, which is used in KSPSolve_BCGS and > >>> KSPSolve_GCR_cycle and invokes VecGetArray. VecDotNorm2 cannot be > >>> overloaded as the other functions, since it is not included in the > >>> _VecOps table. Therefore we cannot use KSP=bcgsl with our new solvers. A > >>> fix for us would be to promote VecDotNorm2 to be a true Vec operation > >> > >> > >> I have no objection to upgrading VecDotNorm2() to be a virtual function. > >> > >> > >>> . If possible, it would be nice that the fix would be included in > >>> petsc-3.1. > >> > >> We really don't like to make such a big change in a patch but if you make > >> the change the change to 3.1 and test it then I have no objection. > >> > >> Barry > >> > >>> > >>> Thanks, > >>> Jose > >>> > >>> PS. We plan to release slepc-3.1 in a few weeks. > >>> > >>> > >> > > > > I am attaching two possible solutions to our problem. > > > > 1) patch-vecdotnorm2-table.diff --> this is the solution suggested > > initially. The problem is that if it is included in petsc-3.1 then the ABI > > will be incompatible with previous patches. > > > > 2) patch-vecdotnorm2-query.diff --> this uses PetscObjectQueryFunction so > > that the functionality can be replaced from outside. You may not like this > > hack but it maintains ABI compatibility. > > > > You may decide to put 2) into petsc-release-3.1 and 1) into petsc-dev. > > > > Note that both patchfiles are with respect to petsc-release-3.1. > > > > Cheers, > > Jose > > > > > > <patch-vecdotnorm2-query.diff><patch-vecdotnorm2-table.diff> > > >
