




"""simple docstring"""


import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp


def       UpperCAmelCase__ ():
  """simple docstring"""

  _snake_case							:	Union[str, Any]			=						ArgumentParser(
      description=(
          """PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes"""
      )					)

  # Optional arguments for the launch helper
  parser.add_argument("""--num_cores"""	,     type=snake_case__	,     default=1	,     help="""Number of TPU cores to use (1 or 8)."""					)

  # positional
  parser.add_argument(
      """training_script"""	,     type=snake_case__	,     help=(
          """The full path to the single TPU training """
          """program/script to be launched in parallel, """
          """followed by all the arguments for the """
          """training script"""
      )	,     )

  # rest from the training program
  parser.add_argument("""training_script_args"""	,     nargs=snake_case__					)

  return parser.parse_args()


def       UpperCAmelCase__ ():
  """simple docstring"""

  _snake_case							:	int			=						parse_args()

  # Import training_script as a module.
  _snake_case							:	int			=						Path(args.training_script					)
  sys.path.append(str(script_fpath.parent.resolve()					)					)
  _snake_case							:	List[str]			=						script_fpath.stem
  _snake_case							:	Any			=						importlib.import_module(snake_case__					)

  # Patch sys.argv
  _snake_case							:	int			=						[args.training_script] + args.training_script_args + ["""--tpu_num_cores""", str(args.num_cores					)]

  xmp.spawn(mod._mp_fn	,     args=()	,     nprocs=args.num_cores					)


if __name__ == "__main__":
     main()








"""simple docstring"""


from abc import ABC, abstractmethod
from argparse import ArgumentParser






class       lowercase(  __a				):







 '''simple docstring'''





 @staticmethod
 @abstractmethod
 def 				UpperCamelCase_     (       a_:	ArgumentParser	):




   '''simple docstring'''



   raise NotImplementedError()


 @abstractmethod
 def 				UpperCamelCase_     (       self:	List[str]	):




   '''simple docstring'''



   raise NotImplementedError()


