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

Reply via email to