[petsc-users] Is there a bug in VecRestoreSubVector?

Eric Chamberland Eric.Chamberland at giref.ulaval.ca
Thu Oct 9 11:06:44 CDT 2014


Hi Jed,

I do not have a petsc/dev or petsc/next compiled (I just use petsc 
3.5.2), but Patrick have one for sure.  He should be able to try the 
patch sooner than I.

Patrick, would you give it a try please?

Thanks,

Eric

On 10/09/2014 11:41 AM, Jed Brown wrote:
> Hi, Eric.  Fabian reported this a couple days ago (all, petsc-users is
> preferred so that people can see recent discussion).
>
> Thanks for linking to Patrick's report.  I have extended it to simplify
> the code a bit and reduce synchronization, but I don't have a test case
> handy and I'm about to board a plane.  Could you try 'next' (or
> 'placasse/VecGetSubVector' in petsc.git, which has my follow-up commits)
> to let me know if it works for you.
>
> https://bitbucket.org/petsc/petsc/issue/75/vecrestoresubvector-silently-ignores-non
>
> Eric Chamberland <Eric.Chamberland at giref.ulaval.ca> writes:
>
>> Hi,
>>
>> I noticed it because I got a strange behavior when computing y=Ax with
>> (a wrongly) non-contiguous stride in parallel.  Normally, the
>> VecRestoreSubVector should have exited with an error ("Unhandled case,
>> values have been changed and need to be copied back into X) but didn't,
>> resulting in a silently wrong result (ouch).
>>
>> I corrected my code to define a contiguous stride, which "bypass" the
>> bug in VecRestoreSubVector and now I hopefully compute the correct result.
>>
>> You may be interested by:
>>
>>
>> https://bitbucket.org/placasse/petsc/commits/4e4323587ad9148c29ba9101e5030629f073700c
>>
>> By the way, if I have no local unknowns on a process, shall the stride
>> *always* be considered locally contiguous? (this is my initial error on
>> how to define a stride when no unknowns are locally owned).
>>
>> Thanks,
>>
>> Eric



More information about the petsc-users mailing list