dask-cuda 24.2.0a19__py3-none-any.whl → 24.4.0__py3-none-any.whl

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/VERSION CHANGED
@@ -1 +1 @@
1
- 24.02.00a19
1
+ 24.04.00
dask_cuda/__init__.py CHANGED
@@ -3,7 +3,6 @@ import sys
3
3
  if sys.platform != "linux":
4
4
  raise ImportError("Only Linux is supported by Dask-CUDA at this time")
5
5
 
6
-
7
6
  import dask
8
7
  import dask.utils
9
8
  import dask.dataframe.core
dask_cuda/_version.py CHANGED
@@ -17,4 +17,4 @@ import importlib.resources
17
17
  __version__ = (
18
18
  importlib.resources.files("dask_cuda").joinpath("VERSION").read_text().strip()
19
19
  )
20
- __git_commit__ = "6de222f9763c0b267cc969ccc290d9f3a3a12b8a"
20
+ __git_commit__ = "7ed67359e2264393e97ad57fc39829c3a69aa1f3"
@@ -577,7 +577,7 @@ def get_rearrange_by_column_wrapper(func):
577
577
  kw = kw.arguments
578
578
  # Notice, we only overwrite the default and the "tasks" shuffle
579
579
  # algorithm. The "disk" and "p2p" algorithm, we don't touch.
580
- if kw["shuffle"] in ("tasks", None):
580
+ if kw["shuffle_method"] in ("tasks", None):
581
581
  col = kw["col"]
582
582
  if isinstance(col, str):
583
583
  col = [col]
@@ -124,6 +124,10 @@ def get_device_memory_objects_register_cudf():
124
124
  def get_device_memory_objects_cudf_multiindex(obj):
125
125
  return dispatch(obj._columns)
126
126
 
127
+ @dispatch.register(cudf.core.column.ColumnBase)
128
+ def get_device_memory_objects_cudf_column(obj):
129
+ return dispatch(obj.data) + dispatch(obj.children) + dispatch(obj.mask)
130
+
127
131
 
128
132
  @sizeof.register_lazy("cupy")
129
133
  def register_cupy(): # NB: this overwrites dask.sizeof.register_cupy()
