Comments (29)
from gtsam.
OK, this issue appears to be fixed, but now the tests fail on armhf: https://buildd.debian.org/status/fetch.php?pkg=gtsam&arch=armhf&ver=4.2%7E9%2Bdfsg-5&stamp=1692186176&raw=0
The other arches still have problems too: https://buildd.debian.org/status/package.php?p=gtsam
I'm going to have to come back to this later. If you want to work on some of these issues in the meantime, that would be great. The package tree is here: https://buildd.debian.org/status/package.php?p=gtsam
from gtsam.
Hi. It looks like the failure mode on i686 and armhf is the same one: the build completes, but the tests fail: https://buildd.debian.org/status/fetch.php?pkg=gtsam&arch=i386&ver=4.2%7E9%2Bdfsg-5&stamp=1692266835&raw=0
Since you don't need any new hardware on i686, can I get you to look into that? You'll be far more effective at debugging this than I. Thanks.
from gtsam.
I need to spin up an armhf box first, thanks for reporting! Also, do you also build the Python wrapper? Currently I think they need to be built together.
from gtsam.
@dkogan I think you only need to change the EXPECT(assert_equal())
to EXPECT_LONGS_EQUAL()
from gtsam.
Thanks much. Appears to work. Doing another upload; let's see how it does...
from gtsam.
@dkogan I think we currently only support 64-bit platforms, is this supported on Debian?
from gtsam.
from gtsam.
@dkogan I can look at it this week
from gtsam.
Tagging @jlblancoc for this is a Debian-related issue
from gtsam.
First, thanks a lot @dkogan for finally being brave enough to move this forward! :-)
All these errors are caused by assumptions and/or never-happened-yet situations about the different sizes of "int", "long", "size_t" in those "uncommon" archs, it's not related directly with Debian packaging or flags per se...
from gtsam.
PS: The comment above was for build errors.
For failing tests, I cannot see a clear reason from the buildd logs. In the past, reasons for tests to fail in other projects on "uncommon" archs have been:
- Undefined / uninitialized memory in some archs. I recommend running failing tests against valgrind. I added targets named
make testFoo.valgrind
to help debugging that. Also, temporarily, @dkogan , it would be great to add valgrind to Build-Depends and runningmake check_valgrind
instead ofmake check
to see all the valgrind reports from the build farm. Or, if you have Debian Developer access to the build boxes (I don't), try that locally without involving a complete DD upload... - Thresholds in numerical algorithms: many numerical methods where residuals, traces, etc. are checked (e.g. rank checking of matrix) have significant different numbers when run on i386 or other archs in comparison to amd64 / arm64, and thresholds may need to be updated or adapted, for all cases, or with conditional
#if
for those archs.
It's still a long track ahead, but it's worth it! 👍
from gtsam.
from gtsam.
I think I know what is the issue, it's because we expect Key to be the same as Eigen::Index which is 32 bit in some archs. I would say now we have a failure case for #1522
from gtsam.
from gtsam.
Fan Jiang @.***> writes:
I think I know what is the issue, it's because we expect Key to be the same as Eigen::Index which is 32 bit in some archs. I would say now we have a failure case for #1522
That looks like a good candidate. Are the patches in that PR more or less done? Should I try applying them to the Debian builds?
@dkogan Yes that would be a good test, let's apply and see what happens
from gtsam.
The patches in #1522 fixed most of the test failures but not all. I just tried on armhf, and there's one failure still:
69/221 Test #69: testSymbolicFactorGraph ............***Failed 0.03 sec
Not equal:
expected:
: cliques: 4, variables: 6
expected:
- P( e0 l0 b0)
expected:
| - P( s0 | b0 l0)
expected:
| - P( t0 | e0 l0)
expected:
| - P( x0 | e0)
actual:
: cliques: 4, variables: 6
actual:
- P( e0 l0 b0)
actual:
| - P( t0 | e0 l0)
actual:
| - P( x0 | e0)
actual:
| - P( s0 | b0 l0)
./gtsam/symbolic/tests/testSymbolicFactorGraph.cpp:93: Failure: "assert_equal(asiaBayesTree, actual2)"
There were 1 failures
Yall should test this all yourselves I think. I would start with i686. I suggest using a Debian install on your native arch (presumably amd64), crossing to i686. This is trivial to set up, and works without emulation. Let me know if you need help.
from gtsam.
If you can root-cause it and suggest a fix/PR that I think would be the most helpful. Might be some cross-platform non-determinism that we have not yet encountered.
from gtsam.
This has a lot of gtsam-specific complexity, and you can debug and fix this much faster than I can. Building on i686 is trivial for you to do (as described above), and you should start there. Let me know if you need help setting this up.
from gtsam.
This seems to be just an order issue in the comparison of Bayes tree, these two trees are equivalent. @dkogan I think you can mask this test in i386 first and we can work on a fix to the comparison
from gtsam.
from gtsam.
Yes :)
from gtsam.
Alright, I tried it. Build logs are here: https://buildd.debian.org/status/package.php?p=gtsam
Click on the red "Build-Attempted" to get the log for each particular arch. Notes:
- It looks like there are two separate sets of tests. If the first set doesn't all pass, it doesn't even try to run the second set. This is a bug: it should run all the tests always so that we can get a clear idea of what's failing
- armhf and armel pass all of the first set of tests (all 221 of them), but fails some of the second set. I don't know enough to comment about what the failures mean
- i386 fails one of the first set of tests: it looks like it just barely misses some thresholds, so it's probably not a failure. But since it failed something in the first set, we don't know if any of the second set of tests would have failed
The other arches either succeeded, or haven't been built yet.
Can somebody please take a look? Thanks
from gtsam.
Related Issues (20)
- ISAM2 recalculatelaBatch() BUG .When using Inc smoother, CPU usage increases HOT 3
- Resizing factor graph when using iSAM HOT 1
- /usr/local/include/gtsam/base/OptionalJacobian.h:126:43: error: function definition does not declare parameters HOT 2
- Avoid dense fill-in during margianlization HOT 1
- Possible quaternion conversion bug HOT 3
- # include<gtsam/navigation/ImuFactor.h> cannot comiled successfully HOT 1
- RuntimeError: Shonan::run did not converge for given pMax HOT 9
- BoundingConstraint1 with double parameter HOT 3
- Fisheye calibration factor in Python HOT 1
- Is the current latest tag a pre-release? HOT 4
- Matlab "IMUKittiExampleGPS" example result in an error HOT 3
- Generating Matlab toolbox on windows fails
- Error in test scrpipt "TranslationAveragingExample.py" HOT 4
- KeySet class in python is missing methods HOT 4
- doc/CMakeLists.txt refers to non-existent variable HOT 1
- how to build gtsam 4.0.3 with vs 2019 HOT 3
- optimizer.optimize works - Mariginals does not. Matlab HOT 2
- PCL let GTSAM crash. HOT 1
- MATLAB wrapper failed to build [Ubuntu] HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gtsam.