#17635: Update Givaro, FFLAS-FFPACK and LinBox
-------------------------------------+-------------------------------------
Reporter: jpflori | Owner:
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-7.1
Component: packages: | Resolution:
standard | Merged in:
Keywords: | Reviewers: François Bissey
Authors: Clement Pernet | Work issues:
Report Upstream: N/A | Commit:
Branch: | f82a77dc434c9e0c93aac406f239285cc140295a
u/cpernet/givaro_fflasffpack_linbox| Stopgaps:
Dependencies: |
-------------------------------------+-------------------------------------
Comment (by cpernet):
Replying to [comment:58 fbissey]:
> OK, more thoughts about `fflas-ffpack`. By default usage of `sse4.1`,
`avx`, `avx2` and `fma` instructions are enabled if found. This is a
problem when building a binary for redistribution as we cannot guarantee
that the target machine will support any instructions found on the
building machine. We need to be able to disable those for binary build
(`SAGE_FAT_BINARY=yes`?).
>
Sure, we could do that. The alternative option would be to do as for the
openblas deb package: have it include all kernel variants and let the
switch happen dynamically depending on the variant of x86 it is run on. I
am not very familiar with this technique and need to investigate how this
can be built.
> Going through `linbox` now. Like `fflas-ffpack`, `openmp` is enabled by
default even without `--enable-openmp` in `spkg-install` but it looks like
it can be disable the standard way to me.
Yes it can, but in `linbox` it will still pass a `-fopenmp` argument to
g++ even if you passed the `--disable-openmp` option at configure time.
You made me find it yesterday, and this is now [https://github.com/linbox-
team/linbox/issues/24].
> `linbox` looks for
> {{{
> LB_CHECK_IML
> LB_CHECK_M4RI
> LB_CHECK_M4RIE
> LB_CHECK_MPFR
> # we nedd mpfr next :
> LB_CHECK_FPLLL
> LB_CHECK_FLINT
>
> LB_CHECK_NTL
> }}}
> but none of these are in `linbox`'s dependencies. Are any of those
actually used?
These are optional dependencies. The long term goal is to have linbox code
that uses these libs when available. For the moment, I think they are
mostly used for benchmarking comparisons, except for `NTL, IML` and
`fplll` used here and there when available.
Passing the `--with-all=` option to configure, as we do, will
automatically enable all these optional dependencies if they are found. We
could be more picky if this causes problems.
> Actually the current version should depend on `ntl` and `iml`
> {{{
> (sage-sh) fbissey@QCD-nzi3:sage-7.0$ ldd -r
local/lib/liblinboxsage.so.0.0.0
> linux-vdso.so.1 (0x00007ffcaf131000)
> libgmpxx.so.8 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libgmpxx.so.8 (0x00007f3f89ea8000)
> libgmp.so.16 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libgmp.so.16 (0x00007f3f89c31000)
> libntl.so.19 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libntl.so.19 (0x00007f3f89810000)
> libcblas.so.3 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libcblas.so.3 (0x00007f3f895ed000)
> libatlas.so.3 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libatlas.so.3 (0x00007f3f88d01000)
> liblinbox.so.0 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/liblinbox.so.0 (0x00007f3f88afa000)
> libgivaro.so.0 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libgivaro.so.0 (0x00007f3f8889d000)
> libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libstdc++.so.6 (0x00007f3f88557000)
> libm.so.6 => /lib64/libm.so.6 (0x00007f3f88253000)
> libc.so.6 => /lib64/libc.so.6 (0x00007f3f87eb8000)
> libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libgcc_s.so.1 (0x00007f3f87ca0000)
> libgf2x.so.1 => /home/fbissey/sandbox/git-
fork/sage-7.0/local/lib/libgf2x.so.1 (0x00007f3f87a8a000)
> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3f8786d000)
> /lib64/ld-linux-x86-64.so.2 (0x0000561bc940b000)
> undefined symbol: maxMagnMP (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: findRNS (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: RNSbound (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: certSolveMP (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: certSolveRedMP (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: nonsingSolvLlhsMM (local/lib/liblinboxsage.so.0.0.0)
> undefined symbol: nonsingSolvRNSMM (local/lib/liblinboxsage.so.0.0.0)
> }}}
> compared to sage-on-gentoo on the same machine
> {{{
> ldd -r /usr/lib64/liblinboxsage.so.0.0.0
> linux-vdso.so.1 (0x00007ffe013bb000)
> libgmpxx.so.4 => /usr/lib64/libgmpxx.so.4 (0x00007f8a84d7a000)
> libgmp.so.10 => /usr/lib64/libgmp.so.10 (0x00007f8a84b09000)
> libntl-9.6.2.so => /usr/lib64/libntl-9.6.2.so (0x00007f8a846e5000)
> libreflapack.so => /usr/lib64/libreflapack.so (0x00007f8a83f03000)
> libopenblas_threads.so.0 => /usr/lib64/libopenblas_threads.so.0
(0x00007f8a8396b000)
> liblinbox.so.0 => /usr/lib64/liblinbox.so.0 (0x00007f8a83763000)
> libgivaro.so.0 => /usr/lib64/libgivaro.so.0 (0x00007f8a83507000)
> libiml.so.0 => /usr/lib64/libiml.so.0 (0x00007f8a832e6000)
> libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libstdc++.so.6 (0x00007f8a82fd6000)
> libm.so.6 => /lib64/libm.so.6 (0x00007f8a82cd2000)
> libc.so.6 => /lib64/libc.so.6 (0x00007f8a82937000)
> libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libgcc_s.so.1 (0x00007f8a8271f000)
> libgf2x.so.1 => /usr/lib64/libgf2x.so.1 (0x00007f8a82509000)
> libgfortran.so.3 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libgfortran.so.3 (0x00007f8a821e0000)
> libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8a81fc4000)
> /lib64/ld-linux-x86-64.so.2 (0x00005557ec4cf000)
> libquadmath.so.0 => /usr/lib/gcc/x86_64-pc-linux-
gnu/4.9.3/libquadmath.so.0 (0x00007f8a81d85000)
> }}}
> Where I had to add `LIBS="-liml"` for things to be completely resolved.
This seems correct: the sage-linbox interface only uses these 2 libs when
found.
Are you saying that the `-liml` option is not passed to gcc even when
`iml` was detected at configure time? This would be another bug then.
--
Ticket URL: <http://trac.sagemath.org/ticket/17635#comment:60>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.