Re: [petsc-dev] ISLocalToGlobalMappingGetInfo

2019-08-09 Thread Pierre Jolivet via petsc-dev
Nevermind, the first component of the arrays are too frequently used in PCBDDC.
So, I guess, the documentation should be updated by someone who knows what is 
stored there.

Also, it’s not clear to me what would happened with a domain decomposition with 
only non-connected subdomains.
If there are more than a single subdomain, is nproc = 1 or 0 like when there is 
a single subdomain? Cf. 
https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/utils/isltog.c.html#line1012
 
.

Thanks anyway,
Pierre

> On 9 Aug 2019, at 9:35 AM, Pierre Jolivet via petsc-dev 
>  wrote:
> 
> Actually, I don’t think it is a bug, but rather an undocumented feature.
> Someone clearly knew what they were doing when writing this: 
> https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/utils/isltog.c.html#line1379
>  
> 
> Now, the question becomes: is this really needed? Can’t the values associated 
> to "rank" be stripped from the arrays from the get go?
> I’m guessing this also explains why some loop start at 1 and not 0, e.g., 
> https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/utils/isltog.c.html#line1583
>  
> 
> 
> I’ll try to take a crack at it, anyway, now I know that the information I’m 
> looking for is basically all the arrays shifted by 1 and nproc = nproc - 1.
> 
> Thanks,
> Pierre
> 
>> On 9 Aug 2019, at 8:52 AM, Smith, Barry F. > > wrote:
>> 
>> 
>>  The documents and the code indicate that nproc should be 1 in this case. So 
>> there is a bug, if you are unable to determine the cause I can try to look 
>> at it but have stones of things to do.
>> 
>>  Barry
>> 
>> 
>>> On Aug 9, 2019, at 12:37 AM, Pierre Jolivet >> > wrote:
>>> 
>>> Again, with only 2 processes, where nproc is set to 2, I get the following 
>>> numprocs and indices arrays on rank 0:
>>> 0   110 111 112 113 114 115 116 117 … 
>>> 1   110 111 112 113 114 115 116 117 …
>>> Are these the expected values? If so, what is the true definition of nproc, 
>>> please?
>>> 
>>> Thanks,
>>> Pierre
>>> 
 On 9 Aug 2019, at 3:45 AM, Smith, Barry F. >>> > wrote:
 
 
 There could be a bug. Perhaps check the entries for that "extra" 
 connection, are they all actual meaningful connections. The code that 
 fills up these data structures is somewhat involved.
 
 Barry
 
 
> On Aug 8, 2019, at 9:39 AM, Pierre Jolivet via petsc-dev 
> mailto:petsc-dev@mcs.anl.gov>> wrote:
> 
> Hello,
> When I use ISLocalToGlobalMappingGetInfo, e.g., in 
> src/ksp/ksp/examples/tutorials/ex71.c ISLocalToGlobalMappingGetInfo(map, 
> , , , ), I get the following value for nproc:
> - with 1 process: 0
> - with 2 processes: 2
> In the source code, it says that nproc is the “number of processors that 
> are connected to this one”.
> How come this value is equal to the size of the global communicator when 
> using 2 processes?
> According to the comment in the source code, shouldn’t the returned value 
> be 1?
> 
> Thanks,
> Pierre
 
>>> 
>> 
> 



Re: [petsc-dev] ISLocalToGlobalMappingGetInfo

2019-08-09 Thread Pierre Jolivet via petsc-dev
Actually, I don’t think it is a bug, but rather an undocumented feature.
Someone clearly knew what they were doing when writing this: 
https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/utils/isltog.c.html#line1379
 

Now, the question becomes: is this really needed? Can’t the values associated 
to "rank" be stripped from the arrays from the get go?
I’m guessing this also explains why some loop start at 1 and not 0, e.g., 
https://www.mcs.anl.gov/petsc/petsc-current/src/vec/is/utils/isltog.c.html#line1583
 


