



"""simple docstring"""






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

import torch_xla.distributed.xla_multiprocessing as xmp


def     _lowercase       (						)		->     str:
   __lowerCAmelCase   :						Dict				= 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     _lowercase       (						)		->     Optional[Any]:
   __lowerCAmelCase   :						Tuple				= parse_args()

   # Import training_script as a module.
   __lowerCAmelCase   :						Dict				= Path(args.training_script			)
   sys.path.append(str(script_fpath.parent.resolve()			)			)
   __lowerCAmelCase   :						str				= script_fpath.stem
   __lowerCAmelCase   :						Optional[int]				= importlib.import_module(__snake_case			)

   # Patch sys.argv
   __lowerCAmelCase   :						List[str]				= [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 ..utils import DummyObject, requires_backends



class     A__     (						metaclass=__SCREAMING_SNAKE_CASE							):




	'''simple docstring'''





	SCREAMING_SNAKE_CASE					   =			['torch', 'scipy']

	def __init__(  self:	Tuple ,    *_SCREAMING_SNAKE_CASE:	Dict ,    **_SCREAMING_SNAKE_CASE:	str)       -> Union[str, Any]:

				"""simple docstring"""

				requires_backends(self ,    ["torch", "scipy"])

	@classmethod
	def 							_SCREAMING_SNAKE_CASE     (  cls:	Optional[Any] ,    *_SCREAMING_SNAKE_CASE:	Tuple ,    **_SCREAMING_SNAKE_CASE:	Optional[Any])       -> Optional[Any]:

				"""simple docstring"""

				requires_backends(cls ,    ["torch", "scipy"])







	@classmethod
	def 							_SCREAMING_SNAKE_CASE     (  cls:	int ,    *_SCREAMING_SNAKE_CASE:	List[Any] ,    **_SCREAMING_SNAKE_CASE:	Dict)       -> Union[str, Any]:

				"""simple docstring"""

				requires_backends(cls ,    ["torch", "scipy"])