-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Executor feature comparison #276
Comments
This is very helpful. For the Coiled Functions executor #260 I think everything is the same as the Dask column except that Callbacks have been implemented. Adding a runtime memory check should be straightforward too. |
I've been looking at the Dask executor today, and I think using the Here's a prototype As far as I can tell Coiled Functions don't have an asyncio version - but perhaps the futures that it returns can be used in an asyncio context, in which case we'd be able to share a lot of code. |
Nice! If we have an |
Probably not. |
Reading the docs, it says that |
#291 added batching for Python Async, Modal, and Dask. |
(I wrote this to help track what works needs to be done on the executors, but it might be useful to add to the user docs at some point.)
This table shows the features that the local (single-machine) executors support.
single-threaded
threads
processes
This table shows the same for the cloud executors:
lithops
modal
beam
(Dataflow)dask
Executors
The
single-threaded
executor is a very simple executor, used for running tests, and is deliberately designed not to have anything except the most basic features.The
threads
executor is also for testing, but has a few features, mostly as a way to test async features locally, without having to use Modal, which is the only other async executor.The
processes
executor is for running large datasets that can fit on a single machine's disk.The other executors are all designed for real workloads running at scale, so all of the features are desirable. Some are included in the platform, while others are implemented in Cubed. For example, both Lithops and Modal provide timeouts as a part of the platform, whereas of the two only Modal provides retries as a built-in feature (for Lithops we implement retries in Cubed). Neither platform provides anything for mitigating stragglers, so Cubed provides a backup tasks implementation for both.
Features
Task concurrency - can the executor run multiple tasks at once?
Input batching - for very large computations it's important that not all inputs for a given array are materialized at once, as that might lead to an out of memory situation on the client. The remedy for this is to submit the input in batches, or in a streaming fashion if the platform supports it. See #239
Resume - can an executor resume a computation that didn't complete? (This requires that the computation is pickled so it can be restarted.)
Compute arrays in parallel - are arrays computed one at a time, or in parallel? For small arrays the latter can take advantage of more parallelism if it is available and speed up computations.
Runtime memory check - does the executor make sure that your
allowed_mem
setting is no greater than what the runtime provides? #220Footnotes
Reschedule
exception that serves a similar purpose.The text was updated successfully, but these errors were encountered: