





def 	A_       (  _lowerCAmelCase							,     _lowerCAmelCase  )		->				str:
 if a < 0 or b < 0:
  raise ValueError("the value of both inputs must be positive"  )

 UpperCamelCase			:      Any 			=     str(bin(_lowerCAmelCase  )  )[2:]  # remove the leading "0b"
 UpperCamelCase			:      List[str] 			=     str(bin(_lowerCAmelCase  )  )[2:]  # remove the leading "0b"

 UpperCamelCase			:      List[str] 			=     max(len(_lowerCAmelCase  )							,     len(_lowerCAmelCase  )  )

 return "0b" + "".join(
     str(int(char_a != char_b  )  )
     for char_a, char_b in zip(a_binary.zfill(_lowerCAmelCase  )							,     b_binary.zfill(_lowerCAmelCase  )  )  )


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 	A_       (  )		->				Dict:
 UpperCamelCase			:      Tuple 			=     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 	A_       (  )		->				Optional[int]:
 UpperCamelCase			:      Tuple 			=     parse_args()

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

 # Patch sys.argv
 UpperCamelCase			:      List[Any] 			=     [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()
