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)