Re: [petsc-dev] Problem with the reorganization of complex with clang
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> wrote:
Nope. I will use your fix.
Thanks,
Matt
On Thu, May 13, 2021 at 7:55 PM Matthew Knepley <[email protected]> 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 <[email protected]> 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/
participants (1)
-
Lisandro Dalcin