code: def _dask_make_low_rank_covariance(
      n_features,
      effective_rank,
      tail_strength,
      seed,
      n_parts,
      n_samples_per_part,
      dtype,
  ):
      """
      This approach is a faster approach than making X as a full low
      rank matrix. Here, we take advantage of the fact that with
      SVD, X * X^T = V * S^2 * V^T. This means that we can
      generate a covariance matrix by generating only the right
      eigen-vector and the squared, low-rank singular values.
      With a memory usage of only O(n_features ^ 2) in this case, we pass
      this covariance matrix to workers to generate each part of X
      embarrassingly parallel from a multi-variate normal with mean 0
      and generated covariance.
      """
      local_rs = cp.random.RandomState(seed=seed)
      m2 = local_rs.standard_normal(
          (n_features, n_features), dtype=dtype
      )
      v, _ = cp.linalg.qr(m2)
  
      s = _generate_singular_values(
          n_features, effective_rank, tail_strength, n_samples_per_part
      )
  
      v *= s**2
      return cp.dot(v, cp.transpose(v))
  
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 11 for calling a global function with example usage: _dask_make_low_rank_covariance(n_features, effective_rank, tail_strength, seed, n_parts, n_samples_per_part, dtype) and returns: cp