necpp icon indicating copy to clipboard operation
necpp copied to clipboard

cannot build with lapack support

Open nackstein opened this issue 4 years ago • 7 comments

I'm trying to configure with lapack support but I get an error. without lapack support I can build and install.

debugging into the problem I found this: gcc -o conftest -g -O2 -L/usr/lib/lapack/ conftest.c -llapack /usr/lib/gcc/i586-suse-linux/9/../../../../i586-suse-linux/bin/ld: /tmp/ccNWVBxh.o: in function main': /home/vortex/necpp-master/conftest.c:35: undefined reference to clapack_zgetrf' collect2: error: ld returned 1 exit status

readelf -Ws /usr/lib/lapack/liblapack.so.3.8.0 |grep zgetrf 1376: 0016eb00 1163 FUNC GLOBAL DEFAULT 13 zgetrf_ 1642: 00026e00 1403 FUNC GLOBAL DEFAULT 13 zgetrf2_

for what I understand the configure create a conftest.c file and try to link against lapack calling clapack_zgetrf but this function is simply called zgetrf_ in the library. I built lapack myself with rpmbuild on opensuse.

thanks for looking into this issue Luigi

nackstein avatar Sep 09 '19 10:09 nackstein

Your system requires the lapack libraries in order to pass that test. These are available in the libatlas-base-dev package on Debian based systems.

sudo apt-get install libatlas-base-dev

should do the trick if you'd like to compile with lapack accelerated solvers.

tmolteno avatar Nov 14 '19 18:11 tmolteno

Hi, Thank you for the software! ubuntu 18.0.4lts with libatlas-base-dev installed.

checking for clapack_zgetrf in -llapack... no configure: error: in `/src/necpp': configure: error: lapack library test failed (--without-lapack to disable)

It builds with without-lapack ok, but I am trying to model huge files (at least for me - 6000+ wires) and I would like to know how to speed things up.

ly2ss avatar May 23 '20 15:05 ly2ss

Hello all, we have the same issue on CentOS 7:

  • lapack-devel-3.4.2-8.el7.x86_64
  • atlas-devel-3.10.1-12.el7.x86_64
checking for clapack_zgetrf in -llapack... no

configure:16784: checking for clapack_zgetrf in -llapack
configure:16817: gcc -o conftest -I/usr/include   conftest.c -llapack  -llapack -lblas   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lquadmath >&5
/tmp/ccEND97d.o: In function `main':
conftest.c:(.text+0xa): undefined reference to `clapack_zgetrf'

configure: error: in `/usr/src/upstream/nec2-cpp':
configure: error: lapack library test failed (--without-lapack to disable)

It looks like the function might be available in libsatlas or libtatlas, does that make sense?

# rpm -ql atlas-devel-3.10.1-12.el7.x86_64|xargs grep zgetrf
/usr/include/clapack.h:int clapack_zgetrf(const enum CBLAS_ORDER Order, const int M, const int N,
Binary file /usr/lib64/atlas/libsatlas.so matches
Binary file /usr/lib64/atlas/libtatlas.so matches

ewheelerinc avatar Aug 31 '21 04:08 ewheelerinc

Linking to this issue, sounds related: https://github.com/tmolteno/necpp/issues/57

ewheelerinc avatar Aug 31 '21 21:08 ewheelerinc

FYI, this link describes how to patch configure.ac to support OpenBLAS and ATLAS and (probably) fix this issue: https://stackoverflow.com/a/69095758/14055985

I was able to copy the configure.ac content and include PSFEX's .m4 macro files and build it with HAVE_ATLAS and HAVE_OPENBLAS defines, so I know it works for CentOS 7 and probably other distributions too. I've not tried patching necpp but perhaps it will help.

(In my case it built into xnec2c which is an NEC2 implementation independent of necpp, however that project will use dlopen() and dynamically bind based on what is available.)

ewheelerinc avatar Sep 08 '21 05:09 ewheelerinc

In case it is helpful, here is the .c file that xnec2c uses to support LAPACK, OpenBLAS and Intel MKL as shared objects to auto-detect and dynamically link as available:

https://github.com/KJ7LNW/xnec2c/blob/master/src/mathlib.c

ewheelerinc avatar Dec 08 '21 02:12 ewheelerinc

This is still a bug with Ubuntu 20.04. Having to hack the config.ac. Has anyone convert this project to using cmake?

SimplebutComplex avatar Mar 03 '22 16:03 SimplebutComplex