Hi.
It turns out that IT++ fails to build on several architectures other than i386 and amd64. Some build logs are:
https://buildd.debian.org/status/fetch.php?pkg=libitpp&arch=hurd-i386&ver=4.3.0-1&stamp=1369787672
https://buildd.debian.org/status/fetch.php?pkg=libitpp&arch=i386&ver=4.3.0-1&stamp=1369788407
https://buildd.debian.org/status/fetch.php?pkg=libitpp&arch=powerpc&ver=4.3.0-1&stamp=1369787623
https://buildd.debian.org/status/fetch.php?pkg=libitpp&arch=s390&ver=4.3.0-1&stamp=1369788761
It used to pass tests on these architectures, so there is some problem. I will investigate this further and report my observations.
Thanks.
Oh, there's a failure on i386 as well! So this is a big problem. I'll try to find out why.
I investigated the blas test on s390. Sure enough, the blas dot product operation results in a result whose gap is 1.7763568394002505e-15, while the epsilon in the test code expects half of that, viz. 8.8817841970012523e-16. The previous IT++ versions used only the first four decimal points, so I am guessing that relaxing the accuracy for these architectures might be prudent.
I will investigate other failures now.
I have been digging into the turbo decoder, and I haven't been able to figure out why this is happening. Here is what I have so far:
On i386, for the turbo_test.cpp, after line 240, for i == 1, decoded_bits[9690] is 1 while input_bits is also 1. However, on amd64, decoded_bits[9690] is 0, and the test passes on amd64.
I've tried to trace to see where this bug happens, but haven't had success.
Hi.
I managed to get the tests to pass on i386 by using -O0 (no optimization). I have verified that both with g++-4.6 and g++-4.7 on i386, with -O1 or more, the Turbo test fails. This is strongly indicative of a compiler issue, but I can't proceed further. I will investigate the other architectures in the mean while.
I've checked powerpc as well. Again, -O0 works for the Multilateration test, and increasing the epsilon passes the blas_test as well.
For Debian, I plan to fall back to -O0 on non-amd64 architectures, but I don't know whether to patch the BLAS test to use 8epsilon rather than the 4epsilon that is currently present.
Advice would be welcome. Thanks!
Hi
Turbo test failure could be handled by increasing the tol to 2 for those specific tests. Similarly for blas test, while for multilateration I have used instead a random generator with a fixed seed. Please check the version from master branch.
thanks
Bogdan
Could you also enable the old tests (assuming that you are in the build folder, just below the sources root folder):
cmake .. -DOLD_TESTS=on
and run them (python is needed)
../extras/check_tests.py -r ../tests/ -w tests/
Thanks for doing this, Bogdan. I have tried the new version on s390, and Blas passes, but Multilateration still fails like this:
All old tests pass on s390.
I will now retry this on powerpc.
Last edit: Kumar Appaiah 2013-05-30
On powerpc:
Again, all old tests pass successfully.
I will finally try i386 and let you know.
With i386, all the new tests pass. However, the OLD turbo_test fails.
Please let me know if there is something else I can do.
Hi
Could you show me the build log in order to see the full error messages ?
thanks
Bogdan
This is the s390 build log.
This is the powerpc build log.
Sure. I will regenerate and send the s390 and powerpc ones and send them in the next day.
Sure. I'll attach it to the bug report momentarily.
Last edit: Kumar Appaiah 2013-05-31
Multilateration test failure could be safely ignored. I have corrected anyway this test and the changes are in master branch. Please let me know if now the tests pass.
Hi.
The Multilateration test still fails. Attached are failed build logs. The tests pass if I comment out line 257 in the multilateration_test.cpp.
Attached is the powerpc build log.
Attached is the s390 build log.
I have added a precompiller variable to remove those tests by default.
The build is now successful, so this bug has been fixed in the repository. Could you please let me know whether you can make a point release that fixes these bugs? If so, I can upload it to Debian.
If a point release will take time, I can backport the fixes to make a release as well, so that shouldn't be a problem.
Thanks.
Naturally, I meant that I can make a Debian-specific upload, if an official IT++ point release will take time.
Hi
Making a release is not a difficult process, but I am willing to wait some time in order to obtain more feedback. You could generate a tar ball from master branch using the approach explained in IT++ wiki: https://sourceforge.net/p/itpp/wiki/Making%20an%20IT%2B%2B%20Release/
regards
Bogdan
Thanks Bogdan. For the purposes of Debian, I'll use your changes to make a Debian-specific release. Naturally, after your next release, I will be back in sync.