cschwan / sage-on-gentoo

(Unofficial) Gentoo Overlay for Sage- and Sage-related ebuilds
84 stars 26 forks source link

Perhaps overlinking with gslcblas and openblas_openmp #439

Closed strogdon closed 8 years ago

strogdon commented 8 years ago

I've seen this before (https://github.com/cschwan/sage-on-gentoo/issues/435#issuecomment-246122988).

Gentoo:

ldd -r /usr/lib64/python2.7/site-packages/sage/matrix/matrix_integer_dense.so
    linux-vdso.so.1 (0x00007fff0db35000)
    libiml.so.0 => /usr/lib64/libiml.so.0 (0x00007f520d318000)
    libpari-gmp-2.8.so.0 => /usr/lib64/libpari-gmp-2.8.so.0 (0x00007f520ca9e000)
    libflint.so.13 => /usr/lib64/libflint.so.13 (0x00007f520c52c000)
    libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f520c2b6000)
    libopenblas_openmp.so.0 => /usr/lib64/libopenblas_openmp.so.0 (0x00007f520bcb9000)
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6 (0x00007f520b962000)
    libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007f520b597000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f520b29c000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f520aefc000)
    libgslcblas.so.0 => /usr/lib64/libgslcblas.so.0 (0x00007f520acbf000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f520aabb000)
    libmpfr.so.4 => /usr/lib/libmpfr.so.4 (0x00007f520a85b000)
    libntl-9.8.1.so => /usr/lib/libntl-9.8.1.so (0x00007f520a423000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f520a207000)
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgcc_s.so.1 (0x00007f5209fef000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f520d85c000)
    libgomp.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgomp.so.1 (0x00007f5209dd8000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007f5209bd4000)
    libgf2x.so.1 => /usr/lib64/libgf2x.so.1 (0x00007f52099c5000)
ldd -r /usr/lib64/python2.7/site-packages/sage/matrix/matrix_modn_dense_double.so
    linux-vdso.so.1 (0x00007fff51dff000)
    libfflas.so.1 => /usr/lib64/libfflas.so.1 (0x00007f0742be5000)
    libffpack.so.1 => /usr/lib64/libffpack.so.1 (0x00007f07428f9000)
    libgivaro.so.9 => /usr/lib64/libgivaro.so.9 (0x00007f074269e000)
    libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f0742428000)
    libopenblas_openmp.so.0 => /usr/lib64/libopenblas_openmp.so.0 (0x00007f0741e2b000)
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6 (0x00007f0741ad4000)
    libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007f0741709000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f074140e000)
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgcc_s.so.1 (0x00007f07411f6000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f0740e57000)
    libgslcblas.so.0 => /usr/lib64/libgslcblas.so.0 (0x00007f0740c1a000)
    libgmpxx.so.4 => /usr/lib64/libgmpxx.so.4 (0x00007f0740a12000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f07407f6000)
    libgomp.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgomp.so.1 (0x00007f07405de000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f0743178000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f07403da000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007f07401d7000)
ldd -r /usr/lib64/python2.7/site-packages/sage/matrix/matrix_modn_dense_float.so
    linux-vdso.so.1 (0x00007fffd8bff000)
    libfflas.so.1 => /usr/lib64/libfflas.so.1 (0x00007fd7c8cb5000)
    libffpack.so.1 => /usr/lib64/libffpack.so.1 (0x00007fd7c89c9000)
    libgivaro.so.9 => /usr/lib64/libgivaro.so.9 (0x00007fd7c876e000)
    libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007fd7c84f8000)
    libopenblas_openmp.so.0 => /usr/lib64/libopenblas_openmp.so.0 (0x00007fd7c7efb000)
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libstdc++.so.6 (0x00007fd7c7ba4000)
    libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007fd7c77d9000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fd7c74de000)
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgcc_s.so.1 (0x00007fd7c72c6000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fd7c6f27000)
    libgslcblas.so.0 => /usr/lib64/libgslcblas.so.0 (0x00007fd7c6cea000)
    libgmpxx.so.4 => /usr/lib64/libgmpxx.so.4 (0x00007fd7c6ae2000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd7c68c6000)
    libgomp.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/libgomp.so.1 (0x00007fd7c66ae000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fd7c9248000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fd7c64aa000)
    libutil.so.1 => /lib64/libutil.so.1 (0x00007fd7c62a7000)

