#26932 closed enhancement (fixed)
Upgrade to givaro4.1.1 fflasffpack2.4.3 linbox1.6.3
Reported by:  Clément Pernet  Owned by:  

Priority:  major  Milestone:  sage8.9 
Component:  packages: standard  Keywords:  
Cc:  François Bissey, Timo Kaufmann  Merged in:  
Authors:  Clément Pernet  Reviewers:  Timo Kaufmann 
Report Upstream:  N/A  Work issues:  
Branch:  ead33ba (Commits, GitHub, GitLab)  Commit:  
Dependencies:  Stopgaps: 
Description (last modified by )
Tarballs of released packages (with appropriate names) can be found at:
 https://github.com/linboxteam/givaro/releases/download/v4.1.1/givaro4.1.1.tar.gz
 https://github.com/linboxteam/fflasffpack/releases/download/2.4.3/fflas_ffpack2.4.3.tar.bz2
 https://github.com/linboxteam/linbox/releases/download/v1.6.3/linbox1.6.3.tar.gz
Example of timing improvements (in seconds) on my laptop running an i78650U
 for random square matrices of order n=4000 over GF(4194301) (22 bits)
develop  #26932  

A * B  3.61  3.57 
A.det()  2.96  1.52 
A.echelonize()  3.59  1.86 
A\b  8.9  5.13 
 for random square matrices of order n=4000 over GF(251) (8 bits)
develop  #26932  

A * B  1.59  1.5 
A.det()  1.54  0.731 
A.echelonize()  1.82  0.692 
A\b  3.7  1.79 
Change History (80)
comment:1 Changed 4 years ago by
Cc:  François Bissey added 

comment:2 Changed 4 years ago by
Milestone:  sage8.6 → sage8.7 

comment:3 Changed 4 years ago by
Branch:  → u/cpernet/upgrade_to_givaro_4_1_0_fflas_ffpack_2_4_0_linbox_1_6_0 

comment:4 Changed 4 years ago by
Commit:  → f7aa5c04a155e8d690a674bd489f43153bd0d467 

Branch pushed to git repo; I updated commit sha1. New commits:
f7aa5c0  fix and clean fetch_int

comment:5 Changed 4 years ago by
Tarballs of released packages (with appropriate names) can be found at:
 https://ljk.imag.fr/membres/Clement.Pernet/soft/givaro4.1.0rc0.tar.gz
 https://ljk.imag.fr/membres/Clement.Pernet/soft/fflas_ffpack2.4.0rc0.tar.bz2
 https://ljk.imag.fr/membres/Clement.Pernet/soft/linbox1.6.0rc0.tar.gz
I'll release the 3 libraries soon, but I meant to check that they could be smoothly updating into sage before hand, therefore this ticket proposes to apply the rc0 versions temporarily. Once everything is in order, I'll cut the releases, and checksums accordingly in this branch.
comment:6 Changed 4 years ago by
Description:  modified (diff) 

comment:7 Changed 4 years ago by
Commit:  f7aa5c04a155e8d690a674bd489f43153bd0d467 → ff8e05871c467be7803fd0457a870f54456c58e6 

Branch pushed to git repo; I updated commit sha1. New commits:
ff8e058  update checksums

comment:8 Changed 4 years ago by
For the record, the branch currently breaks several doctests.
 sage t src/sage/algebras/free_algebra.py # 2 doctests failed sage t src/sage/algebras/letterplace/free_algebra_element_letterplace.pyx # 9 doctests failed sage t src/sage/algebras/letterplace/free_algebra_letterplace.pyx # 3 doctests failed sage t src/sage/coding/bch.py # 2 doctests failed sage t src/sage/coding/extended_code.py # 1 doctest failed sage t src/sage/dynamics/arithmetic_dynamics/generic_ds.py # 4 doctests failed sage t src/sage/schemes/elliptic_curves/isogeny_small_degree.py # 1 doctest failed sage t src/sage/schemes/elliptic_curves/ell_curve_isogeny.py # 1 doctest failed sage t src/sage/schemes/generic/scheme.py # 2 doctests failed sage t src/sage/schemes/curves/projective_curve.py # 9 doctests failed sage t src/sage/schemes/hyperelliptic_curves/hyperelliptic_finite_field.py # 1 doctest failed sage t src/sage/interfaces/sage0.py # 1 doctest failed sage t src/sage/rings/fraction_field.py # 1 doctest failed sage t src/sage/rings/polynomial/multi_polynomial.pyx # 1 doctest failed sage t src/sage/rings/polynomial/flatten.py # 1 doctest failed sage t src/sage/rings/polynomial/multi_polynomial_ideal.py # 5 doctests failed sage t src/sage/rings/polynomial/multi_polynomial_element.py # 1 doctest failed sage t src/sage/crypto/mq/rijndael_gf.py # 73 doctests failed 
Givaro::GFqDom seems to be the culprit. I'm working on it.
comment:9 Changed 4 years ago by
Milestone:  sage8.7 → sage8.8 

