[petsc-dev] adding -fopenmp three times

Jed Brown jedbrown at mcs.anl.gov
Tue Nov 12 19:16:06 CST 2013


Matthew Knepley <knepley at gmail.com> writes:

> I am a little worried. I think Satish put this in there because something
> failed. This is a big
> problem with configure. We really need to reference a certain test (even if
> we cannot
> replicate it) when these changes go in.
>
> The central problem is that there is no internal logic to this. It is just
> a set of jumbled facts
> and scenarios. And we cannot fix it, we just deal. This is also the web
> browser problem.

This is why configure is difficult, though I think a lot of the kludgy
code that goes into BuildSystem comes from not understanding the precise
semantics of the framework.

Barry, do you know what was the rationale for adding the addLinkerFlag
here?

https://bitbucket.org/petsc/petsc/commits/504565928e62d2a531f1584c908a5465d42e9a14

As Matt says (but is easily forgotten), compiler flags are passed to the
linker unless they are excluded.


The issue here is that with the code in the repository now, -fopenmp
gets passed three times on the command line.  It would be less cluttered
to pass it just once, which the diff below achieves.

>
>   Matt
>
>
> On Tue, Nov 12, 2013 at 6:31 PM, Jed Brown <jed at jedbrown.org> wrote:
>
>> Matthew Knepley <knepley at gmail.com> writes:
>>
>> > On Tue, Nov 12, 2013 at 5:36 PM, Jed Brown <jed at jedbrown.org> wrote:
>> >
>> >> How do we make fopenmp only appear once?
>> >>
>> >
>> > I can already explain two of these I think. The compiler gets -openmp,
>> but
>> > so does the linker,
>> > and so the link gets both (by our convention that the linker gets any
>> > compiler flag no explicitly
>> > excluded)
>>
>> Okay to make the change below?  (With this patch, the flag appears only
>> once.)
>>
>> diff --git i/config/PETSc/packages/openmp.py
>> w/config/PETSc/packages/openmp.py
>> index c788d8a..e93217f 100644
>> --- i/config/PETSc/packages/openmp.py
>> +++ w/config/PETSc/packages/openmp.py
>> @@ -39,8 +39,6 @@ class Configure(PETSc.package.NewPackage):
>>          ompflag = flag
>>          break
>>      self.setCompilers.addCompilerFlag(ompflag)
>> -    if self.setCompilers.checkLinkerFlag(ompflag):
>> -      self.setCompilers.addLinkerFlag(ompflag)
>>      self.setCompilers.popLanguage()
>>      if hasattr(self.compilers, 'FC'):
>>        self.setCompilers.pushLanguage('FC')
>> @@ -49,8 +47,6 @@ class Configure(PETSc.package.NewPackage):
>>      if hasattr(self.compilers, 'CXX'):
>>        self.setCompilers.pushLanguage('Cxx')
>>        self.setCompilers.addCompilerFlag(ompflag)
>> -      if self.setCompilers.checkLinkerFlag(ompflag):
>> -        self.setCompilers.addLinkerFlag(ompflag)
>>        self.setCompilers.popLanguage()
>>      # OpenMP threadprivate variables are not supported on all platforms
>> (for e.g on MacOS).
>>      # Hence forcing to configure additionally with --with-pthreadclasses
>> so that pthread
>>
>>
>
>
> -- 
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20131112/8b6a7ad0/attachment.sig>


More information about the petsc-dev mailing list