def init_go()

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


    def init_go(self, num_jobs=None):
        self.cur_time = 0
        self.job_list = copy.deepcopy(self.job_origin_list)  # copy each obj in the list
        num_jobs = num_jobs if num_jobs is not None else self.num_jobs_limit
        if (num_jobs is not None) and num_jobs <= len(self.job_list):
            random.shuffle(self.job_list)
            self.job_list = self.job_list[:num_jobs]
        self.set_job_list_arrival_time(self.job_list, self.arrival_rate, self.arrival_interval, self.arrival_shuffle)
        print_fn("----------------------------- RANDOM: %d" % random.randint(1000, 9999))
        print_fn("%d Job loaded" % len(self.job_list))

        # Init Cluster resources
        if self.hetero:
            node_list = self.init_node_list_hetero()
        elif self.num_nodes == 1 and self.num_gpus is not None:  # i.e., one big node formulation
            node_list = [Node(id=1, num_gpus=self.num_gpus, num_cpus=self.num_cpus)]
        else:
            node_list = self.init_node_list()
        self.cluster = Cluster(node_list=node_list, job_list=self.job_list, random_seed=random.randint(1000, 9999),
                               num_spare_node=self.num_spare_node, pattern=self.pattern,
                               export_cluster_util=self.export_cluster_util)

        self.scheduler = Scheduler(cluster=self.cluster, alloc_policy=self.alloc_policy,
                                   preempt_policy=self.preempt_policy, sort_node_policy=self.sort_node_policy,
                                   verbose=self.verbose, gpu_type_matching=self.gpu_type_matching)
        self.num_jobs = len(self.job_list)
        self.exit_flag = 0

        print_fn("Spared nodes: %s" % self.cluster.spare_node_id)