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

import torch_xla.distributed.xla_multiprocessing as xmp






def _lowerCamelCase  (		):
							_lowerCAmelCase							=							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 _lowerCamelCase  (		):
							_lowerCAmelCase							=							parse_args()

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

							# Patch sys.argv
							_lowerCAmelCase							=							[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 math import ceil, sqrt






def _lowerCamelCase  (		snake_case = 1_000_000  ):
							_lowerCAmelCase							=							0

							for outer_width in range(3     , (limit // 4) + 2  ):
														if outer_width**2 > limit:
																					_lowerCAmelCase							=							max(ceil(sqrt(outer_width**2 - limit  )  )     , 1  )
														else:
																					_lowerCAmelCase							=							1
														if (outer_width - hole_width_lower_bound) % 2:
																					hole_width_lower_bound += 1

														answer += (outer_width - hole_width_lower_bound - 2) // 2 + 1

							return answer


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






