def __init__()

in cluster-trace-gpu-v2020/simulator/cluster.py [0:0]


    def __init__(self, node_list=None, num_nodes=None, num_gpus=20,
                 num_cpus=20, pattern=1, period=124, job_list=None,
                 random_seed=0, num_spare_node=None,
                 export_cluster_util=False):
        if node_list is not None:
            node_list = node_list
        elif num_nodes is not None:
            node_list = [Node(id=i) for i in range(num_nodes)]
        else:
            node_list = [Node(id=0, num_gpus=num_gpus, num_cpus=num_cpus)]

        temp_node_dict = dict()
        self.num_gpus, self.num_cpus = 0, 0
        for node in node_list:
            self.num_gpus += node.num_gpus
            self.num_cpus += node.num_cpus
            temp_node_dict[node.id] = node
        self.node_dict = OrderedDict(sorted(temp_node_dict.items(),
                                            key=lambda t: t[1].id))

        self.cur_time = 0
        self.svc = {'num_gpu': 0, 'num_cpu': 0} # high-priority service
        self.svc_former_ratio = 0

        # self.job_full_list = job_list  # all jobs received from all times
        self.job_full_list = large_job_pruning(job_list, self.num_gpus, self.num_cpus)
        self.job_full_list.sort(key=lambda j: -j['submit_time'])
        self.job_list = []
        self.retrieve_job_from_full_list()  # feed self.user_job_queue into self.job_list

        self.job_history = JobHistory()

        # Capacity changing pattern & period
        self.pattern = pattern
        self.period = period

        # Spare specific node
        self.num_spare_node = num_spare_node
        self.spare_node_id = []
        if num_spare_node is not None:
            for i in range(num_spare_node):
                spare_node_index = random_seed % len(node_list)
                spare_node_id = node_list[spare_node_index].id
                while spare_node_id in self.spare_node_id:
                    random_seed += 29741  # a random prime number
                    spare_node_index = random_seed % len(node_list)
                    spare_node_id = node_list[spare_node_index].id
                self.spare_node_id.append(spare_node_id) # indicate which node to spare
                random_seed += 29741  # a random prime number

        self.export_cluster_util = export_cluster_util
        self.cluster_time = []
        self.cluster_cpu = []
        self.cluster_gpu = []
        self.idle_cluster_counter = 0