UBCHREST / ablate

ABLATE is a UB CHREST project focused on leveraging advances in both exascale computing and machine learning to better understand the turbulent mixing and fuel entrainment in the combustion environment that is critical to the operation of hybrid rocket motors.
https://ablate.dev
BSD 3-Clause "New" or "Revised" License
9 stars 33 forks source link

PETSc compile on Quartz with intel compliers #243

Open mmcgurn opened 2 years ago

mmcgurn commented 2 years ago

I'm running into problems compiling with intel compliers and open-cascade. It looks like it is related to the gcc version that the intel complier refers to. I try passing in the latest in the example outlined https://github.com/UBCHREST/ablate/wiki/Build-~-LLNL-Quartz . I now get an error with the PNETCFD make and have attached the configure.log. @knepley or @dsalac have you see this before?

*******************************************************************************
         UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for details):
-------------------------------------------------------------------------------
Error running make; make install on PNETCDF
[configure.log](https://github.com/UBCHREST/ablate/files/8227051/configure.log)
knepley commented 2 years ago

That looks like a C++ error. Do we need PNETCDF? I thought it is only for ExodusII support.

mmcgurn commented 2 years ago

Thanks! I figured out part of the c++/fortran issue and updated the wiki. We need to pass in -gcc-name=/usr/tce/packages/gcc/gcc-10.2.1/bin/gcc -gxx-name=/usr/tce/packages/gcc/gcc-10.2.1/bin/g++ for the c, cpp, and fortran flags. However, Now I'm running into issues with Ctegen

`Error running make on Ctetgen: Could not execute "['/usr/bin/gmake PETSC_DIR=/g/g15/mcgurn4/intelBuild/petsc clean lib PCC_FLAGS="-O0 -fPIC "']": /usr/bin/rm -f libctetgen.a ctetgen.o predicates.o mpicc -O0 -fPIC -I/g/g15/mcgurn4/intelBuild/petsc/include -I/g/g15/mcgurn4/intelBuild/petsc/arch-ablate-opt-intel/include -c -o ctetgen.o ctetgen.cIn file included from ctetgen.h(4), from ctetgen.c(1): /g/g15/mcgurn4/intelBuild/petsc/include/petscsys.h(2555): error: expected a ")" static inline PetscErrorCode PetscSegBufferGetInts(PetscSegBuffer seg,size_t count,PetscInt PETSC_RESTRICT slot) {return PetscSegBufferGet(seg,count,(void**)slot);} ^

In file included from ctetgen.h(4), from ctetgen.c(1): /g/g15/mcgurn4/intelBuild/petsc/include/petscsys.h(2555): error: identifier "slot" is undefined static inline PetscErrorCode PetscSegBufferGetInts(PetscSegBuffer seg,size_t count,PetscInt PETSC_RESTRICT slot) {return PetscSegBufferGet(seg,count,(void**)slot);} ^

ctetgen.c(543): warning #1028: unknown warning specifier`

I'll keep digging into this.
configure.log

knepley commented 2 years ago

Can you execute

mpicc -O0 -fPIC -I/g/g15/mcgurn4/intelBuild/petsc/include -I/g/g15/mcgurn4/intelBuild/petsc/arch-ablate-opt-intel/include -E -o ctetgen.pre ctetgen.c

and look at ctetgen.pre to see why that static inline is a problem? I can't imagine has that is screwed up here. These machines are so frustrating.

mmcgurn commented 2 years ago

I ran ` in the/g/g15/mcgurn4/intelBuild/petsc/arch-ablate-opt-intel/externalpackages/git.ctetgen` directory. There was no output to the screen and this is the resulting ctetgen.pre.txt

It looks like the error is on line 18019 static inline PetscErrorCode PetscSegBufferGetInts(PetscSegBuffer seg,size_t count,PetscInt *restrict *slot) {return PetscSegBufferGet(seg,count,(void**)slot);}

with the *restrict

knepley commented 2 years ago

Okay, this is in petscmacros.h:24-28. It appears that "restrict" is supposed to be a C standard item, but this compiler has a problem. Do you know what compiler is in mpicc?