Re: [eigen] ei_pmul issues |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] ei_pmul issues
- From: "Benoit Jacob" <jacob.benoit.1@xxxxxxxxx>
- Date: Wed, 3 Dec 2008 13:44:11 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=wmTwGvTDsds7+jFFZDu8Il4AKZNj69m7FztzMZBkaWQ=; b=SNPI0I5QliszQ9trzeR2ugifFyndqRXomisutWN2jyH/zHOqREZAa5W9asL798YKjg wynSWxzvfmpmSxXuRoTjZn6SSPzm54DpvqPGhJ9KBcMOy9M/NoBCZl0FVw9TwTDSHwpz 6U7AZFOVCv3as3bSCT6p8xNkFAEw+ztCb3Xeg=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=egO2ZJco2OkrWT1JSj5H7egcPwXvi+Tp6zHQZgZnu9LTR7PbX2KPAWGLDZIilvA2/I dczulTjf8Ztyw84c/4CwcT2ags3RYroOoAZO4Rcx2ADHtkwVWRHSKg2uEYRFLdWQGoAU 0bPTjRPlLX3guoIo1UK1NI+ImtlCfujsVGjJc=
Actually, I tried a small test program, and now I remember better what happens:
- the non-vectorized path tolerates mixing float and double quite well
- the vectorized path (which you are using here, -msse2) doesn't, and
there is no way that it could.
I'm going to add a nice compile-time error when mixing float and
double, so no such surprise happens when enabling vectorization.
Cheers,
Benoit
2008/12/2 Benjamin Schindler <bschindler@xxxxxxxxxxxxxxx>:
> Hi
>
> I can't currently compile some code which compiles cleanly on another
> machine and I haven't been able to figure why...
>
> /home/benjamin/eth/masterarbeit/viewer/libsph/SPHSampler.cpp:222:
> instantiated from here
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Product.h:465: error: no
> matching function for call to 'ei_pmul(float __vector__, double __vector__)'
> make[2]: *** [libsph/CMakeFiles/sph.dir/SPHSampler.cpp.o] Error 1
> make[2]: Leaving directory `/home/benjamin/software/build/viewer-build'
> make[1]: *** [libsph/CMakeFiles/sph.dir/all] Error 2
> make[1]: Leaving directory `/home/benjamin/software/build/viewer-build'
> make: *** [all] Error 2
>
> I attach the complete error. Any idea what's going wrong here? I'm compiling
> with gcc-4.3 with -msse2 -march=native, A pentium-m centrino. On the
> desktop, a core2 duo it compiles cleanly
> Oh, I'm using the latest eigen2 beta
>
> Thanks
> Benjamin
>
>
> [ 18%] Building CXX object libsph/CMakeFiles/sph.dir/SPHSampler.cpp.o
> cd /home/benjamin/software/build/viewer-build/libsph && /usr/bin/c++
> -Dsph_EXPORTS -Wno-deprecated -O2 -g -msse2 -march=native -DNDEBUG -fPIC
> -I/home/benjamin/env/include/vtk-5.2 -I/home/benjamin/env/include/eigen2
> -o CMakeFiles/sph.dir/SPHSampler.cpp.o -c
> /home/benjamin/eth/masterarbeit/viewer/libsph/SPHSampler.cpp
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Product.h: In static member
> function ‘static void Eigen::ei_product_packet_impl<0, 0, Lhs, Rhs,
> PacketScalar, LoadMode>::run(int, int, const Lhs&, const Rhs&,
> PacketScalar&) [with Lhs = Eigen::Map<Eigen::Matrix<float, 10000, 1, 0,
> 10000, 1>, 1>, Rhs = Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3,
> 10000, 0, 3, 10000>, 3, 1, 1, 32> >, PacketScalar = float __vector__, int
> LoadMode = 1]’:
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Product.h:244:
> instantiated from ‘const typename
> Eigen::MatrixBase<Eigen::Product<LhsNested, RhsNested, ProductMode>
>>::PacketScalar Eigen::Product<Lhs, Rhs, ProductMode>::packet(int, int)
> const [with int LoadMode = 1, LhsNested = const
> Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>, 1>&, RhsNested =
> const Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3,
> 10000>, 3, 1, 1, 32> >&, int ProductMode = 0]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Coeffs.h:339:
> instantiated from ‘void Eigen::MatrixBase<Derived>::copyPacket(int, int,
> const Eigen::MatrixBase<OtherDerived>&) [with OtherDerived =
> Eigen::Product<const Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>,
> 1>&, const Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0,
> 3, 10000>, 3, 1, 1, 32> >&, 0>, int StoreMode = 0, int LoadMode = 1, Derived
> = Eigen::Matrix<float, 10000, 3, 0, 10000, 3>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Assign.h:375:
> instantiated from ‘static void Eigen::ei_assign_impl<Derived1, Derived2,
> 2, 2>::run(Derived1&, const Derived2&) [with Derived1 = Eigen::Matrix<float,
> 10000, 3, 0, 10000, 3>, Derived2 = Eigen::Product<const
> Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3, 10000>,
> 3, 1, 1, 32> >&, 0>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Assign.h:405:
> instantiated from ‘Derived& Eigen::MatrixBase<Derived>::lazyAssign(const
> Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Product<const
> Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3, 10000>,
> 3, 1, 1, 32> >&, 0>, Derived = Eigen::Matrix<float, 10000, 3, 0, 10000,
> 3>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Assign.h:420:
> instantiated from ‘static Derived& Eigen::ei_assign_selector<Derived,
> OtherDerived, false, false>::run(Derived&, const OtherDerived&) [with
> Derived = Eigen::Matrix<float, 10000, 3, 0, 10000, 3>, OtherDerived =
> Eigen::Product<const Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>,
> 1>&, const Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0,
> 3, 10000>, 3, 1, 1, 32> >&, 0>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Matrix.h:337:
> instantiated from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _StorageOrder,
> _MaxRows, _MaxCols>::Matrix(const Eigen::MatrixBase<OtherDerived>&) [with
> OtherDerived = Eigen::Product<const Eigen::Map<Eigen::Matrix<float, 10000,
> 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3, 10000>,
> 3, 1, 1, 32> >&, 0>, _Scalar = float, int _Rows = 10000, int _Cols = 3, int
> _StorageOrder = 0, int _MaxRows = 10000, int _MaxCols = 3]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/CwiseBinaryOp.h:90:
> instantiated from ‘Eigen::CwiseBinaryOp<BinaryOp, Lhs,
> Rhs>::CwiseBinaryOp(const Lhs&, const Rhs&, const BinaryOp&) [with BinaryOp
> = Eigen::ei_scalar_sum_op<float>, Lhs = Eigen::Matrix<float, 10000, 10000,
> 0, 10000, 10000>, Rhs = Eigen::Product<const Eigen::Map<Eigen::Matrix<float,
> 10000, 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3,
> 10000>,3, 1, 1, 32> >&, 0>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/CwiseBinaryOp.h:167:
> instantiated from ‘const
> Eigen::CwiseBinaryOp<Eigen::ei_scalar_sum_op<typename
> Eigen::ei_traits<T>::Scalar>, Derived, OtherDerived>
> Eigen::MatrixBase<Derived>::operator+(const
> Eigen::MatrixBase<OtherDerived>&) const [with OtherDerived =
> Eigen::Product<const Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>,
> 1>&, const Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0,
> 3,10000>, 3, 1, 1, 32> >&, 0>, Derived = Eigen::Matrix<float, 10000, 10000,
> 0, 10000, 10000>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/CwiseBinaryOp.h:179:
> instantiated from ‘Derived& Eigen::MatrixBase<Derived>::operator+=(const
> Eigen::MatrixBase<OtherDerived>&) [with OtherDerived = Eigen::Product<const
> Eigen::Map<Eigen::Matrix<float, 10000, 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3, 10000>,
> 3, 1, 1, 32> >&, 0>, Derived = Eigen::Matrix<float, 10000, 10000, 0, 10000,
> 10000>]’
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Matrix.h:243:
> instantiated from ‘Eigen::Matrix<_Scalar, _Rows, _Cols, _StorageOrder,
> _MaxRows, _MaxCols>& Eigen::Matrix<_Scalar, _Rows, _Cols, _StorageOrder,
> _MaxRows, _MaxCols>::operator+=(const Eigen::MatrixBase<OtherDerived>&)
> [with OtherDerived = Eigen::Product<const Eigen::Map<Eigen::Matrix<float,
> 10000, 1, 0, 10000, 1>, 1>&, const
> Eigen::Transpose<Eigen::Block<Eigen::Matrix<double, 3, 10000, 0, 3, 10000>,
> 3, 1, 1, 32> >&, 0>, _Scalar = float, int _Rows = 10000, int _Cols = 10000,
> int _StorageOrder = 0, int _MaxRows = 10000, int _MaxCols = 10000]’
> /home/benjamin/eth/masterarbeit/viewer/libsph/SPHSampler.cpp:224:
> instantiated from here
> /home/benjamin/env/include/eigen2/Eigen/src/Core/Product.h:465: error: no
> matching function for call to ‘ei_pmul(float __vector__, double
> __vector__)’
> make[2]: *** [libsph/CMakeFiles/sph.dir/SPHSampler.cpp.o] Error 1
> make[2]: *** Waiting for unfinished jobs....
> make[2]: Leaving directory `/home/benjamin/software/build/viewer-build'
> make[1]: *** [libsph/CMakeFiles/sph.dir/all] Error 2
> make[1]: Leaving directory `/home/benjamin/software/build/viewer-build'
> make: *** [all] Error 2
>
>
>
---