[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