[petsc-dev] DMPlex VecView to HDF5

Adrian Croucher a.croucher at auckland.ac.nz
Wed Feb 28 22:33:31 CST 2018


hi,

I have created a pull request (acroucher/dmplex-hdf5-vecview) with the 
two fixes I came up with to prevent HDF5 DMPlex VecView() crashing when 
one process has no cells on it.

Cheers, Adrian


On 22/02/18 17:12, Adrian Croucher wrote:
>
> hi Matt,
>
>
> On 20/02/18 12:32, Matthew Knepley wrote:
>> On Mon, Feb 19, 2018 at 4:33 PM, Adrian Croucher 
>> <a.croucher at auckland.ac.nz <mailto:a.croucher at auckland.ac.nz>> wrote:
>>
>>     hi Matt
>>
>>     I tried what you suggested and modified
>>     DMPlexGetFieldType_Internal() so that all processes have the same
>>     field type (ft):
>>
>> Yep, this is going to take specifying in the interface that it is 
>> collective. It looks like it might be used as if it is not.
>
> It looks to me like that may not be the problem, actually. I think I 
> may have tracked it down though.
>
> In vec/vec/interface/rvector.c:1280, in VecGetSubVector():
>
>       if (n%bs || bs == 1) bs = -1; /* Do not decide block size if we 
> do not have to */
>
> If there are no cells on one process (n = 0) then n%bs = 0, so if bs > 
> 1 the reassignment bs = -1 doesn't happen.
>
> If I alter it to:
>
>       if (n%bs || bs == 1 || !n) bs = -1; /* Do not decide block size 
> if we do not have to */
>
> then it also sets bs = -1 on the n = 0 process, and it works fine for 
> my case.
>
> I'm not sure I fully understand the purpose of this line though, so 
> don't know if what I've done is always going to be the right thing?
>
> I also wondered if it would be desirable to ensure bs is consistent 
> across all processes, but am not sure what the right value would be in 
> that case. I tried doing an MPI_allreduce() on bs, to find the minimum 
> across processes (so if any were -1 then they all were) and that also 
> worked for my case.
>
> - Adrian
> -- 
> Dr Adrian Croucher
> Senior Research Fellow
> Department of Engineering Science
> University of Auckland, New Zealand
> email:a.croucher at auckland.ac.nz
> tel: +64 (0)9 923 4611

-- 
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: a.croucher at auckland.ac.nz
tel: +64 (0)9 923 4611

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20180301/558c4aaa/attachment.html>


More information about the petsc-dev mailing list