Hi, I'm looking to build an application which makes use of distributed work stealing to propagate dynamic work between nodes as and when it is required.
Firstly I just want to check that as far as I can tell HPX only does thread local work stealing and doesn't steal async tasks across nodes automatically? i.e hpx::async takes a locality_id as a parameter. If this is the case then I'd like to add distributed task scheduling on top of HPX. My current plan would be something along the lines of: 1. Define and create a workqueue component (let's assume one for now) 2. Thief's can call a "steal" action on this component, which takes the thief locality as an argument. 3. The workqueue responds to steals by launching the next action via async on the locality which did the steal (or doing nothing/responding with a retry later task if there is no work). Thiefs would have a thread periodically doing steals when no work is left. The biggest issuse I have is that I can't figure out what type the workqueue should hold to enable it to store generic actions. I have tried: std::vector<hpx::actions::base_action> tasks; But getting them into the workqueue is an issue (since it won't compile with a function which takes a base_action or ref/ptr type). Ideally the workqueue should be able to store tasks of many different types. Is something like this possible? Many thanks, Blair
_______________________________________________ hpx-users mailing list [email protected] https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
