code: def load_dgl_dataset(dataset_name="ogbn-products"):
      from ogb.nodeproppred import DglNodePropPredDataset
  
      dataset = DglNodePropPredDataset(name=dataset_name)
      split_idx = dataset.get_idx_split()
      train_idx, valid_idx, test_idx = (
          split_idx["train"],
          split_idx["valid"],
          split_idx["test"],
      )
      g, label = dataset[0]
      g.ndata["label"] = label
      if len(g.etypes) <= 1:
          g = dgl.add_self_loop(g)
      else:
          for etype in g.etypes:
              if etype[0] == etype[2]:
                  # only add self loops for src->dst
                  g = dgl.add_self_loop(g, etype=etype)
  
      g = g.int()
      train_idx = train_idx.int()
      valid_idx = valid_idx.int()
      test_idx = test_idx.int()
      return g, train_idx, valid_idx, test_idx, dataset.num_classes
  
file_path: cugraph/python/cugraph-dgl/examples/multi_trainer_MG_example/workflow.py
imports: import dgl
  import torch
  import time
  from distributed import Client, Event
  import tempfile
  from cugraph.dask.comms import comms
label_desc: Use image node_id 5 for calling a global function with example usage: load_dgl_dataset(dataset_name) and returns: g,  train_idx,  valid_idx,  test_idx,  dataset