from decimal import Decimal
class NumberConstant:
"""
Constant for number
"""
NULL_NUMBER = 0
EXCEPTION = -1
SUCCESS = 0
ERROR = 1
WARN = 2
SKIP = 3
KILOBYTE = 1024.0
FLOAT_ZERO_BOUND = 1e-17
MS_TIME_RATE = 1000000
NS_TIME_RATE = 1000000000.0
DEFAULT_LENGTH = 50
DEFAULT_NUMBER = 9223372036854775807
DEFAULT_START_TIME = 0
DEFAULT_END_TIME = 9223372036854775807
FILE_AUTHORITY = 0o640
DIR_AUTHORITY = 0o750
U_MASK = 0o027
NANO_SECOND = 1000000000.0
MICRO_SECOND = 1000000.0
MILLI_SECOND = 1000.0
HEX_NUMBER = 16
DATA_NUM = 8196
DEFAULT_TABLE_FIELD_NUM = 0
RATIO_NAME_LEN = 5
EXTRA_RATIO_NAME_LEN = 11
PERCENTAGE = 100
DECIMAL_ACCURACY = 6
ROUND_THREE_DECIMAL = 3
ROUND_TWO_DECIMAL = 2
LLC_CAPACITY = 64.0
CPU_FREQ = 680000
METRICS_DEVICE_INDEX = -4
METRICS_TASK_INDEX = -3
METRICS_STREAM_INDEX = -2
METRICS_ITER_INDEX = -1
DEFAULT_ITER_ID = 1
DEFAULT_ITER_COUNT = 1
DEFAULT_MODEL_ID = -1
STATIC_SHAPE_ITER_ID = 0
NS_TO_US = 1000.0
NS_TO_MS = 1000000.0
TEN_NS_TO_US = 100.0
NS_TO_S = 0.001**3
US_TO_S = 0.001**2
MS_TO_S = 0.001
S_TO_MS = 1000.0
MS_TO_US = 1000.0
US_TO_MS = 1000.0
MS_TO_NS = 1000000.0
FREQ_TO_MHz = 1000000.0
LLC_BYTE = 64.0
FLT_EPSILON = 1.0e-9
USTONS = 1000
DEFAULT_STREAM_ID = 65535
DEFAULT_TASK_ID = 65535
PROF_PATH_MAX_LEN = 4096
INT64_MAX = 2**63 - 1
UINT64_MAX = 18446744073709551615
BYTES_TO_KB = 1024.0
CONVERSION_TIME = 1000.0
MAX_STR_LENGTH = 8 * 1024 * 1024
LLC_CAPACITY_CONVERT_MB = 64.0 / (1024 * 1024)
USAGE_PLACES = Decimal(10) ** -6
SEC_TO_US = 10**6
INVALID_ITER_ID = -1
ZERO_ITER_ID = 0
ZERO_ITER_END = (0,)
FORWARD_PROPAGATION = 3
STEP_END = 5
DATA_AUG_BOUND = 9
COLUMN_COUNT = 9
MARKER = 0
PUSH_AND_POP = 1
START_AND_END = 2
MARKER_EX = 3
TASK_TIME_PID = 0
DEFAULT_BATCH_ID = 0
DEFAULT_FFTS_SUBTASK_ID = 0
DEFAULT_GE_CONTEXT_ID = 4294967295
INVALID_TASK_TIME = -1
INVALID_STREAM_ID = -1
INVALID_TASK_ID = -1
INVALID_OP_EXE_TIME = -1
INVALID_MODEL_ID = 4294967295
MAX_CORE_ID_OF_AIC = 24
RDMA_TRANSIT_OP_NUM = 5
MAIN_STREAM_THREAD_ID = 0
WAIT_TIME_THRESHOLD = 0.2
ANALYSIS_STEP_NUM = 1
RDMA_BANDWIDTH_V2_1_0 = 12.5
HCCS_BANDWIDTH_V2_1_0 = 18
PCIE_BANDWIDTH_V2_1_0 = 20
RDMA_BANDWIDTH_V4_1_0 = 25
HCCS_BANDWIDTH_V4_1_0 = 28
HCCS_MESSAGE_SIZE_THRESHOLD = 32
PCIE_MESSAGE_SIZE_THRESHOLD = 32
SIO_MESSAGE_SIZE_THRESHOLD = 32
RDMA_MESSAGE_SIZE_THRESHOLD = 0.5
LARGE_MESSAGE_RATE = 0.8
BANDWIDTH_THRESHOLD = 0.8
DOMINATED_BOTTLENECK_THRESHOLD = 0.25
RANK_NUM_PER_SERVER = 8
RANK_NUM_PER_OS = 4
MAX_RANK_NUMS = 4096
COMMUNICATION_B_to_MB = 1000**2
COMMUNICATION_B_to_GB = 0.001**3
COMMUNICATION_MB_to_GB = 1000
MAGIC_NUM = 23130
HOST_ID = 64
STATIC_GRAPH_INDEX = 0
RDMA_NO_BARRIER_TASK_NUM = 3
RDMA_WITH_BARRIER_TASK_NUM = 5
CSV_MAX_PRECISION = 15
DEFAULT_VOLTAGE = 900
@property
def conversion_time(self: any) -> float:
"""
time conversion ns to us
:return: time conversion
"""
return self.CONVERSION_TIME
@property
def max_str_length(self: any) -> int:
"""
string max length, no more than 8 MB
:return: string max length
"""
return self.MAX_STR_LENGTH
@staticmethod
def is_zero(number: any) -> bool:
"""
:param number
"""
if isinstance(number, int):
return number == 0
elif isinstance(number, float):
return abs(number) < NumberConstant.FLOAT_ZERO_BOUND
else:
return False