hpddm / hpddm

A framework for high-performance domain decomposition methods.
Other
137 stars 35 forks source link

Build error on macOS: `Undefined symbols: "_dpstrf_"` #122

Closed barracuda156 closed 1 week ago

barracuda156 commented 2 weeks ago
mpicxx-mpich-gcc14 /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/bin/schwarz_cpp.o /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/bin/generate_cpp.o -o /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/bin/schwarz_cpp -L/opt/local/lib -lmumps_common -lesmumps -lsmumps -ldmumps -lcmumps -lzmumps -lpord -L/opt/local/lib -larpack -L/opt/local/lib -lscalapack -L/opt/local/lib -lvecLibFort
Undefined symbols:
  "_dpstrf_", referenced from:
      __ZN5HPDDM15IterativeMethod4RRQRILb0EdEEvciiPT0_S3_NS_20underlying_type_specIS2_E4typeERiPiPKS6_S3_RKi in schwarz_cpp.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make: *** [/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/bin/schwarz_cpp] Error 1
make: *** Waiting for unfinished jobs....
mv -f /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/.trash/hpddm_c.Td /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/.trash/hpddm_c.d || true
Undefined symbols:
  "_dpstrf_", referenced from:
      __ZN5HPDDM15IterativeMethod4RRQRILb0EdEEvciiPT0_S3_NS_20underlying_type_specIS2_E4typeERiPiPKS6_S3_RKi in ccD6gzsQ.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make: *** [/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/lib/libhpddm_c.dylib] Error 1
Undefined symbols:
  "_dpstrf_", referenced from:
      __ZN5HPDDM15IterativeMethod4RRQRILb0EdEEvciiPT0_S3_NS_20underlying_type_specIS2_E4typeERiPiPKS6_S3_RKi in ccGGRC4s.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make: *** [/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/lib/libhpddm_python.dylib] Error 1
Undefined symbols:
  "_dpstrf_", referenced from:
      __ZN5HPDDM15IterativeMethod4RRQRILb0EdEEvciiPT0_S3_NS_20underlying_type_specIS2_E4typeERiPiPKS6_S3_RKi in cc3F47Qm.o
ld: symbol(s) not found
collect2: error: ld returned 1 exit status
make: *** [/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0/lib/libhpddm_fortran.dylib] Error 1
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/hpddm-2.3.0" && /usr/bin/make -j6 -w all F90MOD=-J MPICXX=mpicxx-mpich-gcc14 MPICC=mpicc-mpich-gcc14 MPIF90=mpif90-mpich-gcc14 MPIRUN="/opt/local/bin/mpiexec-mpich-gcc14 -np" MUMPS_INCS=-I/opt/local/include PYTHON_INCS=-I/opt/local/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12 ARPACK_LIBS="-L/opt/local/lib -larpack" SCALAPACK_LIBS="-L/opt/local/lib -lscalapack" MUMPS_LIBS="-L/opt/local/lib -lmumps_common -lesmumps -lsmumps -ldmumps -lcmumps -lzmumps -lpord" HYPRE_LIBS="-L/opt/local/lib -lHYPRE" PYTHON_LIBS="-L/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib -lpython3.12" VERSION=2.3.0 CVERSION=2 BLAS_LIBS="-L/opt/local/lib -lvecLibFort" CC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/cc/opt/local/bin/mpicc-mpich-gcc14" CXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/cxx/opt/local/bin/mpicxx-mpich-gcc14" OBJC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/objc/opt/local/bin/gcc-mp-14" OBJCXX="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/objcxx/opt/local/bin/g++-mp-14" FC="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/fc/opt/local/bin/mpif90-mpich-gcc14" F77="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/f77/opt/local/bin/mpif77-mpich-gcc14" F90="/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_hpddm/hpddm/work/compwrap/f90/opt/local/bin/mpif90-mpich-gcc14" INSTALL="/usr/bin/install -c" 
Exit code: 2
prj- commented 2 weeks ago

It seems you are not linking LAPACK, is that intentional? Or is it bundled in vecLibFort?

barracuda156 commented 2 weeks ago

It seems you are not linking LAPACK, is that intentional? Or is it bundled in vecLibFort?

Yes, vecLibFort is simply an interface to Accelerate with some compatibility fixes, so it includes Apple version of LAPACK. It seems that this symbol was not included in earlier versions of Accelerate (I don’t know how to check which macOS version got it first).

If adding a fallback is problematic, perhaps we have to use OpenBLAS instead of Accelerate.

prj- commented 2 weeks ago

This symbol has been in the library for more than 8 years. I've had no issue building it on my various Macs since then. How old is your system, if I may ask?

barracuda156 commented 2 weeks ago

This symbol has been in the library for more than 8 years. I've had no issue building it on my various Macs since then. How old is your system, if I may ask?

The last macOS to run on PowerPC is from ~2008. I cannot do anything about that :)

We can survive with OpenBLAS, if a local implementation is difficult. (Sorry, I just have no idea if it is: I never dealt with LAPACK code as such.)

prj- commented 2 weeks ago

I see, I definitely never tried the library on a Power Mac. I think these are marked as obsolete by Apple, so I'd rather not push a "proper" fix for this (which may make things more convoluted than they already are). If you have a way to try with a fully-compliant LAPACK implementation, could you let me know if you still run into such an issue?