code: def track_time(graph_name, format, feat_size, reduce_type):
      device = utils.get_bench_device()
      graph = utils.get_graph(graph_name, format)
      graph = graph.to(device)
      graph.ndata["h"] = torch.randn(
          (graph.num_nodes(), feat_size), device=device
      )
  
      reduce_udf_dict = {
          "u->e": lambda edges: {"x": edges.src["h"]},
          "u+v": lambda edges: {"x": edges.src["h"] + edges.dst["h"]},
      }
  
      # dry run
      graph.apply_edges(reduce_udf_dict[reduce_type])
  
      # timing
      with utils.Timer() as t:
          for i in range(3):
              graph.apply_edges(reduce_udf_dict[reduce_type])
  
      return t.elapsed_secs / 3
  
imports: import time
  import dgl
  import dgl.function
  import numpy
  import torch
  from ..None import utils
label_desc: Use image node_id 1 for calling a global function with example usage: track_time(graph_name, format, feat_size, reduce_type) and returns: unknown