Ok, let's go with it then. Thanks
Barry On Jul 8, 2010, at 6:59 PM, Satish Balay wrote: > 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> >> >> >> > >
