


from __future__ import annotations

from enum import Enum





class        lowercase_				( _SCREAMING_SNAKE_CASE):






							"""simple docstring"""







							snake_case_        =		24
							snake_case_        =		21
							snake_case_        =		18
							snake_case_        =		15
							snake_case_        =		12
							snake_case_        =		9
							snake_case_        =		6
							snake_case_        =		3
							snake_case_        =		2
							snake_case_        =		1
							snake_case_        =		-1
							snake_case_        =		-2
							snake_case_        =		-3
							snake_case_        =		-6
							snake_case_        =		-9
							snake_case_        =		-12
							snake_case_        =		-15
							snake_case_        =		-18
							snake_case_        =		-21
							snake_case_        =		-24





class        lowercase_				( _SCREAMING_SNAKE_CASE):






							"""simple docstring"""







							snake_case_        =		8
							snake_case_        =		7
							snake_case_        =		6
							snake_case_        =		5
							snake_case_        =		4
							snake_case_        =		3
							snake_case_        =		2
							snake_case_        =		1




def   lowerCamelCase_       (					UpperCAmelCase__       ,    UpperCAmelCase__       ,    UpperCAmelCase__       ,    ):



						"""simple docstring"""




						if isinstance(UpperCAmelCase__       ,    UpperCAmelCase__		):
												a_					=		SIUnit[known_prefix.lower()]
						if isinstance(UpperCAmelCase__       ,    UpperCAmelCase__		):
												a_					=		SIUnit[unknown_prefix.lower()]
						a_					=		known_amount * (
						    10 ** (known_prefix.value - unknown_prefix.value)
						)
						return unknown_amount




def   lowerCamelCase_       (					UpperCAmelCase__       ,    UpperCAmelCase__       ,    UpperCAmelCase__       ,    ):



						"""simple docstring"""




						if isinstance(UpperCAmelCase__       ,    UpperCAmelCase__		):
												a_					=		BinaryUnit[known_prefix.lower()]
						if isinstance(UpperCAmelCase__       ,    UpperCAmelCase__		):
												a_					=		BinaryUnit[unknown_prefix.lower()]
						a_					=		known_amount * (
						    2 ** ((known_prefix.value - unknown_prefix.value) * 10)
						)
						return unknown_amount


if __name__ == "__main__":
	import doctest

	doctest.testmod()



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

import torch_xla.distributed.xla_multiprocessing as xmp




def   lowerCamelCase_       (					):



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

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

						return parser.parse_args()




def   lowerCamelCase_       (					):



						"""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(UpperCAmelCase__      )

						# 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()