[petsc-dev] Problem with the reorganization of complex with clang

Lisandro Dalcin dalcinl at gmail.com
Sun May 16 11:33:06 CDT 2021


This is a know issue with that old GCC v4.8.

Perhaps we should add some code checking for the GCC version macros in the
complex workaround implementation file to skip offending lines (or
everything) ?


On Sun, 16 May 2021 at 18:41, Junchao Zhang <junchao.zhang at gmail.com> wrote:

> I checked and found PetscComplex was correctly defined to std::complex,
> and clang-6.0 was also fine to use GNU C++ library.  The problem was the
> gcc-4.8.5 C++ library clang picked up was a bit old, which conformed to
> C++11. However clang-6.0's default uses C++14, which changed the rules of
> *constexpr.*
> Workarounds include:
>
>    - define PETSC_SKIP_CXX_COMPLEX_FIX  in the offending *.cxx file.
>    - add CXXOPTFLAGS=-std=c++11
>    - update clang-6.o or gcc-4.8.5 (of 2015) on that machine.
>
> --Junchao Zhang
>
>
> On Fri, May 14, 2021 at 10:42 AM Satish Balay <balay at mcs.anl.gov> wrote:
>
>> You can login to: isdp001.cels.anl.gov - using your MCS account
>> credentials [and then setup ~/.ssh/authorized_keys]
>>
>> Satish
>>
>> On Fri, 14 May 2021, Junchao Zhang wrote:
>>
>> > Satish, how to access this machine? I want to know why complex is
>> screwed
>> > up.
>> >
>> > --Junchao Zhang
>> >
>> >
>> > On Thu, May 13, 2021 at 7:08 PM Matthew Knepley <knepley at gmail.com>
>> wrote:
>> >
>> > > Nope. I will use your fix.
>> > >
>> > >   Thanks,
>> > >
>> > >      Matt
>> > >
>> > > On Thu, May 13, 2021 at 7:55 PM Matthew Knepley <knepley at gmail.com>
>> wrote:
>> > >
>> > >> I am going to try just including petscsys.h and see if it works.
>> > >>
>> > >>   Thanks,
>> > >>
>> > >>      Matt
>> > >>
>> > >> On Thu, May 13, 2021 at 6:23 PM Satish Balay <balay at mcs.anl.gov>
>> wrote:
>> > >>
>> > >>> This gets the build going...
>> > >>>
>> > >>> diff --git a/src/sys/dll/cxx/demangle.cxx
>> b/src/sys/dll/cxx/demangle.cxx
>> > >>> index 31810ea15f..793a97d285 100644
>> > >>> --- a/src/sys/dll/cxx/demangle.cxx
>> > >>> +++ b/src/sys/dll/cxx/demangle.cxx
>> > >>> @@ -1,3 +1,4 @@
>> > >>> +#define PETSC_SKIP_COMPLEX
>> > >>>  #include <petsc/private/petscimpl.h>
>> > >>>
>> > >>>  #ifdef PETSC_HAVE_CXXABI_H
>> > >>>
>> > >>> Satish
>> > >>>
>> > >>> On Thu, 13 May 2021, Satish Balay wrote:
>> > >>>
>> > >>> > >         CXX arch-ci-linux-clang-avx/obj/sys/dll/cxx/demangle.o
>> > >>> >
>> > >>> > It is built with a c++ compiler - so __cplusplus should be
>> defined.
>> > >>> [PETSC_HAVE_CXXABI is not defined]
>> > >>> >
>> > >>> > Do you need to build this sourcefile file in a clanguage=C build?
>> > >>> >
>> > >>> > I'm not sure if a c++/complex build  is checked with this
>> compiler.
>> > >>> >
>> > >>> > [eventhough its clang build - I see the compiler is using system
>> > >>> incldues aka from gcc-4.8.5 - so perhaps some things don't work?]
>> > >>> >
>> > >>> > One option is to add the following to this sourcefile:
>> > >>> >
>> > >>> > #define PETSC_SKIP_COMPLEX
>> > >>> >
>> > >>> > Satish
>> > >>> >
>> > >>> >
>> > >>> > On Thu, 13 May 2021, Matthew Knepley wrote:
>> > >>> >
>> > >>> > > In this CI run (linux-clang-avg):
>> > >>> > >
>> > >>> > >   https://gitlab.com/petsc/petsc/-/jobs/1260342204
>> > >>> > >
>> > >>> > > The compile fails building a C++ file, demangle.cxx. It fails
>> at the
>> > >>> first
>> > >>> > > line,
>> > >>> > > including <petsc/private/petscimpl.h>, down in petscsystypes.h.
>> It
>> > >>> bombs
>> > >>> > > during the definition of complex because it looks like the
>> compiler
>> > >>> is not
>> > >>> > > defining __cplusplus, and thus takes the wrong branch. Is this
>> what
>> > >>> is
>> > >>> > > happening?
>> > >>> > > I cannot access this machine.
>> > >>> > >
>> > >>> > >   Thanks,
>> > >>> > >
>> > >>> > >       Matt
>> > >>> > >
>> > >>> > >
>> > >>> >
>> > >>> >
>> > >>>
>> > >>>
>> > >>
>> > >> --
>> > >> 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
>> > >>
>> > >> https://www.cse.buffalo.edu/~knepley/
>> > >> <http://www.cse.buffalo.edu/~knepley/>
>> > >>
>> > >
>> > >
>> > > --
>> > > 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
>> > >
>> > > https://www.cse.buffalo.edu/~knepley/
>> > > <http://www.cse.buffalo.edu/~knepley/>
>> > >
>> >
>>
>>

-- 
Lisandro Dalcin
============
Senior Research Scientist
Extreme Computing Research Center (ECRC)
King Abdullah University of Science and Technology (KAUST)
http://ecrc.kaust.edu.sa/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20210516/b74a7364/attachment.html>


More information about the petsc-dev mailing list