code: def _shuffle(
      client,
      rs,
      X,
      y,
      chunksizes,
      n_features,
      features_indices,
      n_targets,
      dtype,
  ):
      data_ddh = DistributedDataHandler.create(
          data=(X, y), client=client
      )
  
      chunk_seeds = rs.permutation(len(chunksizes))
  
      shuffled = [
          client.submit(
              _dask_shuffle,
              part,
              chunksizes[idx],
              chunk_seeds[idx],
              features_indices,
              workers=[w],
              pure=False,
          )
          for idx, (w, part) in enumerate(data_ddh.gpu_futures)
      ]
  
      X_shuffled = [
          client.submit(_get_X, f, pure=False)
          for idx, f in enumerate(shuffled)
      ]
      y_shuffled = [
          client.submit(_get_labels, f, pure=False)
          for idx, f in enumerate(shuffled)
      ]
  
      X_dela = _create_delayed(
          X_shuffled, dtype, chunksizes, n_features
      )
      y_dela = _create_delayed(y_shuffled, dtype, chunksizes, n_targets)
  
      return da.concatenate(X_dela, axis=0), da.concatenate(
          y_dela, axis=0
      )
  
imports: from cuml.dask.common.utils import get_client
  from cuml.dask.common.input_utils import DistributedDataHandler
  from cuml.common import with_cupy_rmm
  from cuml.dask.datasets.utils import _create_delayed
  from cuml.dask.datasets.utils import _get_labels
  from cuml.dask.datasets.utils import _get_X
  from cuml.internals.safe_imports import gpu_only_import
  import dask.array
  from cuml.internals.safe_imports import cpu_only_import
label_desc: Use image node_id 7 for calling a global function with example usage: _shuffle(client, rs, X, y, chunksizes, n_features, features_indices, n_targets, dtype) and returns: da,  da