Ticket retargeted after milestone closed (if you don't believe this ticket is appropriate for the Sage 8.8 release please retarget manually)
comment:10 Changed 4 years ago by
Commit:  ff8e05871c467be7803fd0457a870f54456c58e6 → e879bfecb479d5290a006de25047495d7887d59b 

Branch pushed to git repo; I updated commit sha1. New commits:
e879bfe  Merge branch 'develop' into t/26932/upgrade_to_givaro_4_1_0_fflas_ffpack_2_4_0_linbox_1_6_0

comment:11 Changed 4 years ago by
For the record, the source of the abovementionned bugs has been identified to a change in givaro GFqDom interface. It has been fixed now, and we can move forward on this ticket.
comment:12 Changed 4 years ago by
I don't suppose any of these are tested on Cygwin? I'm happy to do so if not, I just wondered.
comment:13 Changed 4 years ago by
The 3 libraries are tested on cygwin. We currently have an unsolved bug of fflasffpack which seem to be cygwin specific: https://github.com/linboxteam/fflasffpack/issues/248
However, I personnaly don't have a cygwin box on which I could test this ticket, so I appreciate your proposition to test the ticket once I put it in "needs review", or shortly before doing so.
comment:15 Changed 4 years ago by
Description:  modified (diff) 

comment:16 Changed 4 years ago by
Commit:  e879bfecb479d5290a006de25047495d7887d59b → c11d9cfa23ff9f77681a8f12742f68143eed4504 

comment:17 Changed 4 years ago by
Authors:  → Clément Pernet 

Status:  new → needs_review 
I have just released the 3 libraries and updated the sage bindings accordingly. Sage test suite passes on my box. The ticket is ready for review. I may post later on some benchmarks advertising the performance gain from this update.
comment:18 Changed 4 years ago by
Cc:  Timo Kaufmann added 

comment:19 Changed 4 years ago by
Commit:  c11d9cfa23ff9f77681a8f12742f68143eed4504 → 058bfb34c4ba2cc11ae3dcaca9f0bd2abaa1feb6 

Branch pushed to git repo; I updated commit sha1. New commits:
058bfb3  update to minor version of LinBox

comment:20 Changed 4 years ago by
Description:  modified (diff) 

Summary:  Upgrade to givaro4.1.0 fflasffpack2.4.0 linbox1.6.0 → Upgrade to givaro4.1.0 fflasffpack2.4.0 linbox1.6.1 
Update: I realized that there was a mismatch between the tar.gz on github and the published md5, sha1 and cksum checks. I updated the tar.gz of the three libraries to their actual values on github.
In addition, we fixed some minor issues in the linboxautoinstall and the dependency version checking system and therefore release 1.6.1 consequently. I have thus updated this ticket to linbox1.6.1 accordingly.
comment:21 Changed 4 years ago by
comment:22 Changed 4 years ago by
Thanks for the feedback.
 for the darwin bug, this is a bug in the testsuite file tests/testqlup.C which I just fixed upstream. It does not have any impact on the main library itself.
 for the aarch64 bug, it seems that some SIMD has been detected at configure time by reading hte CPUID (SSE2 enabled), but the definition of the
__m128i
type is absent. The header file with these definition should be included infflasffpack/utils/fflas_intrinsic.h
where I read thatarm_neon.h
gets included. However its seems that the intrinsics there are totally different from the intel/amd ones (I have no experience with ARM). I guess you will hit the same bugs building fflasffpack and givaro don't you? And they probably already existed with linbox1.5.2 fflasffpack2.3.2, givaro4.0.4. As an easy fix I suggest to force disable these SIMD at configure time (disablesse disablesse2
). If noone with experience on ARM and SIMD can help enabling it, I will then autodisable these simd in the configure scripts when ARM target is detected. Bug reported upstream https://github.com/linboxteam/linbox/issues/215
comment:23 Changed 4 years ago by
Ok scratch what I said about the aarch64 problem. I got confused between the 2 logs and did not realized that no SIMD was detected with the aarch64 build. The bug is much simpler, and I think I fixed it upstream. As I can not test it on an aarch64 system, could you confirm that it is now fixed? I built a prerelease https://ljk.imag.fr/membres/Clement.Pernet/soft/linbox1.6.2alpha0.tar.gz for you to test it. It should fix the two above issues.
comment:24 Changed 4 years ago by
Thanks for looking into this!
The tarball you linked wasn't able to run tests (apparently some files are missing: testsmithform.h: No such file or directory
). Instead I'm testing the latest commit on github.
This is running on our CI right now (I don't have direct access to aarch64/darwin myself). You can see the status in the "checks" on this GitHub PR: https://github.com/NixOS/nixpkgs/pull/61535
comment:25 Changed 4 years ago by
I can't believe this one did not get caught earlier. I fixed it upstream and prepared https://ljk.imag.fr/membres/Clement.Pernet/soft/linbox1.6.2alpha1.tar.gz accordingly in case it helps.
comment:26 Changed 4 years ago by
We usually build from the git repository anyways, so it doesn't make much difference.
The aarch64 build succeeded, but darwin is still failing: https://logs.nix.ci/?key=nixos/nixpkgs.61535&attempt_id=da868da30fdc45df98b07cb18ed6f867
comment:27 Changed 4 years ago by
Commit:  058bfb34c4ba2cc11ae3dcaca9f0bd2abaa1feb6 → 4287e026ac4c8d1655b364e5be7a4309224dc7b9 

Branch pushed to git repo; I updated commit sha1. New commits:
4287e02  upgrade to linbox1.6.2

comment:28 Changed 4 years ago by
Description:  modified (diff) 

Summary:  Upgrade to givaro4.1.0 fflasffpack2.4.0 linbox1.6.1 → Upgrade to givaro4.1.0 fflasffpack2.4.0 linbox1.6.2 
I released linbox1.6.2 fixing the bugs raised by ghtimokau and updated the branch accordingly.
comment:30 Changed 4 years ago by
Description:  modified (diff) 

comment:31 Changed 4 years ago by
Description:  modified (diff) 

comment:32 Changed 4 years ago by
Is someone who has already looked at it willing to set this to a positive review? Otherwise I will doublecheck things on my (ubuntu) machine and then flip it positive.
comment:33 Changed 4 years ago by
Reviewers:  → Timo Kaufmann 

Status:  needs_review → positive_review 
Thanks!
comment:34 Changed 4 years ago by
Branch:  u/cpernet/upgrade_to_givaro_4_1_0_fflas_ffpack_2_4_0_linbox_1_6_0 → 4287e026ac4c8d1655b364e5be7a4309224dc7b9 

Resolution:  → fixed 
Status:  positive_review → closed 
comment:35 Changed 4 years ago by
Commit:  4287e026ac4c8d1655b364e5be7a4309224dc7b9 

I was going to report that I had this issue testing linbox in gentoo
x86_64pclinuxgnug++ DHAVE_CONFIG_H I. I.. DLinBoxTestOnly O2 Wall g DNDEBUG U_LB_DEBUG g DNDEBUG U_LB_DEBUG I.. DARCH_X86_64=1 DOPENBLAS___64BIT__=1 DARCH_X86_64=1 DOPENBLAS___64BIT__=1 fopenmp DFFLAS_COMPILED DFFPACK_COMPILED fabiversion=6 I/usr/include/openblas march=native O2 pipe msse msse2 msse3 mssse3 msse4.1 msse4.2 mavx mavx2 mfma c o testserialization.o testserialization.C testserialization.C:32:10: fatal error: linbox/util/serialization.h: No such file or directory 32  #include "linbox/util/serialization.h"  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I see that a fix has been committed in linbox https://github.com/linboxteam/linbox/commit/5a0aac2662969289c50fb9dec2fd2e597a276815 unfortunately it requires a new tarball to be completely fixed since the problem is that some files have not been included in the 1.6.2 tarball [and earlier probably]. What is the ETA for that?
comment:36 followup: 37 Changed 4 years ago by
comment:37 Changed 4 years ago by
Replying to cpernet:
These missing files do not impact the part of LinBox? used in Sage. The compilation failure is in the testsuite. I can release v1.6.3 of LinBox? very shortly if you think it should be fixed for the next sage release. I guess, it will happen in another ticket as this one is now closed.
Yes, I should have said it is in the test suite. I don't know, Volker may choose to reopen if it causes troubles with bots running spkgcheck
on packages.
comment:38 Changed 4 years ago by
Resolution:  fixed 

Status:  closed → new 
comment:39 Changed 4 years ago by
On 32bit the sage library doesn't build:
[sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp: In function ‘long unsigned int __pyx_f_4sage_4libs_6linbox_22linbox_flint_interface_linbox_fmpz_mat_rank(fmpz_mat_struct*)’: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: error: no matching function for call to ‘rank(long unsigned int&, LinBox::DenseMatrix<Givaro::ZRing<Givaro::Integer> >&)’ [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:75:17: note: candidate: template<class Blackbox, class Method, class DomainCategory> size_t& LinBox::rank(size_t&, const Blackbox&, const DomainCategory&, const Method&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, const Blackbox &A, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:75:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:92:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, const Blackbox &A) [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:92:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: cannot convert ‘__pyx_v_r’ (type ‘long unsigned int’) to type ‘size_t& {aka unsigned int&}’ [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:109:17: note: candidate: template<class Blackbox, class Method> size_t& LinBox::rank(size_t&, const Blackbox&, const Method&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, const Blackbox &A, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:109:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 3 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:44:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::Auto&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:44:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:60:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::Elimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:60:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:75:17: note: candidate: template<class Field, class Vector> size_t& LinBox::rank(size_t&, const LinBox::SparseMatrix<_Field, _Storage>&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::Elimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:75:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: ‘LinBox::DenseMatrix<Givaro::ZRing<Givaro::Integer> > {aka LinBox::BlasMatrix<Givaro::ZRing<Givaro::Integer>, std::vector<Givaro::Integer> >}’ is not derived from ‘const LinBox::SparseMatrix<_Field, _Storage>’ [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:503:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::Blackbox&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:503:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:93:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::Wiedemann&) [sagelib8.8.beta7] inline size_t &rank (size_t &res, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:93:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:388:17: note: candidate: template<class Field> size_t& LinBox::rank(size_t&, const LinBox::SparseMatrix<_Field, LinBox::SparseMatrixFormat::SparseSeq>&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::SparseElimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:388:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: ‘LinBox::DenseMatrix<Givaro::ZRing<Givaro::Integer> > {aka LinBox::BlasMatrix<Givaro::ZRing<Givaro::Integer>, std::vector<Givaro::Integer> >}’ is not derived from ‘const LinBox::SparseMatrix<_Field, LinBox::SparseMatrixFormat::SparseSeq>’ [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:400:17: note: candidate: template<class Blackbox, class DomainCategory> size_t& LinBox::rank(size_t&, const Blackbox&, const DomainCategory&, const LinBox::Method::SparseElimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:400:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:413:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::ModularTag&, const LinBox::Method::DenseElimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:413:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:458:17: note: candidate: template<class Blackbox, class MyMethod> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::IntegerTag&, const MyMethod&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:458:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:468:17: note: candidate: template<class Blackbox, class Method> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::RationalTag&, const Method&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:468:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0]))); [sagelib8.8.beta7] ^ [sagelib8.8.beta7] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:131:0, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47, [sagelib8.8.beta7] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.8.beta7] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1233: [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:483:17: note: candidate: template<class Blackbox> size_t& LinBox::rank(size_t&, const Blackbox&, const LinBox::RingCategories::RationalTag&, const LinBox::Method::SparseElimination&) [sagelib8.8.beta7] inline size_t &rank (size_t &r, [sagelib8.8.beta7] ^~~~ [sagelib8.8.beta7] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.inl:483:17: note: template argument deduction/substitution failed: [sagelib8.8.beta7] build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:1792:50: note: candidate expects 4 arguments, 2 provided [sagelib8.8.beta7] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_LBA[0])));
comment:40 Changed 4 years ago by
You may as well get a linbox 1.6.3 in at the same time, me and the other distros that look at testsuite results would be very grateful to have a working testsuite.
comment:41 Changed 4 years ago by
Branch:  4287e026ac4c8d1655b364e5be7a4309224dc7b9 → u/cpernet/4287e026ac4c8d1655b364e5be7a4309224dc7b9 

comment:42 followup: 43 Changed 4 years ago by
Commit:  → bd8b2a0e3c84eaf05db55687b43503457ad9deca 

I am a little confused, the testsuite runs fine on nixos (64 bit). Is it maybe because we fetch directly from the github tag?
Last 10 new commits:
e879bfe  Merge branch 'develop' into t/26932/upgrade_to_givaro_4_1_0_fflas_ffpack_2_4_0_linbox_1_6_0

4a60894  new api for FFPACK::Det

2a99383  fix gfqDom interface

c4f97e1  fix new echelon API in LinBox

eb00dde  update to new echelon API

fbbd37a  update to new Echelon API

c11d9cf  update checksum to the freshly cut releases

058bfb3  update to minor version of LinBox

4287e02  upgrade to linbox1.6.2

bd8b2a0  fix 32 compilation failure for linboxrank

comment:43 Changed 4 years ago by
Replying to ghtimokau:
I am a little confused, the testsuite runs fine on nixos (64 bit). Is it maybe because we fetch directly from the github tag?
Yes. I am using the tarball generated by make sdist
and which is the one linked in the ticket description. A git checkout will test fine but not the generated tarball.
comment:44 Changed 3 years ago by
Commit:  bd8b2a0e3c84eaf05db55687b43503457ad9deca → ddacbf01a64e7830f2ad03f13200c3edff4f0dc5 

Branch pushed to git repo; I updated commit sha1. New commits:
ddacbf0  upgrade to linbox1.6.3 fflasffpack2.4.1 and givaro4.1.1

comment:45 Changed 3 years ago by
Description:  modified (diff) 

Summary:  Upgrade to givaro4.1.0 fflasffpack2.4.0 linbox1.6.2 → Upgrade to givaro4.1.1 fflasffpack2.4.1 linbox1.6.3 
I just released new minor revisions of linbox (1.6.3) fflasffpack (2.4.1) and givaro (4.1.1),
 taking into account the above problems and fixing other minor issues such as
 including the README.md in the distro,
 fixing fflasffpack API for parallel calls from SageMath (in preparation of #27444).
I updated the current branch and ticket accordingly, and it is now again ready for review.
comment:46 Changed 3 years ago by
Status:  new → needs_review 

comment:47 Changed 3 years ago by
Commit:  ddacbf01a64e7830f2ad03f13200c3edff4f0dc5 → f2d1f29dcf5860053d8861a516058cc48e3f5bbb 

Branch pushed to git repo; I updated commit sha1. New commits:
f2d1f29  upgrade to fflasffpack2.4.2 fixing testsuite errors with echlon forms

comment:48 Changed 3 years ago by
Commit:  f2d1f29dcf5860053d8861a516058cc48e3f5bbb → 784815648e9e8bac9c81e6336014f0021d91f853 

Branch pushed to git repo; I updated commit sha1. New commits:
7848156  upgrade do fflasffpack 2.4.3 fixing an error in charpoly autotune

comment:49 Changed 3 years ago by
Description:  modified (diff) 

comment:50 Changed 3 years ago by
Description:  modified (diff) 

comment:51 Changed 3 years ago by
I just did 2 last fixes of some bugs which shamelessly went through the prerelease testing. No more fixes are expected, and the ticket is still open for review, with fflasffpack2.4.3 version (I updated the branch and ticket description accordingly).
comment:52 Changed 3 years ago by
Summary:  Upgrade to givaro4.1.1 fflasffpack2.4.1 linbox1.6.3 → Upgrade to givaro4.1.1 fflasffpack2.4.3 linbox1.6.3 

comment:53 Changed 3 years ago by
Testsuite of givaro, fflasffpack, linbox passes for me on Linux64, osx64 on conda. Any chance we could get this ticket tested and reviewed soon?
comment:54 Changed 3 years ago by
Status:  needs_review → positive_review 

comment:55 Changed 3 years ago by
Milestone:  sage8.8 → sage8.9 

comment:56 Changed 3 years ago by
Status:  positive_review → needs_work 

Doesn't build on 32bit:
Debian 10 32bit:
[sagelib8.9.beta0] [ 5/15] gcc fnostrictaliasing g O2 DNDEBUG g fwrapv O3 Wall Wnounused fPIC I./sage/libs/flint I./sage/cpython I./sage/ext I./sage/libs/ntl I/var/lib/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/cysignals I./sage/rings I/var/lib/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/cypari2 I./sage/rings/finite_rings Isage/cpython I/var/lib/buildbot/slave/sage_git/build/local/include I/var/lib/buildbot/slave/sage_git/build/src I/var/lib/buildbot/slave/sage_git/build/src/sage/ext I/var/lib/buildbot/slave/sage_git/build/local/include/python2.7 I/var/lib/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/numpy/core/include Ibuild/cythonized I/var/lib/buildbot/slave/sage_git/build/local/include/python2.7 c build/cythonized/sage/matrix/matrix_integer_dense.c o build/temp.linuxi6862.7/build/cythonized/sage/matrix/matrix_integer_dense.o fnostrictaliasing DCYTHON_CLINE_IN_TRACEBACK=1 std=c99 g fPIC Wall O2 mmmx msse msse2 msse3 I/var/lib/buildbot/slave/sage_git/build/local/include/m4ri I/var/lib/buildbot/slave/sage_git/build/local/include [sagelib8.9.beta0] In file included from /var/lib/buildbot/slave/sage_git/build/local/include/recint/ruint.h:53, [sagelib8.9.beta0] from /var/lib/buildbot/slave/sage_git/build/local/include/givaro/modularruint.h:14, [sagelib8.9.beta0] from /var/lib/buildbot/slave/sage_git/build/local/include/givaro/modular.h:26, [sagelib8.9.beta0] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:722: [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h: In member function ‘Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::Element& Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::init(Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::Element&, const Givaro::Integer&) const [with _Storage_t = RecInt::ruint<7>; _Compute_t = RecInt::ruint<8>]’: [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:214:65: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] udiv_qrnnd(q.Value, c, a2.Value, a1.Value, b1.Value); [sagelib8.9.beta0] ^ [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:214:65: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] udiv_qrnnd(q.Value, c, a2.Value, a1.Value, b1.Value); [sagelib8.9.beta0] ^ [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] umul_ppmm(d1, d0, q.Value, b0.Value); [sagelib8.9.beta0] ^ [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] umul_ppmm(d1, d0, q.Value, b0.Value); [sagelib8.9.beta0] ^ [sagelib8.9.beta0] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta0] [ 6/15] gcc fnostrictaliasing g O2 DNDEBUG g fwrapv O3 Wall Wnounused fPIC I./sage/cpython I./sage/ext I./sage/libs/flint I./sage/libs/ntl I/var/lib/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/cysignals Isage/libs/flint I/var/lib/buildbot/slave/sage_git/build/local/include I/var/lib/buildbot/slave/sage_git/build/src I/var/lib/buildbot/slave/sage_git/build/src/sage/ext I/var/lib/buildbot/slave/sage_git/build/local/include/python2.7 I/var/lib/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/numpy/core/include Ibuild/cythonized I/var/lib/buildbot/slave/sage_git/build/local/include/python2.7 c build/cythonized/sage/matrix/matrix_integer_sparse.cpp o build/temp.linuxi6862.7/build/cythonized/sage/matrix/matrix_integer_sparse.o fnostrictaliasing DCYTHON_CLINE_IN_TRACEBACK=1 O2 Wall g DNDEBUG U_LB_DEBUG DDISABLE_COMMENTATOR DFFLAS_COMPILED DFFPACK_COMPILED std=gnu++11 mfpmath=sse fabiversion=6 I/var/lib/buildbot/slave/sage_git/build/local/include [sagelib8.9.beta0] cc1plus: warning: SSE instruction set disabled, using 387 arithmetics [sagelib8.9.beta0] error: command 'gcc' failed with exit status 1 [sagelib8.9.beta0] make[4]: *** [Makefile:33: sage] Error 1
Debian 8, 9 32bit:
[sagelib8.9.beta0] [ 6/13] gcc fnostrictaliasing g O2 DNDEBUG g fwrapv O3 Wall Wnounused fPIC I./sage/cpython I./sage/ext I./sage/libs/flint I./sage/libs/ntl I/home/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/cysignals Isage/libs/flint I/home/buildbot/slave/sage_git/build/local/include I/home/buildbot/slave/sage_git/build/src I/home/buildbot/slave/sage_git/build/src/sage/ext I/home/buildbot/slave/sage_git/build/local/include/python2.7 I/home/buildbot/slave/sage_git/build/local/lib/python2.7/sitepackages/numpy/core/include Ibuild/cythonized I/home/buildbot/slave/sage_git/build/local/include/python2.7 c build/cythonized/sage/matrix/matrix_integer_sparse.cpp o build/temp.linuxi6862.7/build/cythonized/sage/matrix/matrix_integer_sparse.o fnostrictaliasing DCYTHON_CLINE_IN_TRACEBACK=1 O2 Wall g DNDEBUG U_LB_DEBUG DDISABLE_COMMENTATOR DFFLAS_COMPILED DFFPACK_COMPILED fpermissive std=gnu++11 mfpmath=sse fabiversion=6 I/home/buildbot/slave/sage_git/build/local/include [sagelib8.9.beta0] build/cythonized/sage/matrix/matrix_integer_sparse.cpp:1:0: warning: SSE instruction set disabled, using 387 arithmetics [sagelib8.9.beta0] /* Generated by Cython 0.29.10 */ [sagelib8.9.beta0] ^ [sagelib8.9.beta0] build/cythonized/sage/matrix/matrix_integer_sparse.cpp: In function ‘PyObject* __pyx_pf_4sage_6matrix_21matrix_integer_sparse_21Matrix_integer_sparse_30_rank_linbox(__pyx_obj_4sage_6matrix_21matrix_integer_sparse_Matrix_integer_sparse*)’: [sagelib8.9.beta0] build/cythonized/sage/matrix/matrix_integer_sparse.cpp:7765:48: error: no matching function for call to ‘rank(long unsigned int&, LinBox::SparseMatrix<Givaro::ZRing<Givaro::Integer> >&)’ [sagelib8.9.beta0] (void)(LinBox::rank(__pyx_v_r, (__pyx_v_M[0]))); [sagelib8.9.beta0] ^ [sagelib8.9.beta0] build/cythonized/sage/matrix/matrix_integer_sparse.cpp:7765:48: note: candidates are: [sagelib8.9.beta0] In file included from /home/buildbot/slave/sage_git/build/local/include/linbox/algorithms/bbcharpoly.h:47:0, [sagelib8.9.beta0] from /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/charpoly.h:34, [sagelib8.9.beta0] from build/cythonized/sage/matrix/matrix_integer_sparse.cpp:4384: [sagelib8.9.beta0] /home/buildbot/slave/sage_git/build/local/include/linbox/solutions/rank.h:75:17: note: template<class Blackbox, class Method, class DomainCategory> size_t& LinBox::rank(size_t&, const Blackbox&, const DomainCategory&, const Method&) [sagelib8.9.beta0] inline size_t &rank (size_t &r, const Blackbox &A, [sagelib8.9.beta0] ^
comment:57 Changed 3 years ago by
Commit:  784815648e9e8bac9c81e6336014f0021d91f853 → 43e1b7f236db20e098450953c90e368ebdcc8dcc 

Branch pushed to git repo; I updated commit sha1. New commits:
43e1b7f  fix ulong>size_t bug in 32 bits debian 8,9

comment:58 Changed 3 years ago by
I pushed a fix to the second bug (size_t vs unsigned long in calling LinBox::rank
). I'm still waiting for a build of sage on a 32 bit ubuntu to finish, to confirm that the bug is no longer there.
As for the first bug, do you confirm that it only shows up in Debian 10 ?
I have no clue what is going on there, and can not reproduce it as I don't have a 32 bit Debian at hand. Looking at other instances of the bug, it seems related to asm code explicitly using some registers (like %ebx) that gcc reserves for PIC offsets. Altough the umul_ppmm
indeed uses some asm code (in reclonglong.h) in does not use %ebx explicitly, and more surprisingly, the other error, for udiv_qrnd
does not involve any asm code.
This part of givaro's code is not used in Sage, so an easy fix is to comment out line 26 of givaro/src/kernel/ring/modular.h
.
comment:59 Changed 3 years ago by
Commit:  43e1b7f236db20e098450953c90e368ebdcc8dcc → b0221421819f534f72a7282fe842737de9fa9702 

Branch pushed to git repo; I updated commit sha1. New commits:
b022142  fix ulong > size_t

comment:60 Changed 3 years ago by
I added a fix to another size_t issue. I confirm that the current branch compiles and passes the testsuite on a 32 bit ubuntu xenial I could have access to.
comment:61 Changed 3 years ago by
Yes, I get the error only on Debian 10 32bit. Thats gcc 8.3.0. My guess would be that all sufficiently new compiler versions fail. The next oldest 32bit machine is Ubuntu 18 / gcc 7.3.0 and that passes.
I don't think the error is about EBX, you are free to use it in inline asm as long as you restore it (at least on gcc >=5 and as long as you don't make function calls / use the PLT).
I haven't tried to figure out which of the many inline asm implementations is selected but various do specify constraints "=&r" (sl)
which maybe be inconsistent (presumably meaning unsatisfyable).
comment:62 Changed 3 years ago by
Branch:  u/cpernet/4287e026ac4c8d1655b364e5be7a4309224dc7b9 → u/isuruf/26932 

Commit:  b0221421819f534f72a7282fe842737de9fa9702 → 8dbef6857366344bcff0b8f789e59fd4b183d23e 
Status:  needs_work → needs_review 
comment:64 Changed 3 years ago by
Ok, I finally got some time to get back to this problem. I doubt the fix above will work (I tried on a 32bit box and it still fails, as recint is also included in fflasffpack).
The problem is that two copies of the file longlong.h from GNU GMP are shipped: one in flint (longlong.h) and one in givaro (reclonglong.h). Flint has stripped down the file to a minimalistic set of definitions while givaro's version is the complete original one.
The problem is that these file define macros in the global namespace and conflict one with the other. I therefore added a #ifdef add_ssaaaa
in givaro's reclonglong.h to yield whenever flint's longlong.h was already included.
However, givaro's forces the NO_ASM macro which skips all ASM dependent defines and makes the calls to umul_ppmm
and other also work on i386 even when passed 64 bits ints. However, flint longlong.h removed the NO_ASM section, and therefore compiles the ASM variants of these routines, thus triggering the compilation failure.
I will fix givaro's reclonglong.h
so that it undefs the symbols conflicting with flint and redefines them in its own way.
comment:65 Changed 3 years ago by
Status:  positive_review → needs_work 

Fix doesn't work, for the record. Still fails with the
[sagelib8.9.beta2] In file included from /var/lib/buildbot/slave/sage_git/build/local/include/recint/ruint.h:53:0, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/givaro/modularruint.h:14, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/givaro/modular.h:26, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/field/fieldtraits.h:30, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/field/gf2.h:40, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/vector/streamgf2.h:77, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/vector/stream.h:872, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/matrix/densematrix/blasmatrix.h:42, [sagelib8.9.beta2] from /var/lib/buildbot/slave/sage_git/build/local/include/linbox/matrix/densematrix.h:79, [sagelib8.9.beta2] from build/cythonized/sage/libs/linbox/linbox_flint_interface.cpp:727: [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h: In member function ‘Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::Element& Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::init(Givaro::Modular<_Storage_t, _Compute_t, typename std::enable_if<(is_same_ruint< <templateparameter11>, <templateparameter12> >::value  is_smaller_ruint< <templateparameter11>, <templateparameter12> >::value)>::type>::Element&, const Givaro::Integer&) const [with _Storage_t = RecInt::ruint<7>; _Compute_t = RecInt::ruint<8>]’: [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:214:65: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta2] udiv_qrnnd(q.Value, c, a2.Value, a1.Value, b1.Value); [sagelib8.9.beta2] ^ [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:214:65: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta2] udiv_qrnnd(q.Value, c, a2.Value, a1.Value, b1.Value); [sagelib8.9.beta2] ^ [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta2] umul_ppmm(d1, d0, q.Value, b0.Value); [sagelib8.9.beta2] ^ [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’ [sagelib8.9.beta2] umul_ppmm(d1, d0, q.Value, b0.Value); [sagelib8.9.beta2] ^ [sagelib8.9.beta2] /var/lib/buildbot/slave/sage_git/build/local/include/recint/rudiv.h:222:45: error: inconsistent operand constraints in an ‘asm’
comment:66 Changed 3 years ago by
Branch:  u/isuruf/26932 → u/cpernet/26932 

comment:67 Changed 3 years ago by
Commit:  8dbef6857366344bcff0b8f789e59fd4b183d23e → ead33baa4ac1b72158dee587c72ac3b4300d96ef 

Status:  needs_work → needs_review 
I pushed a patch to givaro, which basically changes the name on givaro's side of all macros which definition where in conflict between flint (longlong.h) and givaro (reclonglong.h) by prefixing them with recint_
.
This change solves the problem on the 32bit ubuntu machine where I could reproduce the bug.
New commits:
ead33ba  fixing double definition of macros between flint and givaro by isolating givaro's with recint_ prefix

comment:69 Changed 3 years ago by
With this branch and using sagelib built against system libraries, I'm getting
File "/usr/lib/python2.7/sitepackages/sage/matrix/matrix_double_dense.pyx", line 2517, in sage.matrix.matrix_double_dense.Matrix_double_dense.is_unitary Failed example: P.is_unitary(algorithm='orthonormal') Expected: Traceback (most recent call last): ... error: ((lwork==1)(lwork >= MAX(1,2*n))) failed for 3rd keyword lwork: zgees:lwork=0 Got: <BLANKLINE> Traceback (most recent call last): File "/usr/lib/python2.7/sitepackages/sage/doctest/forker.py", line 681, in _run self.compile_and_execute(example, compiler, test.globs) File "/usr/lib/python2.7/sitepackages/sage/doctest/forker.py", line 1105, in compile_and_execute exec(compiled, globs) File "<doctest sage.matrix.matrix_double_dense.Matrix_double_dense.is_unitary[23]>", line 1, in <module> P.is_unitary(algorithm='orthonormal') File "sage/matrix/matrix_double_dense.pyx", line 2568, in sage.matrix.matrix_double_dense.Matrix_double_dense.is_unitary (build/cythonized/sage/matrix/matrix_double_dense.c:16152) _, T = self.schur(base_ring=sage.rings.complex_double.CDF) File "sage/matrix/matrix_double_dense.pyx", line 3268, in sage.matrix.matrix_double_dense.Matrix_double_dense.schur (build/cythonized/sage/matrix/matrix_double_dense.c:19274) T._matrix_numpy, Q._matrix_numpy = scipy.linalg.schur(self._matrix_numpy, output=format) File "/usr/lib/python2.7/sitepackages/scipy/linalg/decomp_schur.py", line 139, in schur result = gees(lambda x: None, a1, lwork=1) ValueError: On entry to ZGEES parameter number 6 had an illegal value
Any ideas?
comment:70 followup: 71 Changed 3 years ago by
Yes. It is not related to this ticket but to the way we sometimes package openblas in distro compared to sage. I have had this doctest failure for several months now. https://github.com/cschwan/sageongentoo/commit/1a5fefec74c222ee5d0673bb439c6d5a3b0c6e1e#commitcomment30999803 has some gory details if you get down in it. The culprit is not so much sage than it is scipy in a way. It is all down to the xerbla
routine effectively used https://github.com/cschwan/sageongentoo/commit/1a5fefec74c222ee5d0673bb439c6d5a3b0c6e1e#commitcomment31035447 and after.
In any case this is not related to this ticket.
comment:71 Changed 3 years ago by
Replying to fbissey:
In any case this is not related to this ticket.
After some investigation, in my case this turned out to be caused by linking fflasffpack with asneeded  apparently this strips a bit too many linked libs. I started linking with asneeded with the 2.4.0 update so that made me think it was related to the upgrade.
comment:72 Changed 3 years ago by
That's very strange because the failure above occurs during a call to a function in scipy. It is supposed to fail but the error message and the point it break is different depending on the version of xerbla
(C or Fortran) used.
comment:73 Changed 3 years ago by
I guess the linking may influence the order things are loaded in memory and privilege a call over another.
comment:74 followup: 75 Changed 3 years ago by
Numpy has a python_xerbla.c
file and a xerbla_
inside which is supposed to override the xerbla from BLAS and give a nice exception. We should create a new ticket for the xerbla issue
comment:75 Changed 3 years ago by
Replying to isuruf:
Numpy has a
python_xerbla.c
file and axerbla_
inside which is supposed to override the xerbla from BLAS and give a nice exception. We should create a new ticket for the xerbla issue
I didn't know that. In that case the overridding is obviously not working under some conditions. Is it a bug in sage, scipy or numpy? Digging this a bit more.
comment:76 Changed 3 years ago by
Actually, the numpy source file you are pointing to gives the error message we see in some sageondistros as opposed to the one seen in vanilla sage. The source file is in two places in numpy. Once in linalg/lapack_lite which seems to indicate that this is used when numpy is configured without an external lapack. The other copy is in core/src/common, it is unclear if it is always compiled or not at this stage.
comment:77 Changed 3 years ago by
I'd say python_xerbla.c
is always compiled. This is from core/src/common/setupy.py
blas_info = get_info('blas_opt', 0) if blas_info and ('HAVE_CBLAS', None) in blas_info.get('define_macros', []): extra_info = blas_info # These files are also in MANIFEST.in so that they are always in # the source distribution independently of HAVE_CBLAS. common_src.extend([join('src', 'common', 'cblasfuncs.c'), join('src', 'common', 'python_xerbla.c'), ]) if uses_accelerate_framework(blas_info): common_src.extend(get_sgemv_fix()) else: extra_info = {}
For those who don't know, numpy's build system sets DHAVE_CBLAS=NONE
when blas/lapack is found :) When no blas/lapack is provided found, HAVE_CBLAS
is undefined.
The xerbla_
symbol is inserted in numpy/core/_multiarray_umath.so
. But from experience the scipy call that can give the differing messages never use that and must load a version from blas/lapack otherwise we would never see this difference.
comment:78 Changed 3 years ago by
Status:  needs_review → positive_review 

Putting this into positive review, so that it's tested again.
comment:79 Changed 3 years ago by
Branch:  u/cpernet/26932 → ead33baa4ac1b72158dee587c72ac3b4300d96ef 

Resolution:  → fixed 
Status:  positive_review → closed 
comment:80 Changed 3 years ago by
Commit:  ead33baa4ac1b72158dee587c72ac3b4300d96ef 

This released fixed
sage: m = diagonal_matrix(ZZ, [2] * 46) sage: m._det_linbox() 70368744177664 sage: m = diagonal_matrix(ZZ, [3] * 100) sage: m._det_linbox() 515377520732011331036461129765621272702107522001
see #28318
Retarging tickets optimistically to the next milestone. If you are responsible for this ticket (either its reporter or owner) and don't believe you are likely to complete this ticket before the next release (8.7) please retarget this ticket's milestone to sagepending or sagewishlist.