@@ -144,6 +144,10 @@ def _test_ucx_infiniband_nvlink(
144
144
  else:
145
145
  skip_queue.put("ok")
146
146
 
147
+ # `ucp.get_active_transports()` call above initializes UCX, we must reset it
148
+ # so that Dask doesn't try to initialize it again and raise an exception.
149
+ ucp.reset()
150
+
147
151
  if enable_infiniband is None and enable_nvlink is None and enable_rdmacm is None:
148
152
  enable_tcp_over_ucx = None
149
153
  cm_tls = ["all"]
@@ -1,6 +1,9 @@
1
1
  import asyncio
2
2
  import multiprocessing as mp
3
3
  import os
4
+ import signal
5
+ import time
6
+ from functools import partial
4
7
  from unittest.mock import patch
5
8
 
6
9
  import numpy as np
@@ -175,7 +178,7 @@ def test_dataframe_shuffle(backend, protocol, nworkers, _partitions):
175
178
 
176
179
 
177
180
  @pytest.mark.parametrize("in_cluster", [True, False])
178
- def test_dask_use_explicit_comms(in_cluster):
181
+ def _test_dask_use_explicit_comms(in_cluster):
179
182
  def check_shuffle():
180
183
  """Check if shuffle use explicit-comms by search for keys named
181
184
  'explicit-comms-shuffle'
@@ -217,6 +220,31 @@ def test_dask_use_explicit_comms(in_cluster):
217
220
  check_shuffle()
218
221
 
219
222
 
223
+ @pytest.mark.parametrize("in_cluster", [True, False])
224
+ def test_dask_use_explicit_comms(in_cluster):
225
+ def _timeout(process, function, timeout):
226
+ if process.is_alive():
227
+ function()
228
+ timeout = time.time() + timeout
229
+ while process.is_alive() and time.time() < timeout:
230
+ time.sleep(0.1)
231
+
232
+ p = mp.Process(target=_test_dask_use_explicit_comms, args=(in_cluster,))
233
+ p.start()
234
+
235
+ # Timeout before killing process
236
+ _timeout(p, lambda: None, 60.0)
237
+
238
+ # Send SIGINT (i.e., KeyboardInterrupt) hoping we get a stack trace.
239
+ _timeout(p, partial(p._popen._send_signal, signal.SIGINT), 3.0)
240
+
241
+ # SIGINT didn't work, kill process.
242
+ _timeout(p, p.kill, 3.0)
243
+
244
+ assert not p.is_alive()
245
+ assert p.exitcode == 0
246
+
247
+
220
248
  def _test_dataframe_shuffle_merge(backend, protocol, n_workers):
221
249
  if backend == "cudf":
222
250
  cudf = pytest.importorskip("cudf")
@@ -302,13 +302,24 @@ def test_dataframes_share_dev_mem(root_dir):
302
302
  def test_cudf_get_device_memory_objects():
303
303
  cudf = pytest.importorskip("cudf")
304
304
  objects = [
305
- cudf.DataFrame({"a": range(10), "b": range(10)}, index=reversed(range(10))),
305
+ cudf.DataFrame(
306
+ {"a": [0, 1, 2, 3, None, 5, 6, 7, 8, 9], "b": range(10)},
307
+ index=reversed(range(10)),
308
+ ),
306
309
  cudf.MultiIndex(
307
310
  levels=[[1, 2], ["blue", "red"]], codes=[[0, 0, 1, 1], [1, 0, 1, 0]]
308
311
  ),
309
312
  ]
310
313
  res = get_device_memory_ids(objects)
311
- assert len(res) == 4, "We expect four buffer objects"
314
+ # Buffers are:
315
+ # 1. int data for objects[0].a
316
+ # 2. mask data for objects[0].a
317
+ # 3. int data for objects[0].b
318
+ # 4. int data for objects[0].index
319
+ # 5. int data for objects[1].levels[0]
320
+ # 6. char data for objects[1].levels[1]
321
+ # 7. offset data for objects[1].levels[1]
322
+ assert len(res) == 7, "We expect seven buffer objects"
312
323
 
313
324
 
314
325
  def test_externals(root_dir):
@@ -403,7 +414,7 @@ async def test_compatibility_mode_dataframe_shuffle(compatibility_mode, npartiti
403
414
  ddf = dask.dataframe.from_pandas(
404
415
  cudf.DataFrame({"key": np.arange(10)}), npartitions=npartitions
405
416
  )
406
- res = ddf.shuffle(on="key", shuffle="tasks").persist()
417
+ res = ddf.shuffle(on="key", shuffle_method="tasks").persist()
407
418
 
408
419
  # With compatibility mode on, we shouldn't encounter any proxy objects
409
420
  if compatibility_mode:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dask-cuda
3
- Version: 24.2.0a19
3
+ Version: 24.4.0
4
4
  Summary: Utilities for Dask and CUDA interactions
5
5
  Author: NVIDIA Corporation
6
6
  License: Apache-2.0
@@ -14,15 +14,16 @@ Classifier: License :: OSI Approved :: Apache Software License
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
17
18
  Requires-Python: >=3.9
18
19
  Description-Content-Type: text/markdown
19
20
  License-File: LICENSE
20
21
  Requires-Dist: click >=8.1
21
22
  Requires-Dist: numba >=0.57
22
- Requires-Dist: numpy >=1.21
23
- Requires-Dist: pandas <1.6.0.dev0,>=1.3
23
+ Requires-Dist: numpy <2.0a0,>=1.23
24
+ Requires-Dist: pandas >=1.3
24
25
  Requires-Dist: pynvml <11.5,>=11.0.0
25
- Requires-Dist: rapids-dask-dependency ==24.2.*,>=0.0.0a0
26
+ Requires-Dist: rapids-dask-dependency ==24.4.*
26
27
  Requires-Dist: zict >=2.0.0
27
28
  Provides-Extra: docs
28
29
  Requires-Dist: numpydoc >=1.1.0 ; extra == 'docs'
@@ -30,12 +31,12 @@ Requires-Dist: sphinx ; extra == 'docs'
30
31
  Requires-Dist: sphinx-click >=2.7.1 ; extra == 'docs'
31
32
  Requires-Dist: sphinx-rtd-theme >=0.5.1 ; extra == 'docs'
32
33
  Provides-Extra: test
33
- Requires-Dist: cudf ==24.2.* ; extra == 'test'
34
- Requires-Dist: dask-cudf ==24.2.* ; extra == 'test'
35
- Requires-Dist: kvikio ==24.2.* ; extra == 'test'
34
+ Requires-Dist: cudf ==24.4.* ; extra == 'test'
35
+ Requires-Dist: dask-cudf ==24.4.* ; extra == 'test'
36
+ Requires-Dist: kvikio ==24.4.* ; extra == 'test'
36
37
  Requires-Dist: pytest ; extra == 'test'
37
38
  Requires-Dist: pytest-cov ; extra == 'test'
38
- Requires-Dist: ucx-py ==0.36.* ; extra == 'test'
39
+ Requires-Dist: ucx-py ==0.37.* ; extra == 'test'
39
40
 
40
41
  Dask CUDA
41
42
  =========
@@ -1,11 +1,11 @@
1
- dask_cuda/VERSION,sha256=f7OZVJVxMaXTPGW-tA4V_zsXVn3l2dBiDE0k_JXKdJQ,12
2
- dask_cuda/__init__.py,sha256=XnMTUi-SvoGn7g1Dj6XW97HnQzGQv0G3EnvSjcZ7vU4,1455
3
- dask_cuda/_version.py,sha256=wOhN09vJAkzZyQ9x-YTQQgxa5lgLkzhYxCsOMHFUInI,778
1
+ dask_cuda/VERSION,sha256=cS6_wRwcl4ZhhE4gk3mZbC_4dD-r28YRdEQeaKdKu1U,9
2
+ dask_cuda/__init__.py,sha256=Vt42yCT1WhjZgehiNLDLw2uvfxjqLThD8uKDMyKQYsw,1454
3
+ dask_cuda/_version.py,sha256=OcuA1fDRuukb6OC8LzTwSO2aJ3ZtB1N2pm08Nrga8y8,778
4
4
  dask_cuda/cli.py,sha256=XNRH0bu-6jzRoyWJB5qSWuzePJSh3z_5Ng6rDCnz7lg,15970
5
5
  dask_cuda/cuda_worker.py,sha256=bIu-ESeIpJG_WaTYrv0z9z5juJ1qR5i_5Ng3CN1WK8s,8579
6
6
  dask_cuda/device_host_file.py,sha256=yS31LGtt9VFAG78uBBlTDr7HGIng2XymV1OxXIuEMtM,10272
7
7
  dask_cuda/disk_io.py,sha256=urSLKiPvJvYmKCzDPOUDCYuLI3r1RUiyVh3UZGRoF_Y,6626
8
- dask_cuda/get_device_memory_objects.py,sha256=zMSqWzm5rflRInbNMz7U2Ewv5nMcE-H8stMJeWHVWyc,3890
8
+ dask_cuda/get_device_memory_objects.py,sha256=R3U2cq4fJZPgtsUKyIguy9161p3Q99oxmcCmTcg6BtQ,4075
9
9
  dask_cuda/initialize.py,sha256=Gjcxs_c8DTafgsHe5-2mw4lJdOmbFJJAZVOnxA8lTjM,6462
10
10
  dask_cuda/is_device_object.py,sha256=CnajvbQiX0FzFzwft0MqK1OPomx3ZGDnDxT56wNjixw,1046
11
11
  dask_cuda/is_spillable_object.py,sha256=CddGmg0tuSpXh2m_TJSY6GRpnl1WRHt1CRcdWgHPzWA,1457
@@ -28,26 +28,26 @@ dask_cuda/benchmarks/utils.py,sha256=baL5zK6VS6Mw_M4x9zJe8vMLUd2SZd1lS78JrL-h6oo
28
28
  dask_cuda/explicit_comms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  dask_cuda/explicit_comms/comms.py,sha256=Su6PuNo68IyS-AwoqU4S9TmqWsLvUdNa0jot2hx8jQQ,10400
30
30
  dask_cuda/explicit_comms/dataframe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- dask_cuda/explicit_comms/dataframe/shuffle.py,sha256=2f2wlPyqXpryIHgMpsZzs3pDE7eyslYam-jQh3ujszQ,20124
31
+ dask_cuda/explicit_comms/dataframe/shuffle.py,sha256=YferHNWKsMea8tele-ynPVr_6RAZNZIR-VzK_uFuEQU,20131
32
32
  dask_cuda/tests/test_cudf_builtin_spilling.py,sha256=u3kW91YRLdHFycvpGfSQKrEucu5khMJ1k4sjmddO490,4910
33
33
  dask_cuda/tests/test_dask_cuda_worker.py,sha256=gViHaMCSfB6ip125OEi9D0nfKC-qBXRoHz6BRodEdb4,17729
34
34
  dask_cuda/tests/test_device_host_file.py,sha256=79ssUISo1YhsW_7HdwqPfsH2LRzS2bi5BjPym1Sdgqw,5882
35
- dask_cuda/tests/test_dgx.py,sha256=IDP5vxDgVx6n2Hm-7PhlZQFb_zlgn_3nBW9t7MeJcTM,6986
36
- dask_cuda/tests/test_explicit_comms.py,sha256=AZlBi16prk3hc0ydzqAGecMcYZeyUvu6Pecb7gY_0yY,12315
35
+ dask_cuda/tests/test_dgx.py,sha256=Oh2vwL_CdUzSVQQoiIu6SPwXGRtmXwaW_Hh3ipXPUOc,7162
36
+ dask_cuda/tests/test_explicit_comms.py,sha256=I4lSW-NQ0E08baEoG7cY4Ix3blGb1Auz88q2BNd1cPA,13136
37
37
  dask_cuda/tests/test_from_array.py,sha256=okT1B6UqHmLxoy0uER0Ylm3UyOmi5BAXwJpTuTAw44I,601
38
38
  dask_cuda/tests/test_gds.py,sha256=6jf0HPTHAIG8Mp_FC4Ai4zpn-U1K7yk0fSXg8He8-r8,1513
39
39
  dask_cuda/tests/test_initialize.py,sha256=Rba59ZbljEm1yyN94_sWZPEE_f7hWln95aiBVc49pmY,6960
40
40
  dask_cuda/tests/test_local_cuda_cluster.py,sha256=G3kR-4o-vCqWWfSuQLFKVEK0F243FaDSgRlDTUll5aU,18376
41
- dask_cuda/tests/test_proxify_host_file.py,sha256=cp-U1uNPhesQaHbftKV8ir_dt5fbs0ZXSIsL39oI0fE,18630
41
+ dask_cuda/tests/test_proxify_host_file.py,sha256=Yiv0sDcUoWw0d2oiPeHGoHqqSSM4lfQ4rChCiaxb6EU,18994
42
42
  dask_cuda/tests/test_proxy.py,sha256=6iicSYYT2BGo1iKUQ7jM00mCjC4gtfwwxFXfGwH3QHc,23807
43
43
  dask_cuda/tests/test_spill.py,sha256=xN9PbVERBYMuZxvscSO0mAM22loq9WT3ltZVBFxlmM4,10239
44
44
  dask_cuda/tests/test_utils.py,sha256=JRIwXfemc3lWSzLJX0VcvR1_0wB4yeoOTsw7kB6z6pU,9176
45
45
  dask_cuda/tests/test_worker_spec.py,sha256=Bvu85vkqm6ZDAYPXKMJlI2pm9Uc5tiYKNtO4goXSw-I,2399
46
46
  examples/ucx/client_initialize.py,sha256=YN3AXHF8btcMd6NicKKhKR9SXouAsK1foJhFspbOn70,1262
47
47
  examples/ucx/local_cuda_cluster.py,sha256=7xVY3EhwhkY2L4VZin_BiMCbrjhirDNChoC86KiETNc,1983
48
- dask_cuda-24.2.0a19.dist-info/LICENSE,sha256=MjI3I-EgxfEvZlgjk82rgiFsZqSDXHFETd2QJ89UwDA,11348
49
- dask_cuda-24.2.0a19.dist-info/METADATA,sha256=xSO6BsLRFAAXfzjN7sqhEU7xUyY4tALSEG_uwpVHXww,2537
50
- dask_cuda-24.2.0a19.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
51
- dask_cuda-24.2.0a19.dist-info/entry_points.txt,sha256=UcRaKVEpywtxc6pF1VnfMB0UK4sJg7a8_NdZF67laPM,136
52
- dask_cuda-24.2.0a19.dist-info/top_level.txt,sha256=3kKxJxeM108fuYc_lwwlklP7YBU9IEmdmRAouzi397o,33
53
- dask_cuda-24.2.0a19.dist-info/RECORD,,
48
+ dask_cuda-24.4.0.dist-info/LICENSE,sha256=MjI3I-EgxfEvZlgjk82rgiFsZqSDXHFETd2QJ89UwDA,11348
49
+ dask_cuda-24.4.0.dist-info/METADATA,sha256=mjy5YntsqIKdldcPEj-jjR70Aphe-B0LXqjcZjVFS9U,2570
50
+ dask_cuda-24.4.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
51
+ dask_cuda-24.4.0.dist-info/entry_points.txt,sha256=UcRaKVEpywtxc6pF1VnfMB0UK4sJg7a8_NdZF67laPM,136
52
+ dask_cuda-24.4.0.dist-info/top_level.txt,sha256=3kKxJxeM108fuYc_lwwlklP7YBU9IEmdmRAouzi397o,33
53
+ dask_cuda-24.4.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5