FluidityProject / fluidity

Fluidity
http://fluidity-project.org
Other
362 stars 113 forks source link

error: Unknown petsc major version #342

Closed 100souci closed 2 years ago

100souci commented 2 years ago

Hello,

I'm trying to install Fluidity on a cluster (I'm the admin) using Intel MPI. I already installed it using OpenMPI a few months ago and your help was very useful. But we upgraded our drivers so now I have to recompile it as the previous OpenMPI is incompatible with the new drivers.

I successfully installed petsc but when running configure in the main Fluidity folder I get the following error:

./configure F77=mpif90 FC=mpif90 CXX=mpicxx CC=mpicc CXXFLAGS="-I$PETSC_DIR/include -I/softs/python/3.9.6-shared/include/python3.9 -I/softs/python/3.9.6-shared/lib/python3.9/site-packages/numpy/core/include/numpy -I$VTK_INCLUDE" LIBS="-L$PETSC_DIR/lib -L/softs/python/3.9.6-shared/lib -L$VTK_LIBS" --enable-2d-adaptivity --with-blas-dir=$PETSC_DIR --with-lapack=$PETSC_DIR/lib/liblapack.a --with-hdf5=/softs/hdf5-intel/bin/h5pcc --prefix=$PWD --with-libspud-root=/softs/spud CMAKE_PREFIX_PATH=/softs/SOURCES/Fluidity412/Fluidity
.....
configure: Using PETSC_DIR=/softs/SOURCES/Fluidity412/Fluidity
configure: error: Unknown petsc major version

I did the following to install PETSc:

git clone -b release https://gitlab.com/petsc/petsc.git petsc
cd petsc
git checkout v3.12.5
export PETSC_DIR=$PWD
make PETSC_DIR=/softs/SOURCES/Fluidity412/test/petsc PETSC_ARCH=arch-linux-c-opt all
make PETSC_DIR=/softs/SOURCES/Fluidity412/test/petsc PETSC_ARCH=arch-linux-c-opt install
export PETSC_DIR=/softs/SOURCES/Fluidity412/Fluidity 

I also tried without git checkout v3.12.5 but I get the same error.

I tried to cheat by editing configure and commenting a few lines:

# first check we have the right petsc version
#if ac_fn_c_compute_int "$LINENO" ""PETSC_VERSION_MAJOR"" "PETSC_VERSION_MAJOR"        "#include \"petscversion.h\""; then :

#else
#  as_fn_error $? "Unknown petsc major version" "$LINENO" 5
#fi

#if ac_fn_c_compute_int "$LINENO" ""PETSC_VERSION_MINOR"" "PETSC_VERSION_MINOR"        "#include \"petscversion.h\""; then :

#else
#  as_fn_error $? "Unknown petsc minor version" "$LINENO" 5
#fi

But then I get another error: configure: error: PETSc fortran modules cannot be used. Either it the petsc*.mod files cannot be found, or petsc has been built using a different fortran compiler.

Could you help me please?

Thanks in advance.

stephankramer commented 2 years ago

Could you provide us with the config.log file (that you get for the original error, not the "cheat" attempt), and also the output of

make -s -f petsc_makefile getincludedirs

run from the fluidity source directory (with the same environment including PETSC_DIR and PETSC_ARCH as when you ran configure)

Cheers Stephan

On 07/12/2021 13:48, 100souci wrote:

Hello,

I'm trying to install Fluidity on a cluster (I'm the admin) using Intel MPI. I already installed it using OpenMPI a few months ago and your help was very useful. But we upgraded our drivers so now I have to recompile it as the previous OpenMPI is incompatible with the new drivers.

I successfully installed petsc but when running configure in the main Fluidity folder I get the following error:


./configure F77=mpif90 FC=mpif90 CXX=mpicxx CC=mpicc CXXFLAGS="-I$PETSC_DIR/include -I/softs/python/3.9.6-shared/include/python3.9 -I/softs/python/3.9.6-shared/lib/python3.9/site-packages/numpy/core/include/numpy -I$VTK_INCLUDE" LIBS="-L$PETSC_DIR/lib -L/softs/python/3.9.6-shared/lib -L$VTK_LIBS" --enable-2d-adaptivity --with-blas-dir=$PETSC_DIR --with-lapack=$PETSC_DIR/lib/liblapack.a --with-hdf5=/softs/hdf5-intel/bin/h5pcc --prefix=$PWD --with-libspud-root=/softs/spud CMAKE_PREFIX_PATH=/softs/SOURCES/Fluidity412/Fluidity
.....
configure: Using PETSC_DIR=/softs/SOURCES/Fluidity412/Fluidity
configure: error: Unknown petsc major version```

I did the following to install PETSc:
```git clone -b release https://gitlab.com/petsc/petsc.git petsc
cd petsc
git checkout v3.12.5
export PETSC_DIR=$PWD
make PETSC_DIR=/softs/SOURCES/Fluidity412/test/petsc PETSC_ARCH=arch-linux-c-opt all
make PETSC_DIR=/softs/SOURCES/Fluidity412/test/petsc PETSC_ARCH=arch-linux-c-opt install
export PETSC_DIR=/softs/SOURCES/Fluidity412/Fluidity ```

I also tried without git checkout v3.12.5 but I get the same error.

I tried to cheat by editing configure and commenting a few lines:
```# first check we have the right petsc version
#if ac_fn_c_compute_int "$LINENO" ""PETSC_VERSION_MAJOR"" "PETSC_VERSION_MAJOR"        "#include \"petscversion.h\""; then :

