Precice 2.3 compile error

  • preCICE version 2.3.0
  • Operating system or platform (centos 7 on login-node of supercomputer cluster)
  • Installation method (building with CMake)
  • Dependency versions (especially compiler, Boost, PETSc, MPI) and if other versions are present.
    GCCcore/6.4.0
    OpenMPI/2.1.2-GCC-6.4.0-2.28
    foss/2018a
    libxml2/2.9.7-GCCcore-6.4.0
    binutils/2.28-GCCcore-6.4.0
    OpenBLAS/0.2.20-GCC-6.4.0-2.28
    bzip2/1.0.6-GCCcore-6.4.0
    ncurses/6.0-GCCcore-6.4.0
    GCC/6.4.0-2.28
    gompi/2018a
    zlib/1.2.11-GCCcore-6.4.0
    CMake/3.13.2-GCCcore-6.4.0
    numactl/2.0.11-GCCcore-6.4.0
    FFTW/3.3.7-gompi-2018a
    Boost/1.70.0-foss-2018a
    hwloc/1.11.8-GCCcore-6.4.0
    ScaLAPACK/2.0.2-gompi-2018a-OpenBLAS-0.2.20
    XZ/5.2.3-GCCcore-6.4.0

cmake -DPRECICE_ALWAYS_VALIDATE_LIBS=ON -DPRECICE_InstallTest=ON -DMPI_CXX_COMPILER=mpic++ -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DEigen3_DIR=/vsc-hard-mounts/leuven-data/327/vsc32782/dummy/eigen-3.4.0/ -DCMAKE_INSTALL_PREFIX=/vsc-hard-mounts/leuven-data/327/vsc32782/dummy/precice_install -DPRECICE_MPICommunication=ON -DPRECICE_PETScMapping=OFF -DPRECICE_PythonActions=OFF … &> log
cmake-log.txt (9.0 KB)
make-log.txt (258.2 KB)

Hi, I keep on running into the same error during the make-process with fmt ‘specialization of struct formatter in different namespace’. In attachment you can find the log-files of the cmake procedure and the make-procedure. I have made earlier versions of precice from source without problem, so therefore I’m puzzled with this error.

Kind regards,
Jurgen

There is a small chance that this is a compiler bug. Could you try a more recent foss toolchain or load a newer version of the GCC compiler in your current toolchain and then compile again? Regarding the foss toolchains, 2020a should be a good starting point as it uses the same compiler as Ubuntu 20.04 LTS so it should be very well tested.

Hi Alexander,

I tried a couple more things and it seems to work now with the clang compiler (version 5.0.0, in combination with GCC 6.4.0, of which a CMake-version, a boost-version & libxml2 version is avaible as a module on the cluster).

Before that, I tried to use only GCC with version 8.3.0 and I built the boost library 1.79 from source with this compiler (as it was not available in this GCC version, CMake & libxml2 were), but when I then built preCICE, I have an error during the make process regarding std::ifstream and std::ofstream… Is this related to the boost I have built?
cmake-log.txt (6.3 KB)
make-log.txt (4.3 KB)

Your boost version could actually be an issue there. I tried to compile preCICE 2.3.0 in a Docker container that uses GCC 8.3.0 and installed boost 1.79 there. This led to the same error as you have observed. Using an older version of Boost (1.65.1 in my case) did not lead to this error when ConnectionInfoPublisher.cpp was compiled.

Hi, boost 1.79.0 is incompatible with preCICE versions prior to 2.4.0, due to some include changes.

This was fixed in the new 2.4.0 release.

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.