
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'''

						_lowercase					:  str    			=      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 		UpperCamelCase    (					)      -> str:






						'''simple docstring'''

						_lowercase					:  Dict    			=      parse_args()

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

						# Patch sys.argv
						_lowercase					:  Optional[int]    			=      [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]   , _UpperCAmelCase     :      int     )      -> int:






						'''simple docstring'''

						_lowercase			,						_lowercase					:  Any    			=      0, len(_UpperCAmelCase     ) - 1
						while start_ind <= end_ind:
												if array[start_ind] == search_item:
																		return start_ind
												elif array[end_ind] == search_item:
																		return end_ind
												else:
																		start_ind += 1
																		end_ind -= 1
    # returns -1 if search_item is not found in array
						return -1


if __name__ == "__main__":
							print(double_linear_search(list(range(100)), 40))




