dask / dask/dask-glm

Asynchronous solvers

Open
#5 11 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
78
Forks
47
PR merge metrics
No merged PRs in 30d

Description

So far all of our solvers are synchronous. They compute full results in lock-step, for example switching between performing a parallel mat-vec, then doing a line search, and then doing a mat-vec again. These algorithms are common on single-machine hardware but may not be ideal for larger clusters.

The distributed scheduler provides some decent capabilities for full asynchronous computing, which may open us up to new algorithms. Are there asynchronous variants to some of these algorithms that may interest us?

Quick example of asynchronous code:

```python
data_futures = client.map(load_chunk, chunks)
params = {...}

futures = client.map(compute_update, random.sample(100, data_futures), **params)

ac = as_completed(futures) # collection of running futures that yield in order of completion
for future in ac:
update_info, score = ac.result()
if is_good(score):
break
update_params(params, update_info)
new_future = client.submit(compute_update, random.choice(data_futures), **params)
ac.add(new_future)
```

@hussainsultan @mcg1969 @jcrist @moody-marlin

See Also
------

- [Convergence on repetitive data #31](https://github.com/dask/dask-glm/issues/31)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.