[Python-modules-team] Bug#770838: python-numpy: Import fails with ImportError: /usr/lib/libblas.so.3:, undefined symbol: cgemm3m_nn

Patrick Hallen patrick.hallen at rwth-aachen.de
Mon Nov 24 16:38:22 UTC 2014



On 11/24/2014 05:06 PM, Andrey Rahmatullin wrote:
> I cannot reproduce this with these libblas3 and libopenblas-base.
> Please show:
> 
> readlink -f /usr/lib/libblas.so.3
> ldd -r /usr/lib/libblas.so.3
> nm -D /usr/lib/libblas.so.3 | fgrep cgemm3m_nn
> nm -D /usr/lib/libopenblas.so.0 | fgrep cgemm3m_nn
> 

$ readlink -f /usr/lib/libblas.so.3
/usr/lib/openblas-base/libblas.so.3

$ ldd -r /usr/lib/libblas.so.3
	linux-vdso.so.1 (0x00007ffff75dd000)
	libopenblas.so.0 => /usr/local/lib/libopenblas.so.0 (0x00007f98b1e3f000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f98b1b3e000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007f98b1920000)
	libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3
(0x00007f98b1602000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f98b1259000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f98b41d2000)
	libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0
(0x00007f98b101b000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f98b0e05000)
undefined symbol: cgemm3m_nn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_tn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_rn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_cn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_nt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_tt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_rt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_ct	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_nr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_tr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_rr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_cr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_nc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_tc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_rc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_cc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_nn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_tn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_rn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_cn	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_nt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_tt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_rt	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_ct	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_nr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_tr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_rr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_cr	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_nc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_tc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_rc	(/usr/lib/libblas.so.3)
undefined symbol: cgemm3m_thread_cc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_nn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_tn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_rn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_cn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_nt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_tt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_rt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_ct	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_nr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_tr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_rr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_cr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_nc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_tc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_rc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_cc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_nn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_tn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_rn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_cn	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_nt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_tt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_rt	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_ct	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_nr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_tr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_rr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_cr	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_nc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_tc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_rc	(/usr/lib/libblas.so.3)
undefined symbol: zgemm3m_thread_cc	(/usr/lib/libblas.so.3)

$ nm -D /usr/lib/libblas.so.3 | fgrep cgemm3m_nn
                 U cgemm3m_nn
$ nm -D /usr/lib/libopenblas.so.0 | fgrep cgemm3m_nn
0000000000210b10 T cgemm3m_nn

/usr/lib/libblas.so.3 points to /usr/lib/openblas-base/libblas.so.3 via
/etc/alternatives/libblas.so.3. When I manually change this link to
point to /usr/lib/libopenblas.so.0, importing numpy works (as one would
expect from nm's output). /usr/lib/libopenblas.so.0 points to
/usr/lib/libopenblasp-r0.2.12.so.

I don't know why Debian's alternatives system decided to point to
/usr/lib/openblas-base/libblas.so.3 instead of
/usr/lib/libopenblas.so.0, which contains the required symbols. I don't
understand neither why libopenblas/libblas.so.3 doesn't contain all
those ?gemm3m_* symbols on my system. Anyway, this is probably a bug in
libopenblas-base? I tried reinstalling libopenblas-base, but to no avail.



More information about the Python-modules-team mailing list