


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

import torch_xla.distributed.xla_multiprocessing as xmp





def   _UpperCAmelCase       (     ):
      """simple docstring"""




      __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=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       (     ):
      """simple docstring"""




      __lowerCamelCase     :      int       						=						parse_args()

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

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







def   _UpperCAmelCase       (     UpperCAmelCase      :			int = 4_000_000      ):
      """simple docstring"""




      __lowerCamelCase     :      Union[str, Any]       						=						[0, 1]
      __lowerCamelCase     :      Dict       						=						0
      while fib[i] <= n:
            fib.append(fib[i] + fib[i + 1]      )
            if fib[i + 2] > n:
                  break
            i += 1
      __lowerCamelCase     :      Any       						=						0
      for j in range(len(UpperCAmelCase      ) - 1      ):
            if fib[j] % 2 == 0:
                  total += fib[j]

      return total


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



