-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consolidate belief messages and message channels #459
Comments
Hi, yes definitely need to consolidate both the belief messages as well as the channels over which the messages are sent in the Bayes tree CSM structures. |
see edit comments in first post. |
* belief type buildSubgraphFromLabels csmc.dfg * async structure in place * added up messages priors * Idea for consolidate message priors #459 * Changed to use enumerated CliqStatus for messages
see discussion here #675 (comment) |
To restate how I currently implement message storage:
|
The reason is messages are created at run time specific to the solve. If messages were to be stored in the clique, one would not be able to run 2 solves in parallel on the same tree (as currently implemented without a message
|
@dehann, I updated the summary a bit. I think the biggest issue on the message is
I missed that comment, I tried to find one message that could work for both and that could be easily serialized
My original idea was to use inheritance to allow for different messages since I couldn't pack it in
DF EDIT:
|
I have a lot of catching up to do on this issue thread... in the mean time: I have been thinking about BeliefMessage types also, will look more closely. I want to do best effort on BeliefMessage defintion and but then get to the meat of the tree message channels as fast possible, reduce the aperture there first. Belief messages are not the biggest computational part at this stage, so okay if its a little slower. I think its more important to get a common structure between the parametric and previous nonparametric CSM message passing. That way a fix for either results in a fix for both solving methods, hence the hit rate goes up. We can optimize stuff then. |
Haven't forgotten -- this is high on my priority list |
Slight change of tack here, this will be affected by #579 which will allow messages to encode the joint correlations beyond priors. So, lets resolve 579 first then consolidate the messages -- PoC on 579 is actually pretty easy. |
Just to repeat it here. For #600 we will need additional information in the messages for covariances.
|
This is a summary:
xref summary of related aspects:
1. Likelihood messages
variableOrder
are variable labels to identify the valuesSampleableBelief
inferdim
softtype
(for manifold and variable dimension)Types of factors made from messages so far
Pose2Pose2
,Pose2Point2BearingRange
Structure used for the Likelihood message WIP
TreeBelief:
Message Design
It looks like parametric and mm can fit in a standard message type. Since the standard variable node data is used for now.
Can we have a look at what might be needed in the future and define a message type. I see:
I'll base parametric on it then. We can use it a bit and then update mm when we are happy.
2. Message Channels
High level decision to store
One up and one down channel for every edge in the tree.
upMsgChannel::Channel{BeliefMessage}
can also be a remote channeldownMsgChannel::Channel{BeliefMessage}
Note: up messages are from child to parent.
In concept I think this should work, its simple and only has one up and one down channel for synchronization. However, the current CSM is a bit more complicated and consolidation might be a bit harder.
LikelihoodMessage
upMsgChannel::Channel{LikelihoodMessage}
per clique/edgedownMsgChannel::Channel{LikelihoodMessage}
per clique/edgePending Decisions
Channel Design
JT EDIT: @dehann please edit
Message passing refactoring:
Complications
DF, One issue is that tree initialization currently requires a dictionary of up messages to be stored in the parent (given a push model).
Suggestion was made to make channels a dictionary according to solveKey since multiple solvers can be working on the tree at different times.
The text was updated successfully, but these errors were encountered: