"""simple docstring"""




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

import torch_xla.distributed.xla_multiprocessing as xmp





def 							SCREAMING_SNAKE_CASE     (			)       ->      str:
  _lowerCAmelCase						:       Optional[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=_lowerCamelCase			,default=1			,help="""Number of TPU cores to use (1 or 8)."""	)

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

  return parser.parse_args()





def 							SCREAMING_SNAKE_CASE     (			)       ->      Optional[Any]:
  _lowerCAmelCase						:       List[Any]  			=     parse_args()

  # Import training_script as a module.
  _lowerCAmelCase						:       Optional[Any]  			=     Path(args.training_script	)
  sys.path.append(str(script_fpath.parent.resolve()	)	)
  _lowerCAmelCase						:       Union[str, Any]  			=     script_fpath.stem
  _lowerCAmelCase						:       Optional[Any]  			=     importlib.import_module(_lowerCamelCase	)

  # Patch sys.argv
  _lowerCAmelCase						:       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()








def 						_UpperCAmelCase				(			SCREAMING_SNAKE_CASE__			:					int = 10**12				):
     __UpperCamelCase    							=1
     __UpperCamelCase    							=0

     __UpperCamelCase    							=1
     __UpperCamelCase    							=1

     while numerator <= 2 * min_total - 1:
          prev_numerator += 2 * numerator
          numerator += 2 * prev_numerator

          prev_denominator += 2 * denominator
          denominator += 2 * prev_denominator

     return (denominator + 1) // 2


if __name__ == "__main__":
   print(f"""{solution() = }""")





