code: def submit_jobs(args) -> str:
      # read the json file and get the remaining argument here.
      schema_path = args.metadata_filename
      with open(os.path.join(args.in_dir, schema_path)) as schema:
          schema_map = json.load(schema)
  
      graph_name = schema_map["graph_name"]
  
      # retrieve num_parts
      num_parts = 0
      partition_path = os.path.join(
          args.partitions_dir, "partition_meta.json"
      )
      if os.path.isfile(partition_path):
          part_meta = load_partition_meta(partition_path)
          num_parts = part_meta.num_parts
  
      assert (
          num_parts != 0
      ), f"Invalid value for no. of partitions. Please check partition_meta.json file."
  
      # verify ip_config
      with open(args.ip_config, "r") as f:
          num_ips = len(f.readlines())
          assert (
              num_parts % num_ips == 0
          ), f"The num_parts[{args.num_parts}] should be a multiple of number of lines(ip addresses)[{args.ip_config}]."
  
      argslist = ""
      argslist += "--world-size {} ".format(num_ips)
      argslist += "--partitions-dir {} ".format(
          os.path.abspath(args.partitions_dir)
      )
      argslist += "--input-dir {} ".format(os.path.abspath(args.in_dir))
      argslist += "--graph-name {} ".format(graph_name)
      argslist += "--schema {} ".format(schema_path)
      argslist += "--num-parts {} ".format(num_parts)
      argslist += "--output {} ".format(os.path.abspath(args.out_dir))
      argslist += "--process-group-timeout {} ".format(
          args.process_group_timeout
      )
      argslist += "--log-level {} ".format(args.log_level)
      argslist += "--save-orig-nids " if args.save_orig_nids else ""
      argslist += "--save-orig-eids " if args.save_orig_eids else ""
      argslist += (
          f"--graph-formats {args.graph_formats} "
          if args.graph_formats
          else ""
      )
  
      # (BarclayII) Is it safe to assume all the workers have the Python executable at the same path?
      pipeline_cmd = os.path.join(INSTALL_DIR, PIPELINE_SCRIPT)
      udf_cmd = f"{args.python_path} {pipeline_cmd} {argslist}"
  
      launch_cmd = get_launch_cmd(args)
      launch_cmd += '"' + udf_cmd + '"'
  
      print(launch_cmd)
      os.system(launch_cmd)
  
file_path: dgl/tools/dispatch_data.py
imports: import argparse
  import json
  import logging
  import os
  import sys
  from partition_algo.base import load_partition_meta
label_desc: Use image node_id 2 for calling a global function with example usage: submit_jobs(args) without return types