
"""simple docstring"""




import argparse
import os

from accelerate.utils import ComputeEnvironment

from .cluster import get_cluster_input
from .config_args import cache_dir, default_config_file, default_yaml_config_file, load_config_from_file  # noqa: F401
from .config_utils import _ask_field, _ask_options, _convert_compute_environment  # noqa: F401
from .sagemaker import get_sagemaker_input


A__      :	int          =    """Launches a series of prompts to create and save a `default_config.yaml` configuration file for your training system. Should always be ran first on your machine"""



def 							a__ (				):






     '''simple docstring'''
     UpperCAmelCase__							: Union[str, Any] 							=						_ask_options(
         "In which compute environment are you running?"       ,    ["This machine", "AWS (Amazon SageMaker)"]       ,    _convert_compute_environment       ,    )
     if compute_environment == ComputeEnvironment.AMAZON_SAGEMAKER:
          UpperCAmelCase__							: Tuple 							=						get_sagemaker_input()
     else:
          UpperCAmelCase__							: str 							=						get_cluster_input()
     return config



def 							a__ (				lowerCAmelCase	:       List[str]=None		):






     '''simple docstring'''
     if subparsers is not None:
          UpperCAmelCase__							: Dict 							=						subparsers.add_parser("config"       ,    description=lowerCAmelCase		)
     else:
          UpperCAmelCase__							: Dict 							=						argparse.ArgumentParser("Accelerate config command"       ,    description=lowerCAmelCase		)

     parser.add_argument(
         "--config_file"       ,    default=lowerCAmelCase       ,    help=(
             "The path to use to store the config file. Will default to a file named default_config.yaml in the cache "
             "location, which is the content of the environment `HF_HOME` suffixed with \'accelerate\', or if you don\'t have "
             "such an environment variable, your cache directory (\'~/.cache\' or the content of `XDG_CACHE_HOME`) suffixed "
             "with \'huggingface\'."
         )       ,    )

     if subparsers is not None:
          parser.set_defaults(func=lowerCAmelCase		)
     return parser



def 							a__ (				lowerCAmelCase	:       Union[str, Any]		):






     '''simple docstring'''
     UpperCAmelCase__							: Any 							=						get_user_input()
     if args.config_file is not None:
          UpperCAmelCase__							: int 							=						args.config_file
     else:
          if not os.path.isdir(lowerCAmelCase		):
               os.makedirs(lowerCAmelCase		)
          UpperCAmelCase__							: Union[str, Any] 							=						default_yaml_config_file

     if config_file.endswith(".json"		):
          config.to_json_file(lowerCAmelCase		)
     else:
          config.to_yaml_file(lowerCAmelCase		)
     print(F"accelerate configuration saved at {config_file}"		)



def 							a__ (				):






     '''simple docstring'''
     UpperCAmelCase__							: Optional[int] 							=						config_command_parser()
     UpperCAmelCase__							: Tuple 							=						parser.parse_args()
     config_command(lowerCAmelCase		)


if __name__ == "__main__":
    main()


"""simple docstring"""




from timeit import timeit



def 							a__ (				lowerCAmelCase	:       int		):






     '''simple docstring'''
     if number < 0:
          raise ValueError("the value of input must not be negative"		)
     UpperCAmelCase__							: Tuple 							=						0
     while number:
          number &= number - 1
          result += 1
     return result



def 							a__ (				lowerCAmelCase	:       int		):






     '''simple docstring'''
     if number < 0:
          raise ValueError("the value of input must not be negative"		)
     UpperCAmelCase__							: Union[str, Any] 							=						0
     while number:
          if number % 2 == 1:
               result += 1
          number >>= 1
     return result



def 							a__ (				):






     '''simple docstring'''

     def do_benchmark(lowerCAmelCase	:       int		) -> None:
          UpperCAmelCase__							: Dict 							=						"import __main__ as z"
          print(F"Benchmark when {number = }:"		)
          print(F"{get_set_bits_count_using_modulo_operator(lowerCAmelCase		) = }"		)
          UpperCAmelCase__							: Tuple 							=						timeit("z.get_set_bits_count_using_modulo_operator(25)"       ,    setup=lowerCAmelCase		)
          print(F"timeit() runs in {timing} seconds"		)
          print(F"{get_set_bits_count_using_brian_kernighans_algorithm(lowerCAmelCase		) = }"		)
          UpperCAmelCase__							: Any 							=						timeit(
              "z.get_set_bits_count_using_brian_kernighans_algorithm(25)"       ,    setup=lowerCAmelCase       ,    )
          print(F"timeit() runs in {timing} seconds"		)

     for number in (25, 37, 58, 0):
          do_benchmark(lowerCAmelCase		)
          print()


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    benchmark()



