






'''simple docstring'''

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

import torch_xla.distributed.xla_multiprocessing as xmp



def 							snake_case					(     )       ->				Any:





      """simple docstring"""

      UpperCamelCase_				:   int					    =							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=a_    ,   default=1    ,   help="""Number of TPU cores to use (1 or 8)."""	)

      # positional
      parser.add_argument(
          """training_script"""    ,   type=a_    ,   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=a_	)

      return parser.parse_args()



def 							snake_case					(     )       ->				Optional[int]:





      """simple docstring"""

      UpperCamelCase_				:   Tuple					    =							parse_args()

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

      # Patch sys.argv
      UpperCamelCase_				:   Tuple					    =							[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'''

# flake8: noqa
# Lint as: python3
UpperCamelCase							=[
    "VerificationMode",
    "Version",
    "disable_progress_bar",
    "enable_progress_bar",
    "is_progress_bar_enabled",
    "experimental",
]

from .info_utils import VerificationMode
from .logging import disable_progress_bar, enable_progress_bar, is_progress_bar_enabled
from .version import Version
from .experimental import experimental






