[petsc-dev] p4est w/o MPI

Barry Smith bsmith at petsc.dev
Fri Apr 16 21:42:58 CDT 2021


  Toby,

   PETSc's MPI-uni has an include file with the MPI names but it attempts to map them all immediately to private PETSc names; the intention is that MPI Uni won't have public MPI symbols in the libraries that can clash with other package's private MPI-uni-like symbols. We may have missed some, of course, that need to be fixed. The idea behind MPI-uni is to live harmoniously  and orthogonally with everyone else's MPI-uni. 

  Barry
 

> On Apr 16, 2021, at 3:36 PM, Isaac, Tobin G <tisaac at cc.gatech.edu> wrote:
> 
> Understandable, p4est has its own minimal pseudo-mpi interface, I'll work with Satish and the other p4est devs to a simple way to keep the MPIUNI / MPIP4EST from colliding.
> 
> ________________________________________
> From: Barry Smith <bsmith at petsc.dev>
> Sent: Friday, April 16, 2021 16:10
> To: Isaac, Tobin G
> Cc: petsc-dev
> Subject: Re: [petsc-dev] p4est w/o MPI
> 
> 
>   Toby,
> 
>     It was never our intention that MPIUNI support any other packages besides PETSc/SLEPc as an "mpi substitute". There are just so many fragile aspects to it. I think it is is best if p4est maintains its own non-MPI version (if it wants to have such as thing) and does not have it involve MPIUNI.
> 
>   Barry
> 
> 
> 
> On Apr 16, 2021, at 12:53 PM, Isaac, Tobin G <tisaac at cc.gatech.edu<mailto:tisaac at cc.gatech.edu>> wrote:
> 
> Hmm.  So if petsc always compiles mpiuni if --with-mpi=0, then it makes me think it should be possible to drop requires(MPI) from p4est, while still passing `--enable-mpi` to p4est.
> 
> Maybe: if mpiuni doesn't provide some esoteric part of MPI that p4est uses, it will break.
> 
> Toby Isaac, Assistant Professor, GTCSE
> 
> ________________________________
> From: Satish Balay <balay at mcs.anl.gov<mailto:balay at mcs.anl.gov>>
> Sent: Friday, April 16, 2021 1:03:55 PM
> To: Isaac, Tobin G <tisaac at cc.gatech.edu<mailto:tisaac at cc.gatech.edu>>
> Cc: petsc-dev <petsc-dev at mcs.anl.gov<mailto:petsc-dev at mcs.anl.gov>>
> Subject: Re: [petsc-dev] p4est w/o MPI
> 
> Thanks! Another issue:
> 
> mpiuni provides mpi.h. And I get the following errors when building PETSc.
> 
> /home/balay/petsc/arch-linux-c-debug/include/sc.h:87:2: error: #error "mpi.h is included.  Use --enable-mpi."
>   87 | #error "mpi.h is included.  Use --enable-mpi."
>      |  ^~~~~
> 
> etc..
> 
> Satish
> 
> 
> On Fri, 16 Apr 2021, Isaac, Tobin G wrote:
> 
>> Yes, `--disable-mpi` should be accepted by p4est.
>> 
>> ________________________________________
>> From: Satish Balay <balay at mcs.anl.gov<mailto:balay at mcs.anl.gov>>
>> Sent: Friday, April 16, 2021 11:47
>> To: Satish Balay via petsc-dev
>> Cc: Isaac, Tobin G
>> Subject: Re: [petsc-dev] p4est w/o MPI
>> 
>> BTW: Is there no --disable-mpi option?
>> 
>> Satish
>> 
>> On Fri, 16 Apr 2021, Satish Balay via petsc-dev wrote:
>> 
>>> MPI pacakge is a bit weird compared to others [as it does this funny thing with MPIUNI].
>>> 
>>> For regular packages - I guess I would use 'if package.found'
>>> 
>>> I guess I should create an MR with this diff.
>>> 
>>> Satish
>>> 
>>> ----
>>> 
>>> diff --git a/config/BuildSystem/config/packages/p4est.py b/config/BuildSystem/config/packages/p4est.py
>>> index e7108b0ab8..40d6797f02 100644
>>> --- a/config/BuildSystem/config/packages/p4est.py
>>> +++ b/config/BuildSystem/config/packages/p4est.py
>>> @@ -24,14 +24,16 @@ class Configure(config.package.GNUPackage):
>>>     self.blasLapack = framework.require('config.packages.BlasLapack',self)
>>>     self.zlib       = framework.require('config.packages.zlib',self)
>>>     self.memalign   = framework.argDB['with-memalign']
>>> -    self.deps       = [self.mpi,self.blasLapack,self.zlib]
>>> +    self.deps       = [self.blasLapack,self.zlib]
>>> +    self.odeps      = [self.mpi]
>>>     return
>>> 
>>>   def formGNUConfigureArgs(self):
>>>     args = config.package.GNUPackage.formGNUConfigureArgs(self)
>>>     if self.argDB['with-p4est-debugging']:
>>>       args.append('--enable-debug')
>>> -    args.append('--enable-mpi')
>>> +    if not self.mpi.usingMPIUni:
>>> +      args.append('--enable-mpi')
>>>     args.append('CPPFLAGS="'+self.headers.toStringNoDupes(self.dinclude)+'"')
>>>     args.append('LIBS="'+self.libraries.toString(self.dlib)+'"')
>>>     args.append('--enable-memalign='+self.memalign)
>>> 
>>> On Fri, 16 Apr 2021, Isaac, Tobin G wrote:
>>> 
>>>> Matt, this is the configure logic I would like, but I don't know how to do it:
>>>> - configure p4est after MPI, but do not require MPI
>>>> - if MPI is present, add the '--enable-mpi' flack in formGNUConfigureArgs(), otherwise omit it.
>>>> 
>>>> ________________________________________
>>>> From: Isaac, Tobin G <tisaac at cc.gatech.edu<mailto:tisaac at cc.gatech.edu>>
>>>> Sent: Friday, April 16, 2021 11:03
>>>> To: Mark Adams; For users of the development version of PETSc
>>>> Subject: Re: [petsc-dev] p4est w/o MPI
>>>> 
>>>> p4est has a mode where it can compile without MPI, I don't know if PETSc is using it, will check.
>>>> 
>>>> ________________________________________
>>>> From: petsc-dev <petsc-dev-bounces at mcs.anl.gov<mailto:petsc-dev-bounces at mcs.anl.gov>> on behalf of Mark Adams <mfadams at lbl.gov<mailto:mfadams at lbl.gov>>
>>>> Sent: Friday, April 16, 2021 10:23
>>>> To: For users of the development version of PETSc
>>>> Subject: [petsc-dev] p4est w/o MPI
>>>> 
>>>> I don't have MPI (Fugaku w/ gcc) and p4est seems to need it. Is there a work around?
>>>> Thanks,
>>>> Mark
>>>> 
>>> 
>> 
> 
> 



More information about the petsc-dev mailing list