#else
#  as_fn_error $? "Unknown petsc major version" "$LINENO" 5
#fi

#if ac_fn_c_compute_int "$LINENO" ""PETSC_VERSION_MINOR"" "PETSC_VERSION_MINOR"        "#include \"petscversion.h\""; then :

#else
#  as_fn_error $? "Unknown petsc minor version" "$LINENO" 5
#fi```

But then I get another error:
```configure: error: PETSc fortran modules cannot be used. Either it the petsc*.mod files cannot be found, or petsc has been built using a different fortran compiler.```

Could you help me please?

Thanks in advance.
100souci commented 2 years ago

Hello,

# make -s -f petsc_makefile getincludedirs
-I/softs/SOURCES/0812/Fluidity/include

config.log

stephankramer commented 2 years ago

So it seems you're getting linking errors

/softs/intel/clck/2019.10/lib/intel64/libutil.so: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)@GLIBCXX_3.4.20'
/softs/intel/clck/2019.10/lib/intel64/libcpil.so: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'

with the fairly trivial bit of c code (lines 1863-1928 of config.log) in combination with the library flags that come from your petsc build (the output of make -s -f petsc_makefile getlinklibs). So something's not quite right with your petsc build

100souci commented 2 years ago

Ok so I recompiled petsc using gnu8 and now:

# make -s -f petsc_makefile getlinklibs
-Wl,-rpath,/softs/SOURCES/0812/Fluidity/lib -Wl,-rpath,/softs/SOURCES/0812/Fluidity/lib -L/softs/SOURCES/0812/Fluidity/lib -Wl,-rpath,/softs/SOURCES/0812/Fluidity/lib -L/softs/SOURCES/0812/Fluidity/lib -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/lib/debug_mt -L/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/lib/debug_mt -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/lib -L/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/lib -Wl,-rpath,/opt/ohpc/pub/compiler/gcc/8.3.0/lib/gcc/x86_64-pc-linux-gnu/8.3.0 -L/opt/ohpc/pub/compiler/gcc/8.3.0/lib/gcc/x86_64-pc-linux-gnu/8.3.0 -Wl,-rpath,/opt/ohpc/pub/compiler/gcc/8.3.0/lib64 -L/opt/ohpc/pub/compiler/gcc/8.3.0/lib64 -Wl,-rpath,/softs/hdf5-intel/lib -L/softs/hdf5-intel/lib -Wl,-rpath,/softs/intel/clck/2019.10/lib/intel64 -L/softs/intel/clck/2019.10/lib/intel64 -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/libfabric/lib -L/softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/libfabric/lib -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/ipp/lib/intel64 -L/softs/intel/compilers_and_libraries_2020.4.304/linux/ipp/lib/intel64 -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/compiler/lib/intel64_lin -L/softs/intel/compilers_and_libraries_2020.4.304/linux/compiler/lib/intel64_lin -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64_lin -L/softs/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64_lin -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/tbb/lib/intel64/gcc4.8 -L/softs/intel/compilers_and_libraries_2020.4.304/linux/tbb/lib/intel64/gcc4.8 -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/daal/lib/intel64_lin -L/softs/intel/compilers_and_libraries_2020.4.304/linux/daal/lib/intel64_lin -Wl,-rpath,/softs/intel/compilers_and_libraries_2020.4.304/linux/tbb/lib/intel64_lin/gcc4.8 -L/softs/intel/compilers_and_libraries_2020.4.304/linux/tbb/lib/intel64_lin/gcc4.8 -Wl,-rpath,/opt/ohpc/pub/compiler/gcc/8.3.0/lib -L/opt/ohpc/pub/compiler/gcc/8.3.0/lib -lpetsc -lHYPRE -lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord -lscalapack -lumfpack -lklu -lcholmod -lbtf -lccolamd -lcolamd -lcamd -lamd -lsuitesparseconfig -lml -lflapack -lfblas -lzoltan -lptesmumps -lptscotchparmetis -lptscotch -lptscotcherr -lesmumps -lscotch -lscotcherr -lparmetis -lmetis -lm -lz -lX11 -lstdc++ -ldl -lmpifort -lmpi -lrt -lpthread -lgfortran -lm -lgfortran -lm -lgcc_s -lquadmath -lrt -lquadmath -lstdc++ -ldl

