[dask-on-ray] Convert tuple of object refs to list before ray.get() call. (#11582)

This commit is contained in:
Clark Zinzow
2020-10-23 17:39:22 -06:00
committed by GitHub
parent d3405e74da
commit 0979589c7c
2 changed files with 14 additions and 3 deletions
+9
View File
@@ -1,4 +1,6 @@
import dask
import numpy as np
import dask.array as da
import pytest
import ray
@@ -30,6 +32,13 @@ def test_ray_dask_basic(ray_start_regular_shared):
assert ans == "The answer is 6", ans
def test_ray_dask_persist(ray_start_regular_shared):
arr = da.ones(5) + 2
result = arr.persist(scheduler=ray_dask_get)
np.testing.assert_array_equal(result.dask.values()[0], np.ones(5) + 2)
if __name__ == "__main__":
import sys
sys.exit(pytest.main(["-v", __file__]))
+5 -3
View File
@@ -346,9 +346,11 @@ def ray_get_unpack(object_refs):
The input Python object with all contained Ray object references
resolved with their concrete values.
"""
if isinstance(object_refs,
(tuple, list)) and any(not isinstance(x, ray.ObjectRef)
for x in object_refs):
if isinstance(object_refs, tuple):
object_refs = list(object_refs)
if isinstance(object_refs, list) and any(not isinstance(x, ray.ObjectRef)
for x in object_refs):
# We flatten the object references before calling ray.get(), since Dask
# loves to nest collections in nested tuples and Ray expects a flat
# list of object references. We repack the results after ray.get()