Prefix:

ldd -r /storage/strogdon/gentoo-rap/usr/lib64/python2.7/site-packages/sage/matrix/matrix_integer_dense.so
    linux-vdso.so.1 (0x00007ffc6c346000)
    libiml.so.0 => /storage/strogdon/gentoo-rap/usr/lib64/libiml.so.0 (0x00007f8850113000)
    libpari-gmp-2.8.so.0 => /storage/strogdon/gentoo-rap/usr/lib64/libpari-gmp-2.8.so.0 (0x00007f884f8b3000)
    libflint.so.13 => /storage/strogdon/gentoo-rap/usr/lib64/libflint.so.13 (0x00007f884f24f000)
    libgmp.so.10 => /storage/strogdon/gentoo-rap/usr/lib64/libgmp.so.10 (0x00007f884efb1000)
    libopenblas_openmp.so.0 => /storage/strogdon/gentoo-rap/usr/lib64/libopenblas_openmp.so.0 (0x00007f884e867000)
    libstdc++.so.6 => /storage/strogdon/gentoo-rap/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libstdc++.so.6 (0x00007f884e46f000)
    libpython2.7.so.1.0 => /storage/strogdon/gentoo-rap/usr/lib64/libpython2.7.so.1.0 (0x00007f884e044000)
    libm.so.6 => /storage/strogdon/gentoo-rap/lib64/libm.so.6 (0x00007f884dd41000)
    libc.so.6 => /storage/strogdon/gentoo-rap/lib64/libc.so.6 (0x00007f884d9a8000)
    libgslcblas.so.0 => /storage/strogdon/gentoo-rap/usr/lib64/libgslcblas.so.0 (0x00007f884d74a000)
    libdl.so.2 => /storage/strogdon/gentoo-rap/lib64/libdl.so.2 (0x00007f884d546000)
    libmpfr.so.4 => /storage/strogdon/gentoo-rap/usr/lib/libmpfr.so.4 (0x00007f884d2e2000)
    libntl-9.8.1.so => /storage/strogdon/gentoo-rap/usr/lib/libntl-9.8.1.so (0x00007f884cdd8000)
    libpthread.so.0 => /storage/strogdon/gentoo-rap/lib64/libpthread.so.0 (0x00007f884cbbc000)
    libgcc_s.so.1 => /storage/strogdon/gentoo-rap/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libgcc_s.so.1 (0x00007f884c9a6000)
    /storage/strogdon/gentoo-rap/lib64/ld-linux-x86-64.so.2 (0x00007f8850639000)
    libgomp.so.1 => /storage/strogdon/gentoo-rap/usr/lib/gcc/x86_64-pc-linux-gnu/5.4.0/libgomp.so.1 (0x00007f884c785000)
    libutil.so.1 => /storage/strogdon/gentoo-rap/lib64/libutil.so.1 (0x00007f884c582000)
    libgf2x.so.1 => /storage/strogdon/gentoo-rap/usr/lib/libgf2x.so.1 (0x00007f884c35e000)

I only have one of these in Prefix, at least in the sage/matrix/ folder. Is this of concern? It would seem there is some duplication in libraries between gslcblas and openblas. So which one is going to be used - if used? Maybe something needs to be rebuilt. But what?

strogdon commented 8 years ago

gslcblas does not appear when the above are passed through readelf -d so maybe everything is OK?

kiwifb commented 8 years ago

I am aware that things like that must happen if gsl has not been compiled with external-cblas. In that case gslcblas is installed and I think linked against. So code linked against libgsl will bring libgslcblas.

strogdon commented 8 years ago

OK, I see. I did not have things compiled with external-cblas. From output of readelf -d it would appear that the gslcblas is not needed. So I guess everything is OK. I'll close.

kiwifb commented 8 years ago

I should add that ideally we would eat the bullet in the science overlay and have a separate gslcblas ebuild and then gsl would always be using an "external" cblas (which could be eselected to gslcblas). The whole logic could use a bit of revamp. The actual useflag makes assumptions for you.