probcomp / Venturecxx

Primary implementation of the Venture probabilistic programming system
http://probcomp.csail.mit.edu/venture/
GNU General Public License v3.0
28 stars 6 forks source link

Decide how `single_site_scaffold` of DependencyTraces in Mite should prioritize different kernel types at the same address #646

Open axch opened 8 years ago

axch commented 8 years ago

Said algorithm currently chooses whether to use an SP's proposal, constraint, or propagation kernel depending on which of the application's parents are being resimulated. The choice is made locally as each dependency edge is traversed, but it's quite possible for multiple dependency edges of different types to enter the same trace location. Presently, the scaffold construction just crashes if kernels of different types appear to be called for.

The corresponding place in Lite contains a priority table: resimulation (which corresponds to proposal in Mite) trumps constraint, and there's a bunch of stuff involving brush, AAA, etc. If I correctly understand what propagation kernels are supposed to be, they are analogous to resimulating ESROutputPSP in Lite, so do not directly participate in the prioritization.

It is tempting to resolve the problem by defining a priority table in that place in Mite too, which would be propose beats propagate beats constrain. However, I want to first confirm with @vkmvkmvkmvkm that my understanding of the architecture is appropriate to making such a change.

axch commented 8 years ago

The corresponding place for flat traces prefers proposal over constraint (that is, chooses propagation when there is reason to, even if there is also reason to choose constraint), and doesn't experience propagation at all because of #644.