• ISSM Compilation
  • lib/libISSMModules.so.0: undefined symbol: _Z20PrintfFunctionOnCpu0RKSs

Hi guys,

I got an undefined symbol error copied below today when compiling on CentOS 8.2 using intel compiler 2020 initial release today. Googling this particular function does not return anything at all but I was able to use identical comfigure script to compile it on CentOS7. Therefore I am gonna try my luck here to see if anyone has any clue at all. Same AMD EPYC processor.

issmversion

Invalid MEX-file '/opt/ISSM_src/lib/IssmConfig_matlab.mexa64': /opt/ISSM_src/lib/libISSMModules.so.0: undefined symbol: _Z20PrintfFunctionOnCpu0RKSs

Error in IssmConfig (line 14)
value = IssmConfig_matlab(string);

Error in issmversion (line 13)
disp([IssmConfig('PACKAGE_NAME') ' Version ' IssmConfig('PACKAGE_VERSION')]);

CC=mpiicc CXX=mpiicpc F77=mpiifort F90=mpiifort ./configure \
--prefix=/opt/ISSM_src \
--with-wrappers=no \
--with-petsc-dir="/opt/ISSM_src/externalpackages/petsc/install" \
--with-m1qn3-dir="/opt/ISSM_src/externalpackages/m1qn3/install" \
--with-mpi-include="/opt/intel/2020/impi/2019.6.166/intel64/include" \
--with-mpi-libflags="-lmpi -lmpicxx -lmpifort" \
--with-mkl-libflags="-L/opt/intel/2020/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 -liomp5 -lpthread -lm" \
--with-metis-dir="/opt/ISSM_src/externalpackages/petsc/install" \
--with-mumps-dir="/opt/ISSM_src/externalpackages/petsc/install" \
--with-scalapack-dir="/opt/intel/2020/mkl/lib/intel64" \
--with-cxxoptflags="-O3 -march=core-avx2" \
--with-fortran-lib="-L/opt/intel/2020/compilers_and_libraries/linux/lib/intel64 -lifcore -lifport" \
--with-matlab-dir="/opt/MATLAB/R2020a" \
--with-numthreads=32

    wadewei
    Hi Wade,
    Could you please post the list of external packages that you have installed for this build? I couldn't find a reference to that function either, at the system/user level, the external packages directory of a local build, or online.

      justinquinn
      Hi Justin,

      Thanks for your reply. I compiled cmake, petsc, m1qn3 and triangle and used autotools that comes with CentOS 8. I believe it's autoconf v2.69.

      I can also put the entire trunk on FTP if you need.

        6 days later

        justinquinn
        Not yet.. It was to validate a test server that we may end up purchasing. Building with CentOS 7 and intel compiler 2020 went smoothly but we failed to compile ISSM with CentOS 8. I got overwhelmed as well these days and I haven't figured out what went wrong.

        Any thoughts so far?

          wadewei
          You mentioned FTP, but I don't know that I'd be able to help directly without SSH access, if I understand what you mean here.

          One think you may try is building MPICH via PETSc (you can refer to externalpackages/petsc/install-3.12-linux.sh for configuration) then update your ISSM configuration: --mpi-include="${ISSM_DIR}/externalpackages/petsc/install/include). I do not have experience compiling ISSM on CentOS + Intel compilers so this is a shot in the dark, but I that symbol name implies that it has to do with parallelism. Note, you will also have to recompile any external packages that rely on MPI, making sure that you first export the paths to the compilers or otherwise supplying them directly to the configuration.

          Please let me know if you need clarification on any of the above.

            justinquinn
            Hi Justin,
            No problem at all with SSH access.
            I will try to compile with MPICH first and see how that compares with intel mpi, provided that it does pass though:-) Do you witness any performance difference between the two mpi?

            Hi Wade,
            I only have experience using MPICH on Linux / Mac, so I cannot really speak to differences in performance. I would suspect that they are comparable though.