I’ll try to take a crack at it, anyway, now I know that the information I’m 
looking for is basically all the arrays shifted by 1 and nproc = nproc - 1.

Thanks,
Pierre

> On 9 Aug 2019, at 8:52 AM, Smith, Barry F.  wrote:
> 
> 
>  The documents and the code indicate that nproc should be 1 in this case. So 
> there is a bug, if you are unable to determine the cause I can try to look at 
> it but have stones of things to do.
> 
>  Barry
> 
> 
>> On Aug 9, 2019, at 12:37 AM, Pierre Jolivet  
>> wrote:
>> 
>> Again, with only 2 processes, where nproc is set to 2, I get the following 
>> numprocs and indices arrays on rank 0:
>> 0110 111 112 113 114 115 116 117 … 
>> 1110 111 112 113 114 115 116 117 …
>> Are these the expected values? If so, what is the true definition of nproc, 
>> please?
>> 
>> Thanks,
>> Pierre
>> 
>>> On 9 Aug 2019, at 3:45 AM, Smith, Barry F.  wrote:
>>> 
>>> 
>>> There could be a bug. Perhaps check the entries for that "extra" 
>>> connection, are they all actual meaningful connections. The code that fills 
>>> up these data structures is somewhat involved.
>>> 
>>> Barry
>>> 
>>> 
 On Aug 8, 2019, at 9:39 AM, Pierre Jolivet via petsc-dev 
  wrote:
 
 Hello,
 When I use ISLocalToGlobalMappingGetInfo, e.g., in 
 src/ksp/ksp/examples/tutorials/ex71.c ISLocalToGlobalMappingGetInfo(map, 
 , , , ), I get the following value for nproc:
 - with 1 process: 0
 - with 2 processes: 2
 In the source code, it says that nproc is the “number of processors that 
 are connected to this one”.
 How come this value is equal to the size of the global communicator when 
 using 2 processes?
 According to the comment in the source code, shouldn’t the returned value 
 be 1?
 
 Thanks,
 Pierre
>>> 
>> 
> 



Re: [petsc-dev] ISLocalToGlobalMappingGetInfo

2019-08-09 Thread Smith, Barry F. via petsc-dev

  The documents and the code indicate that nproc should be 1 in this case. So 
there is a bug, if you are unable to determine the cause I can try to look at 
it but have stones of things to do.

  Barry


> On Aug 9, 2019, at 12:37 AM, Pierre Jolivet  
> wrote:
> 
> Again, with only 2 processes, where nproc is set to 2, I get the following 
> numprocs and indices arrays on rank 0:
> 0 110 111 112 113 114 115 116 117 … 
> 1 110 111 112 113 114 115 116 117 …
> Are these the expected values? If so, what is the true definition of nproc, 
> please?
> 
> Thanks,
> Pierre
> 
>> On 9 Aug 2019, at 3:45 AM, Smith, Barry F.  wrote:
>> 
>> 
>> There could be a bug. Perhaps check the entries for that "extra" connection, 
>> are they all actual meaningful connections. The code that fills up these 
>> data structures is somewhat involved.
>> 
>>  Barry
>> 
>> 
>>> On Aug 8, 2019, at 9:39 AM, Pierre Jolivet via petsc-dev 
>>>  wrote:
>>> 
>>> Hello,
>>> When I use ISLocalToGlobalMappingGetInfo, e.g., in 
>>> src/ksp/ksp/examples/tutorials/ex71.c ISLocalToGlobalMappingGetInfo(map, 
>>> , , , ), I get the following value for nproc:
>>> - with 1 process: 0
>>> - with 2 processes: 2
>>> In the source code, it says that nproc is the “number of processors that 
>>> are connected to this one”.
>>> How come this value is equal to the size of the global communicator when 
>>> using 2 processes?
>>> According to the comment in the source code, shouldn’t the returned value 
>>> be 1?
>>> 
>>> Thanks,
>>> Pierre
>> 
>