linbox-team / linbox

LinBox - C++ library for exact, high-performance linear algebra
https://linbox-team.github.io/linbox
GNU Lesser General Public License v2.1
83 stars 28 forks source link

Implementations of some SIMD routines missing for FFT polynomial matrix code #268

Closed ClementPernet closed 3 years ago

ClementPernet commented 3 years ago

When compiling diophantine-solver (just a plain make), I get:

In file included from ../../linbox/algorithms/polynomial-matrix/fft.h:43,
                 from ../../linbox/algorithms/polynomial-matrix/matpoly-mult-fft-wordsize-fast.inl:33,
                 from ../../linbox/algorithms/polynomial-matrix/matpoly-mult-fft.h:369,
                 from ../../linbox/algorithms/polynomial-matrix/polynomial-matrix-domain.h:34,
                 from ../../linbox/algorithms/polynomial-matrix/order-basis.h:41,
                 from ../../linbox/algorithms/block-massey-domain.h:42,
                 from ../../linbox/algorithms/lifting-container.h:45,
                 from ../../linbox/algorithms/./dixon-solver/./dixon-solver-dense.inl:26,
                 from ../../linbox/algorithms/./dixon-solver/dixon-solver-dense.h:363,
                 from ../../linbox/algorithms/rational-solver.h:583,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:26:
../../linbox/algorithms/polynomial-matrix/fft-integral.inl: In member function ‘void LinBox::FFT_base<Field, Simd, typename std::enable_if<(Field::is_elt_integral_v && typename Simd::is_same_element<Field>::value)>::type>::DIT_core_firststeps(LinBox::FFT_base<Field, Simd, typename std::enable_if<(Field::is_elt_integral_v && typename Simd::is_same_element<Field>::value)>::type>::Element*, size_t&, size_t&, const Element*&, const Element*&, const simd_vect_t&, const simd_vect_t&, LinBox::FFTSimdHelper<8>) const’:
../../linbox/algorithms/polynomial-matrix/fft-integral.inl:1196:49: error: ‘unpacklo_intrinsic’ is not a member of ‘Simd256<long unsigned int>’ {aka ‘Simd256_impl<true, true, false, 8>’}
 1196 |                         V3 = Simd256<uint64_t>::unpacklo_intrinsic(V6,V7);
      |                                                 ^~~~~~~~~~~~~~~~~~
../../linbox/algorithms/polynomial-matrix/fft-integral.inl:1197:49: error: ‘unpackhi_intrinsic’ is not a member of ‘Simd256<long unsigned int>’ {aka ‘Simd256_impl<true, true, false, 8>’}
 1197 |                         V4 = Simd256<uint64_t>::unpackhi_intrinsic(V6,V7);
....
cyrilbouvier commented 3 years ago

Which version of fflas-ffpack are you compiling against ? A recent PR changed the name of the unpacklo/unpackhi methods in the SIMD structs.

ClementPernet commented 3 years ago

Oups, my bad, indeed, I did not install my fresh fflas-ffpack-master before testing linbox. It now works fine. I'm closing the issue and making a dependency to fflas-ffpack>=v2.5.