Conversation
|
Thanks for opening the PR! can you please provide a summary of the proposed changes in the description above? |
|
@arkocal: How does this interact with your create nodes? If it's a longer discussion, we can maybe have it at Gobcon on Tuesday? |
|
This is sufficiently similar to Felix implementation of create nodes, that it is most likely more reasonable to not keep both. (it would unnecessarily complicate the constraint systems). I believe it would be possible to use this or that going forward. One major difference, which would maybe also be nice to have here, is that the unaffected solvers can be lifted to be ignorant to this change. I think it makes sense to discuss the exact semantics of both to make sure this is the case. After that it becomes a question of timing when to merge. |
|
I will take care of the merge conflicts once #1746 is merged. |
|
I guess with #1747 open, this can now be closed? |
Added a new function to the right-hand side of an unknown - demand.
The new constraint system functional form definition is val system : v -> ((v -> d) -> (v -> d -> unit) -> (v -> unit) -> d) m, where the added (v -> unit) represents demand.
Thread spawning now uses
demandl (Function fd, c);inplace ofignore (getl (Function fd, c)).TD3 implements demand as
demand_thrand adds a new hashmapweak_dep.TD3 with weak dependencies can be run in two "modes" - eager and lazy.
Eager.
Can be toggled with
--enable solvers.td3.wk_deps.eagerdemandis called the demanded unknownyis added to the hashmapweak_depand solved immediately.weak_depor invsis unstable, they are solved again until all unknowns in both are stable.Lazy:
Default behavior currently.
Same as eager, but without solving immediately when calling
demand.Part of the bachelor's thesis "Weak Dependencies for Side-Effecting Constraint Systems".