





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

import torch_xla.distributed.xla_multiprocessing as xmp

def     UpperCAmelCase_						(						)  ->							List[Any]:
     '''simple docstring'''


     A_					      =					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=lowercase__     ,	default=1     ,	help='''Number of TPU cores to use (1 or 8).'''							)

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

     return parser.parse_args()

def     UpperCAmelCase_						(						)  ->							Optional[Any]:
     '''simple docstring'''


     A_					      =					parse_args()

     # Import training_script as a module.
     A_					      =					Path(args.training_script							)
     sys.path.append(str(script_fpath.parent.resolve()							)							)
     A_					      =					script_fpath.stem
     A_					      =					importlib.import_module(lowercase__							)

     # Patch sys.argv
     A_					      =					[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()










from __future__ import annotations

def     UpperCAmelCase_						(						_UpperCAmelCase       :list							)  ->							int | float:
     '''simple docstring'''


     A_					      =					sorted(_UpperCAmelCase							)
     A_					      =					len(_UpperCAmelCase							)
     A_					      =					length >> 1
     return (
         (sorted_list[mid_index] + sorted_list[mid_index - 1]) / 2
         if length % 2 == 0
         else sorted_list[mid_index]
     )

def     UpperCAmelCase_						(						)  ->							Optional[Any]:
     '''simple docstring'''


     import doctest

     doctest.testmod()


if __name__ == "__main__":
      main()



