Re: [eigen] any remaining issues blocking beta1, speak up! |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] any remaining issues blocking beta1, speak up!*From*: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>*Date*: Sat, 3 Jul 2010 11:05:35 -0400*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=yqwKNZ96fDBm3SDY8O062hdhQ/tv39vBi/62Ga7PT38=; b=sCaP0loo/DzrWBW98UoVusyal5n0vkO7MyggMLcKpWYaWRnnxYfHH5tA1mI6PGbsu4 5U86qSR550nCwHx32bWVR6aZ6KSf2XVJVH2h6ST1NsY8IUlrd0o040by8YzOJ9GuG9Yi u0Nq+VgvrgCv7WT4edJpTL7/WjvAJUGJOiSFY=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=PUaOCvn9PYqNRiIYLnXaZs2q8q/TAIaZWu2xt/IRSRarA1r4UqrwBciIekWHfWsnsv OAGzU99fIqaSm1za1pn5/35hMrXQWwG7CequwCzM8RJHMtcfA6lf+x7XZi3eE3cxzyv4 1D9raQtqvITi05gc03lzUo9XkpIpH5zPumwrE=

Gael: could you add your 1st example as a unit test? I understand that other tests catch the issue already, but having this simple test case can help in the future. 2010/7/3 Benoit Jacob <jacob.benoit.1@xxxxxxxxx>: > I really can't reproduce on linux x86-64 with GCC 4.3. > > I tried compiling with -fstrict-aliasing and also with -O2 > I tried both your versions, reading the program's return value like this: > > ##### 10:53:39 ~/build/eigen$ g++-4.3 z.cpp -o z -I ~/eigen -O2 && ./z > && echo "zero" > zero > > Benoit > > > > 2010/7/3 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>: >> no warning. >> >> >> here is an simpler version: >> >> #include <iostream> >> #include <Eigen/Dense> >> >> int main() >> { >> Eigen::Matrix<float,1,1> v; >> v.setOnes(); >> return (v.cwiseAbs()-v).sum(); >> } >> >> I have also simplified CwiseBinaryOp, such that the coeff(int) >> function is directly implemented in CwiseBinaryOp (not in the base >> class CwiseBinaryOpImpl) and such that it simply does: >> >> return m_rhs.coeff(0); >> >> which, in this example, should return v.coeff(0) == 1; >> >> (so the left hand side and the functor are not used, but I remove >> them then the issue disappear). >> >> I've also changed the functor by an object of type: >> >> struct foo { >> foo() : x(1) {} >> int x; >> }; >> >> just be sure the issue does not come from our empty functors. No success.. >> >> If the left hand side (here v.cwiseAbs(), which is not used) is nested >> by reference, then the issue disappear. >> >> Also, m_rhs().data() is wrong. >> >> ... >> >> gael >> >> On Sat, Jul 3, 2010 at 3:55 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote: >>> Can you try compiling with >>> >>> -Wstrict-aliasing=1 >>> >>> indeed, the default value is 3, and 1 is the most aggressive warning >>> level. It could however report a lot of false positives. According to >>> `man gcc`. >>> >>> Benoit >>> >>> 2010/7/3 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>: >>>> here is a simplified version: >>>> >>>> #include <iostream> >>>> #include <Eigen/Dense> >>>> >>>> template<typename A, typename B> EIGEN_DONT_INLINE int foo(const A& a, >>>> const B& b) >>>> { >>>> return (a - b).sum() <= 0; >>>> } >>>> >>>> int main() >>>> { >>>> Eigen::Matrix<float,1,1> v; >>>> v.setOnes(); >>>> return foo(v.colwise().maxCoeff(),v); >>>> } >>>> >>>> which, again, fails with gcc-4.3 + strict-aliasing only.... >>>> investigating to see if I can find a workaround. >>>> >>>> gael >>>> >>>> On Sat, Jul 3, 2010 at 1:03 PM, Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx> wrote: >>>>> On Sat, 3 Jul 2010, Benoit Jacob wrote: >>>>> >>>>>> All is in the title. Can we release beta1 this Saturday? >>>>> >>>>> There is also the stable_norm_1 test that is failing on gcc 4.3. This seems >>>>> to be a mistake in Eigen itself. >>>>> >>>>> See the previous email I wrote: >>>>> >>>>> On Thu, 1 Jul 2010, Jitse Niesen wrote: >>>>>> >>>>>> Date: Thu, 1 Jul 2010 11:02:51 +0100 (BST) >>>>>> From: Jitse Niesen <jitse@xxxxxxxxxxxxxxxxx> >>>>>> To: Eigen mailinglist <eigen@xxxxxxxxxxxxxxxxxxx> >>>>>> Subject: Failing stable_norm_1 test >>>>>> >>>>>> Hello, >>>>>> >>>>>> I just spent some time on the stable_norm_1 test, which fails on both my >>>>>> computer and Gael's computer when using gcc 4.3. It looks similar to the >>>>>> issue >>>>>> which you solved by the empty struct magic (well done!). >>>>>> >>>>>> The details are as follows. I constructed the following (fairly) minimal >>>>>> test >>>>>> example: >>>>>> >>>>>> #include <iostream> >>>>>> #include <Eigen/Dense> >>>>>> >>>>>> int main() >>>>>> { >>>>>> Eigen::Matrix<float,1,1> v; >>>>>> v(0,0) = 0.1; >>>>>> std::cerr << "blue norm = " << v.colwise().blueNorm() << "\n"; >>>>>> std::cerr << "status = " << >>>>>> v.colwise().hypotNorm().isApprox(v.colwise().norm(), 1e-4) << "\n"; >>>>>> } >>>>>> >>>>>> When compiling with g++ (version 4.3.3) -O2 -g and running under valgrind, >>>>>> this >>>>>> produces: >>>>>> >>>>>> Use of uninitialised value of size 4 >>>>>> at 0x8048F28: bool >>>>>> Eigen::DenseBase<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0, 1, >>>>>> 1>, >>>>>> Eigen::ei_member_hypotNorm<float>, 0> >>>>>> >::isApprox<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0, 1, 1>, >>>>>> Eigen::ei_member_norm<float>, 0> >>>>>> >(Eigen::DenseBase<Eigen::PartialReduxExpr<Eigen::Matrix<float, 1, 1, 0, >>>>>> > 1, 1>, >>>>>> Eigen::ei_member_norm<float>, 0> > const&, float) const (in >>>>>> /scratch/1/users/jitse/work/c/eigen/eigenfoo) >>>>>> by 0x8048AF5: main (in /scratch/1/users/jitse/work/c/eigen/eigenfoo) >>>>>> >>>>>> and the same error with the same stack trace a bit later, at 0x8048F2A. >>>>>> >>>>>> The result of the program is also wrong: it should print status = 1, but >>>>>> it >>>>>> says status = 0. >>>>>> >>>>>> The error goes away when compiling with -fno-strict-aliasing. >>>>>> I tried compiling with -Wstrict-aliasing=2 but that does not produce any >>>>>> warnings. >>>>>> >>>>>> Over to the gurus! >>>>>> >>>>>> Cheers, >>>>>> Jitse >>>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> >

**Follow-Ups**:**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Benoit Jacob

**References**:**[eigen] any remaining issues blocking beta1, speak up!***From:*Benoit Jacob

**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Jitse Niesen

**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Gael Guennebaud

**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Benoit Jacob

**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Gael Guennebaud

**Re: [eigen] any remaining issues blocking beta1, speak up!***From:*Benoit Jacob

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] any remaining issues blocking beta1, speak up!** - Next by Date:
**[eigen] tests taking forever when run with -j8 and OpenMP is enabled** - Previous by thread:
**Re: [eigen] any remaining issues blocking beta1, speak up!** - Next by thread:
**Re: [eigen] any remaining issues blocking beta1, speak up!**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |