ut-parla / parla-experimental

5 stars 0 forks source link

Runahead Scheduling is limited by VCU handling! #94

Open wlruys opened 1 year ago

wlruys commented 1 year ago

If a task is currently running it has consumed VCU resources on the device.

Runahead scheduling allows a dependent to be launched while the task is still running. However, the dependent consumes its own amount of VCUs when it launches. This restricts other tasks that could be enqueued from running.

Alternatively the dependent may not be able to launch due to resources in use. Consider the case when the predecessor (currently running) task has vcus=1, the dependent will not be able to launch ahead of time as the predecessor is still consuming all resources. In this case no runahead happens.

I am not sure of the best way to handle this without causing oversubscription of dependent tasks. But this is likely why we still see overheads in the runahead case.

wlruys commented 1 year ago

As our highest overheads are in Python and not in dependency handling (which this would help hide), I'm marking this as lower priority for the moment.

nicelhc13 commented 1 year ago

Thanks. Then, at this moment, we may just use the min() idea that you mentioned.