





'''simple docstring'''







from dataclasses import dataclass, field
from typing import Tuple

from ..utils import cached_property, is_torch_available, is_torch_tpu_available, logging, requires_backends
from .benchmark_args_utils import BenchmarkArguments


if is_torch_available():
					import torch

if is_torch_tpu_available(check_device=False):
					import torch_xla.core.xla_model as xm


lowerCAmelCase_					:    Optional[int]      	=			logging.get_logger(__name__)
@dataclass
class 				__SCREAMING_SNAKE_CASE  (lowerCamelCase_      ):






				"""simple docstring"""







				__a            =[
				    'no_inference',
				    'no_cuda',
				    'no_tpu',
				    'no_speed',
				    'no_memory',
				    'no_env_print',
				    'no_multi_process',
				]




				def __init__(  self     :					List[Any]					,				**__a     :					Optional[int]					):
								for deprecated_arg in self.deprecated_args:
												if deprecated_arg in kwargs:
																_a								= deprecated_arg[3:]
																setattr(self					,				__a					,				not kwargs.pop(__a					)					)
																logger.warning(
																    f'{deprecated_arg} is depreciated. Please use --no_{positive_arg} or'
																    f' {positive_arg}={kwargs[positive_arg]}'					)

								_a								= kwargs.pop("torchscript"					,				self.torchscript					)
								_a								= kwargs.pop("torch_xla_tpu_print_metrics"					,				self.torch_xla_tpu_print_metrics					)
								_a								= kwargs.pop("fp16_opt_level"					,				self.fpaa_opt_level					)
								super().__init__(**__a					)

				__a            =field(default=lowerCamelCase_       ,							metadata={'help': 'Trace the models using torchscript'}      )
				__a            =field(default=lowerCamelCase_       ,							metadata={'help': 'Print Xla/PyTorch tpu metrics'}      )
				__a            =field(
				    default='O1'       ,							metadata={
				        'help': (
				            'For fp16: Apex AMP optimization level selected in [\'O0\', \'O1\', \'O2\', and \'O3\']. '
				            'See details at https://nvidia.github.io/apex/amp.html'
				        )
				    }       ,							)




				@cached_property
				def   UpperCamelCase__   (  self     :					Any					):
								requires_backends(self					,				["torch"]					)
								logger.info("PyTorch: setting up devices"					)
								if not self.cuda:
												_a								= torch.device("cpu"					)
												_a								= 0
								elif is_torch_tpu_available():
												_a								= xm.xla_device()
												_a								= 0
								else:
												_a								= torch.device("cuda" if torch.cuda.is_available() else "cpu"					)
												_a								= torch.cuda.device_count()
								return device, n_gpu




				@property
				def   UpperCamelCase__   (  self     :					int					):
								return is_torch_tpu_available() and self.tpu




				@property
				def   UpperCamelCase__   (  self     :					Optional[Any]					):
								requires_backends(self					,				["torch"]					)
								# TODO(PVP): currently only single GPU is supported
								return torch.cuda.current_device()




				@property
				def   UpperCamelCase__   (  self     :					Optional[int]					):
								requires_backends(self					,				["torch"]					)
								return self._setup_devices[0]




				@property
				def   UpperCamelCase__   (  self     :					Union[str, Any]					):
								requires_backends(self					,				["torch"]					)
								return self._setup_devices[1]




				@property
				def   UpperCamelCase__   (  self     :					Dict					):
								return self.n_gpu > 0







'''simple docstring'''







def  _lowerCamelCase				( lowercase						:      int						)	->	bool:
				_a								= n ** (1 / 3)
				return (val * val * val) == n


if __name__ == "__main__":
					print(perfect_cube(27))
					print(perfect_cube(4))
