docstr: Return an undirected copy of the graph.
  
  Returns
  -------
  G : Graph
      A undirected graph with the same nodes, and each directed edge
      (u,v,weights) replaced by an undirected edge (u,v,weights).
  
  Examples
  --------
  >>> M = dask_cudf.read_csv(datasets_path / 'karate.csv', delimiter=' ',
  ...         dtype=['int32', 'int32', 'float32'], header=None)
  >>> DiG = cugraph.Graph(directed=True)
  >>> DiG.dask_from_cudf_edgelist(M, '0', '1')
  >>> G = DiG.to_undirected()
docstr_tok: ["Return","an","undirected","copy","of","the","graph",".","Returns","--","--","--","-","G",":","Graph","A","undirected","graph","with","the","same","nodes",",","and","each","directed","edge","(","u",",","v",",","weights",")","replaced","by","an","undirected","edge","(","u",",","v",",","weights",")",".","Examples","--","--","--","--",">",">",">","M","=","dask_cudf.read_csv","(","datasets_path","\/","'karate.csv","'",",","delimiter=","'","'",",","...","dtype=","[","'int32","'",",","'int32","'",",","'float32","'","]",",","header=None",")",">",">",">","DiG","=","cugraph.Graph","(","directed=True",")",">",">",">","DiG.dask_from_cudf_edgelist","(","M",",","'","0","'",",","'","1","'",")",">",">",">","G","=","DiG.to_undirected","(",")"]
code: def to_undirected(self, G):
      """
      Return an undirected copy of the graph.
  
      Returns
      -------
      G : Graph
          A undirected graph with the same nodes, and each directed edge
          (u,v,weights) replaced by an undirected edge (u,v,weights).
  
      Examples
      --------
      >>> M = dask_cudf.read_csv(datasets_path / 'karate.csv', delimiter=' ',
      ...         dtype=['int32', 'int32', 'float32'], header=None)
      >>> DiG = cugraph.Graph(directed=True)
      >>> DiG.dask_from_cudf_edgelist(M, '0', '1')
      >>> G = DiG.to_undirected()
      """
  
      # TODO: Add support
      raise NotImplementedError("Not supported for distributed graph")
  
imports: import gc
  from typing import Union
  import warnings
  import cudf
  import cupy
  import dask
  import dask_cudf
  from dask import delayed
  from dask.distributed import wait, default_client
  import numpy
  from pylibcugraph import MGGraph, ResourceHandle, GraphProperties, get_two_hop_neighbors, select_random_vertices
  from cugraph.structure import graph_primtypes_wrapper
  from cugraph.structure.graph_primtypes_wrapper import Direction
  from cugraph.structure.number_map import NumberMap
  from cugraph.structure.symmetrize import symmetrize
  from cugraph.dask.common.part_utils import get_persisted_df_worker_map, persist_dask_df_equal_parts_per_worker
  from cugraph.dask.common.mg_utils import run_gc_on_dask_cluster
  from cugraph.dask import get_n_workers
  import cugraph.dask.comms.comms
label_desc: Use image node_id 19 for calling the simpleDistributedGraphImpl obj's underlying member method code with example usage: obj.to_undirected(G) without return types