Re: [eigen] NEON remaining failing tests |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] NEON remaining failing tests
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Thu, 4 Mar 2010 08:43:21 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=e68jJbhsIh++8EoGdLsvHyjU/HAC3/+R0IoOpZ8+x14=; b=aimq28sBFum4TZAilyFf30UpzcIOFw84P9DTjoY6bBOZ3icX/vXp6zGmyQIsRN85dG 2QAFVBRNibcFr/KtNnl+jkVgofEyQQzdTK7vaIakb3VC4LOeuWrr9HNUNhUYNT+sX0k6 qAxe9VXfI01UskE71JlZvJc4caTLO0lUpVqzk=
- 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=FLLYXAJbDGeTqN+AHxYO4p1Beh60yfsrwmlBqUnlnyLgVrD7ntskXPO0H98nIN5mg1 6fgeVS2imFsP7aMb9js7flhrEs30mRFsZFncoh+k8Mgd8fkvE1XMBHqmoJihCQRsOosW moRQBzyaBO6r4YPA1LaovxSwBkKSI0GyE6RHY=
Hi,
Some comments on some of these.
2010/3/4 Konstantinos Margaritis <markos@xxxxxxxx>:
> Hi again,
>
> here are the remaining failing tests with NEON. Regarding vectorization_logic,
> I'll try a fix Benoit suggested yesterday and see if it works.
>
> ./adjoint_6
> Initializing random number generator with seed 1267698370
> Repeating each test 10 times
> Test adjoint(MatrixXf(21, 21)) failed in "/home/oem/eigen/test/adjoint.cpp"
> (77)
> ei_isApprox(v1.dot(square * v2), (square.adjoint() * v1).dot(v2),
> largerEps)
first fix all product_* tests, then come back to this.
>
> ./cholesky_4
> Initializing random number generator with seed 1267698407
> Repeating each test 10 times
> Test cholesky(Matrix3f()) failed in "/home/oem/eigen/test/cholesky.cpp" (106)
> test_ei_isApprox(symm, cholup.reconstructedMatrix())
first fix all product_* tests, then come back to this.
>
> ./cwiseop_5
> Initializing random number generator with seed 1267698434
> Repeating each test 10 times
> cwiseop_5: /home/oem/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:115: Packet
> Eigen::ei_pdiv(const Packet&, const Packet&) [with Packet = __builtin_neon_si
> __vector__]: Assertion `false && "packet integer division are not supported by
> NEON"' failed.
> Aborted
if some platforms can't vectorize integer division, we should provide
a way for them to say it and use a scalar path.
It's pretty simple actually. integer division is going to be
implemented somewhere as a functor in Functors.h. It's probably called
ei_scalar_div_op or ei_scalar_quotient_op... there, at the place where
we say that it has packet access, you just have to add a #ifndef
ARM_NEON... same for AltiVec by the way.
>
> ./eigensolver_generic_1
> Initializing random number generator with seed 1267698438
> Repeating each test 10 times
> Test eigensolver(Matrix4f()) failed in
> "/home/oem/eigen/test/eigensolver_generic.cpp" (53)
> test_ei_isApprox(symmA * ei0.pseudoEigenvectors(),
> ei0.pseudoEigenvectors() * ei0.pseudoEigenvalueMatrix())
first fix all product_* tests, then come back to this.
>
> ./eigensolver_selfadjoint_3
> Initializing random number generator with seed 1267698438
> Repeating each test 10 times
> Test selfadjointeigensolver(MatrixXf(10,10)) failed in
> "/home/oem/eigen/test/eigensolver_selfadjoint.cpp" (105)
> (symmA * eiSymm.eigenvectors()).isApprox( eiSymm.eigenvectors() *
> eiSymm.eigenvalues().asDiagonal(), largerEps)
first fix all product_* tests, then come back to this.
>
> ./geo_quaternion_1
> Initializing random number generator with seed 1267698439
> Repeating each test 10 times
> geo_quaternion_1: /home/oem/eigen/Eigen/src/Core/MapBase.h:152: void
> Eigen::MapBase<Derived, Base>::checkSanity() const [with Derived =
> Eigen::Map<Eigen::Matrix<float, 4, 1, 0, 4, 1>, 1, Eigen::Stride<0, 0> >, Base
> = Eigen::MatrixBase<Eigen::Map<Eigen::Matrix<float, 4, 1, 0, 4, 1>, 1,
> Eigen::Stride<0, 0> > >]: Assertion `((!
> (ei_traits<Derived>::Flags&AlignedBit)) || ((size_t(m_data)&0xf)==0)) && "data
> is not aligned"' failed.
> Aborted
Forgot about this assertion, indeed at MapBase.h:152. Enclose it in a
platform #ifdef and write a big FIXME comment.
> ./product_extra_1
> Initializing random number generator with seed 1267698868
> Repeating each test 10 times
> Test product_extra(MatrixXf(ei_random<int>(2,320), ei_random<int>(2,320)))
> failed in "/home/oem/eigen/test/product_extra.cpp" (101)
> test_ei_isApprox((s1 * v1.conjugate()) * (-m1.conjugate() * s2), (s1 *
> v1.conjugate()).eval() * (-m1.conjugate()*s2).eval())
Fix the product_large test first:
>
> ./product_large_1
> Initializing random number generator with seed 1267698875
> Repeating each test 10 times
> Test product(MatrixXf(ei_random<int>(1,320), ei_random<int>(1,320))) failed in
> "/home/oem/eigen/test/product.h" (134)
> test_ei_isApprox(tm1.transpose() * v1, m1.transpose() * v1)
Yes, fix this one first. No idea why it's failing though :/
Benoit