But running configure in the Fluidity folder still fails:

./configure F77=mpif90 FC=mpif90 CXX=mpicxx CC=mpicc CXXFLAGS="-I$PETSC_DIR/include -I/softs/python/3.9.6-shared/include/python3.9 -I/softs/python/3.9.6-shared/lib/python3.9/site-packages/numpy/core/include/numpy -I$VTK_INCLUDE" LIBS="-L$PETSC_DIR/lib -L/softs/python/3.9.6-shared/lib -L$VTK_LIBS" --enable-2d-adaptivity --with-blas-dir=$PETSC_DIR --with-lapack=$PETSC_DIR/lib/liblapack.a --with-hdf5=/softs/hdf5-intel/bin/h5pcc --prefix=$PWD --with-libspud-root=/softs/spud CMAKE_PREFIX_PATH=/softs/SOURCES/0812/Fluidity
......
configure: Detected PETSc version "3"."12"
configure: error: PETSc fortran modules cannot be used. Either it the petsc*.mod files cannot be found, or petsc has been built using a different fortran compiler.

I also tried with F77=gfortran FC=gfortran CXX=g++ CC=gcc

The config.log file: config.log

stephankramer commented 2 years ago

The mpif90, mpicxx, mpicc in your path are they actually using gfortran/gcc? According to the config.log it's still using /softs/intel/compilers_and_libraries_2020.4.304/linux/mpi/intel64/bin/mpiifort - which gives you the error you get: you have to use the same fortran compiler when building fluidity as when you use petsc.

Is the error the same when you used F77=gfortran FC=gfortran CXX=g++ CC=gcc ? You might need a mpi library built with gfortran/gcc to actually make this work...

100souci commented 2 years ago

Right, so I changed to F77=ifort FC=ifort CXX=icpc CC=icc

Now I get the following error:

./configure F77=ifort FC=ifort CXX=icpc CC=icc CXXFLAGS="-I$PETSC_DIR/include -I/softs/intel/intelpython3/include -I$VTK_INCLUDE" LIBS="-L$PETSC_DIR/lib -L/softs/intel/intelpython3/lib -L$VTK_LIBS" --enable-2d-adaptivity --with-blas-dir=$PETSC_DIR --with-lapack=$PETSC_DIR/lib/liblapack.a --with-hdf5=/softs/hdf5-intel/bin/h5pcc --prefix=$PWD --with-libspud-root=/softs/spud CMAKE_PREFIX_PATH=/softs/SOURCES/0812/Fluidity
...................
checking consistency of all components of python development environment... no
configure: error: in `/softs/SOURCES/0812/Fluidity':
configure: error:
  Could not link test program to Python. Maybe the main Python library has been
  installed in some non-standard library path. If so, pass it to configure,
  via the LIBS environment variable.
  Example: ./configure LIBS="-L/usr/non-standard-path/python/lib"
  ============================================================================
   ERROR!
   You probably have to install the development version of the Python package
   for your distribution.  The exact name of this package varies among them.
  ============================================================================

See `config.log' for more details

config.log

I use Intel Parallel Studio.

stephankramer commented 2 years ago

I'm a little confused what you're trying to do now: you said you rebuilt petsc with gfortran/gcc. If you want to use that petsc build you can only build fluidity with the same compilers. If you're trying to use a petsc built with icc/ifort you first need to solve what I discussed in my comments 5 hours ago: https://github.com/FluidityProject/fluidity/issues/342#issuecomment-988693063 That's an issue with your petsc build, not with fluidity

In any case, the error you are getting now in fluidity's configure is before the check for petsc, so looks like you've gone backwards. If you are getting this because you've swapped F77=mpif90 FC=mpif90 CXX=mpicxx CC=mpicc (that you were originally, presumably with paths set to some intel parallel suite) with F77=ifort FC=ifort CXX=icpc CC=icc it probably means that the ifort in your path is not the same as the one that mpif90 is using, and this version doesn't play well with your python library.

100souci commented 2 years ago

Thanks, there was a problem with python indeed. Is there a way to install Fluidity without VTK ? I tried ./configure --enable-vtk, --disable-vtk, --enable-vtk=no or 0 but I still get this message:

configure: Checking for VTK automagic.
CMake Error: Problem processing arguments. Aborting.

CMake Error: Problem processing arguments. Aborting.

configure: No VTK automagic
ls: cannot access /usr/include/vtk*: No such file or directory
checking / usability... no
checking / presence... no
checking for /... no
configure: error: Cannot find vtk installation.
configure: error: Configuration of libadaptivity has failed.
Patol75 commented 2 years ago

I think VTK is required, otherwise, you will not be able to output anything from your simulations.

100souci commented 2 years ago

Thank you