DiscreteValueIteration.jl icon indicating copy to clipboard operation
DiscreteValueIteration.jl copied to clipboard

Parallel solver

Open smkatz12 opened this issue 3 years ago • 7 comments

The current parallel solver is on a separate branch and does not work with the newer releases of POMDPs.jl. It would be helpful to have a parallel solver for solving problems with large state spaces.

smkatz12 avatar Apr 01 '21 15:04 smkatz12

Which branch is the best one to start with here?

mykelk avatar Apr 01 '21 15:04 mykelk

I think the parallel1.0 branch.

smkatz12 avatar Apr 01 '21 16:04 smkatz12

I am unsure if it is parallel1.0 or mb/parallel, I think mb/parallel got almost merged and was an attempt to improve parallel1.0. You can read the discussion here: https://github.com/JuliaPOMDP/DiscreteValueIteration.jl/pull/18

The main challenge was accessing the states. The implementation is using SharedArrays but it might not be the best option, because storing the whole state space in a sharedarray becomes quickly impractical.

I also used this opt_pmap branch: https://github.com/JuliaPOMDP/DiscreteValueIteration.jl/blob/opt_pmap/src/parallel.jl, where I introduced a new function ind2state to be able to reconstruct the state variable from the index and not having to store the whole state space but just state indices.

MaximeBouton avatar Apr 01 '21 17:04 MaximeBouton

Wow, there is a lot of stuff there. Should we move this into a separate package, e.g., ParallelDiscreteValueIteration.jl to partition much of this complexity?

mykelk avatar Apr 01 '21 18:04 mykelk

I think making a new package would be reasonable. My strongest advice is to utilize existing optimized parallel/distributed linear algebra as much as possible. Calling transition and translating back an forth between indices and state representations is really slow. (see also #44) On the other hand, it might not be possible to fit things in memory.

On Thu, Apr 1, 2021 at 12:02 PM Mykel Kochenderfer @.***> wrote:

Wow, there is a lot of stuff there. Should we move this into a separate package, e.g., ParallelDiscreteValueIteration.jl to partition much of this complexity?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/JuliaPOMDP/DiscreteValueIteration.jl/issues/46#issuecomment-812076072, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABALI2ZELMGT6W3EKGVKWJ3TGSYHTANCNFSM42HKDFVQ .

zsunberg avatar Apr 01 '21 18:04 zsunberg

Sounds good. @zsunberg: Do you have a student eager to do this? Or should I find one here?

mykelk avatar Apr 01 '21 18:04 mykelk

I didn't have anyone in mind; if you have someone, that would be great. It is probably worth having a 10 minute conversation with me before implementing it rather than just diving in blindly.

On Thu, Apr 1, 2021 at 12:16 PM Mykel Kochenderfer @.***> wrote:

Sounds good. @zsunberg https://github.com/zsunberg: Do you have a student eager to do this? Or should I find one here?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/JuliaPOMDP/DiscreteValueIteration.jl/issues/46#issuecomment-812084359, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABALI2YYEI47YI72UOUMAGDTGSZ5VANCNFSM42HKDFVQ .

zsunberg avatar Apr 01 '21 18:04 zsunberg