dask-cuda 23.12.0a231004__tar.gz → 23.12.0a231006__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dask-cuda-23.12.0a231004/dask_cuda.egg-info → dask-cuda-23.12.0a231006}/PKG-INFO +1 -1
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_spill.py +64 -30
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/utils.py +4 -4
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006/dask_cuda.egg-info}/PKG-INFO +1 -1
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/pyproject.toml +1 -1
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/LICENSE +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/MANIFEST.in +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/README.md +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/__init__.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/__init__.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/common.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_groupby.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_merge.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_shuffle.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cupy.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cupy_map_overlap.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/utils.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/cli.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/compat.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/cuda_worker.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/device_host_file.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/disk_io.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/__init__.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/comms.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/dataframe/__init__.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/dataframe/shuffle.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/get_device_memory_objects.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/initialize.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/is_device_object.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/is_spillable_object.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/local_cuda_cluster.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/proxify_device_objects.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/proxify_host_file.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/proxy_object.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_cudf_builtin_spilling.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_dask_cuda_worker.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_device_host_file.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_dgx.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_explicit_comms.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_from_array.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_gds.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_initialize.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_local_cuda_cluster.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_proxify_host_file.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_proxy.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_utils.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_worker_spec.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/worker_spec.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/SOURCES.txt +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/dependency_links.txt +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/entry_points.txt +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/requires.txt +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/top_level.txt +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/examples/ucx/client_initialize.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/examples/ucx/local_cuda_cluster.py +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/setup.cfg +0 -0
- {dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/setup.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import gc
|
|
1
2
|
import os
|
|
2
3
|
from time import sleep
|
|
3
4
|
|
|
@@ -58,7 +59,10 @@ def assert_device_host_file_size(
|
|
|
58
59
|
|
|
59
60
|
|
|
60
61
|
def worker_assert(
|
|
61
|
-
|
|
62
|
+
total_size,
|
|
63
|
+
device_chunk_overhead,
|
|
64
|
+
serialized_chunk_overhead,
|
|
65
|
+
dask_worker=None,
|
|
62
66
|
):
|
|
63
67
|
assert_device_host_file_size(
|
|
64
68
|
dask_worker.data, total_size, device_chunk_overhead, serialized_chunk_overhead
|
|
@@ -66,7 +70,10 @@ def worker_assert(
|
|
|
66
70
|
|
|
67
71
|
|
|
68
72
|
def delayed_worker_assert(
|
|
69
|
-
|
|
73
|
+
total_size,
|
|
74
|
+
device_chunk_overhead,
|
|
75
|
+
serialized_chunk_overhead,
|
|
76
|
+
dask_worker=None,
|
|
70
77
|
):
|
|
71
78
|
start = time()
|
|
72
79
|
while not device_host_file_size_matches(
|
|
@@ -82,6 +89,18 @@ def delayed_worker_assert(
|
|
|
82
89
|
)
|
|
83
90
|
|
|
84
91
|
|
|
92
|
+
def assert_host_chunks(spills_to_disk, dask_worker=None):
|
|
93
|
+
if spills_to_disk is False:
|
|
94
|
+
assert len(dask_worker.data.host)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def assert_disk_chunks(spills_to_disk, dask_worker=None):
|
|
98
|
+
if spills_to_disk is True:
|
|
99
|
+
assert len(dask_worker.data.disk or list()) > 0
|
|
100
|
+
else:
|
|
101
|
+
assert len(dask_worker.data.disk or list()) == 0
|
|
102
|
+
|
|
103
|
+
|
|
85
104
|
@pytest.mark.parametrize(
|
|
86
105
|
"params",
|
|
87
106
|
[
|
|
@@ -122,7 +141,7 @@ def delayed_worker_assert(
|
|
|
122
141
|
},
|
|
123
142
|
],
|
|
124
143
|
)
|
|
125
|
-
@gen_test(timeout=
|
|
144
|
+
@gen_test(timeout=30)
|
|
126
145
|
async def test_cupy_cluster_device_spill(params):
|
|
127
146
|
cupy = pytest.importorskip("cupy")
|
|
128
147
|
with dask.config.set(
|
|
@@ -144,6 +163,8 @@ async def test_cupy_cluster_device_spill(params):
|
|
|
144
163
|
) as cluster:
|
|
145
164
|
async with Client(cluster, asynchronous=True) as client:
|
|
146
165
|
|
|
166
|
+
await client.wait_for_workers(1)
|
|
167
|
+
|
|
147
168
|
rs = da.random.RandomState(RandomState=cupy.random.RandomState)
|
|
148
169
|
x = rs.random(int(50e6), chunks=2e6)
|
|
149
170
|
await wait(x)
|
|
@@ -153,7 +174,10 @@ async def test_cupy_cluster_device_spill(params):
|
|
|
153
174
|
|
|
154
175
|
# Allow up to 1024 bytes overhead per chunk serialized
|
|
155
176
|
await client.run(
|
|
156
|
-
|
|
177
|
+
worker_assert,
|
|
178
|
+
x.nbytes,
|
|
179
|
+
1024,
|
|
180
|
+
1024,
|
|
157
181
|
)
|
|
158
182
|
|
|
159
183
|
y = client.compute(x.sum())
|
|
@@ -162,20 +186,19 @@ async def test_cupy_cluster_device_spill(params):
|
|
|
162
186
|
assert (abs(res / x.size) - 0.5) < 1e-3
|
|
163
187
|
|
|
164
188
|
await client.run(
|
|
165
|
-
|
|
189
|
+
worker_assert,
|
|
190
|
+
x.nbytes,
|
|
191
|
+
1024,
|
|
192
|
+
1024,
|
|
166
193
|
)
|
|
167
|
-
|
|
168
|
-
|
|
194
|
+
await client.run(
|
|
195
|
+
assert_host_chunks,
|
|
196
|
+
params["spills_to_disk"],
|
|
169
197
|
)
|
|
170
|
-
|
|
171
|
-
|
|
198
|
+
await client.run(
|
|
199
|
+
assert_disk_chunks,
|
|
200
|
+
params["spills_to_disk"],
|
|
172
201
|
)
|
|
173
|
-
for hc, dc in zip(host_chunks.values(), disk_chunks.values()):
|
|
174
|
-
if params["spills_to_disk"]:
|
|
175
|
-
assert dc > 0
|
|
176
|
-
else:
|
|
177
|
-
assert hc > 0
|
|
178
|
-
assert dc == 0
|
|
179
202
|
|
|
180
203
|
|
|
181
204
|
@pytest.mark.parametrize(
|
|
@@ -218,7 +241,7 @@ async def test_cupy_cluster_device_spill(params):
|
|
|
218
241
|
},
|
|
219
242
|
],
|
|
220
243
|
)
|
|
221
|
-
@gen_test(timeout=
|
|
244
|
+
@gen_test(timeout=30)
|
|
222
245
|
async def test_cudf_cluster_device_spill(params):
|
|
223
246
|
cudf = pytest.importorskip("cudf")
|
|
224
247
|
|
|
@@ -243,6 +266,8 @@ async def test_cudf_cluster_device_spill(params):
|
|
|
243
266
|
) as cluster:
|
|
244
267
|
async with Client(cluster, asynchronous=True) as client:
|
|
245
268
|
|
|
269
|
+
await client.wait_for_workers(1)
|
|
270
|
+
|
|
246
271
|
# There's a known issue with datetime64:
|
|
247
272
|
# https://github.com/numpy/numpy/issues/4983#issuecomment-441332940
|
|
248
273
|
# The same error above happens when spilling datetime64 to disk
|
|
@@ -264,26 +289,35 @@ async def test_cudf_cluster_device_spill(params):
|
|
|
264
289
|
await wait(cdf2)
|
|
265
290
|
|
|
266
291
|
del cdf
|
|
292
|
+
gc.collect()
|
|
267
293
|
|
|
268
|
-
|
|
269
|
-
|
|
294
|
+
await client.run(
|
|
295
|
+
assert_host_chunks,
|
|
296
|
+
params["spills_to_disk"],
|
|
270
297
|
)
|
|
271
|
-
|
|
272
|
-
|
|
298
|
+
await client.run(
|
|
299
|
+
assert_disk_chunks,
|
|
300
|
+
params["spills_to_disk"],
|
|
273
301
|
)
|
|
274
|
-
for hc, dc in zip(host_chunks.values(), disk_chunks.values()):
|
|
275
|
-
if params["spills_to_disk"]:
|
|
276
|
-
assert dc > 0
|
|
277
|
-
else:
|
|
278
|
-
assert hc > 0
|
|
279
|
-
assert dc == 0
|
|
280
302
|
|
|
281
303
|
await client.run(
|
|
282
|
-
|
|
304
|
+
worker_assert,
|
|
305
|
+
nbytes,
|
|
306
|
+
32,
|
|
307
|
+
2048,
|
|
283
308
|
)
|
|
284
309
|
|
|
285
310
|
del cdf2
|
|
286
311
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
312
|
+
while True:
|
|
313
|
+
try:
|
|
314
|
+
await client.run(
|
|
315
|
+
delayed_worker_assert,
|
|
316
|
+
0,
|
|
317
|
+
0,
|
|
318
|
+
0,
|
|
319
|
+
)
|
|
320
|
+
except AssertionError:
|
|
321
|
+
gc.collect()
|
|
322
|
+
else:
|
|
323
|
+
break
|
|
@@ -18,7 +18,7 @@ import dask
|
|
|
18
18
|
import distributed # noqa: required for dask.config.get("distributed.comm.ucx")
|
|
19
19
|
from dask.config import canonical_name
|
|
20
20
|
from dask.utils import format_bytes, parse_bytes
|
|
21
|
-
from distributed import Worker, wait
|
|
21
|
+
from distributed import Worker, WorkerPlugin, wait
|
|
22
22
|
from distributed.comm import parse_address
|
|
23
23
|
|
|
24
24
|
try:
|
|
@@ -32,7 +32,7 @@ except ImportError:
|
|
|
32
32
|
yield
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
class CPUAffinity:
|
|
35
|
+
class CPUAffinity(WorkerPlugin):
|
|
36
36
|
def __init__(self, cores):
|
|
37
37
|
self.cores = cores
|
|
38
38
|
|
|
@@ -40,7 +40,7 @@ class CPUAffinity:
|
|
|
40
40
|
os.sched_setaffinity(0, self.cores)
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
class RMMSetup:
|
|
43
|
+
class RMMSetup(WorkerPlugin):
|
|
44
44
|
def __init__(
|
|
45
45
|
self,
|
|
46
46
|
initial_pool_size,
|
|
@@ -135,7 +135,7 @@ class RMMSetup:
|
|
|
135
135
|
rmm.mr.set_current_device_resource(rmm.mr.TrackingResourceAdaptor(mr))
|
|
136
136
|
|
|
137
137
|
|
|
138
|
-
class PreImport:
|
|
138
|
+
class PreImport(WorkerPlugin):
|
|
139
139
|
def __init__(self, libraries):
|
|
140
140
|
if libraries is None:
|
|
141
141
|
libraries = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_groupby.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_merge.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cudf_shuffle.py
RENAMED
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/benchmarks/local_cupy_map_overlap.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/dataframe/__init__.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/explicit_comms/dataframe/shuffle.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/get_device_memory_objects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_cudf_builtin_spilling.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_dask_cuda_worker.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_device_host_file.py
RENAMED
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_explicit_comms.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_local_cuda_cluster.py
RENAMED
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda/tests/test_proxify_host_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dask-cuda-23.12.0a231004 → dask-cuda-23.12.0a231006}/dask_cuda.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|