def exp_summary()

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


    def exp_summary(self, id=None):
        job_history = self.cluster.job_history
        num_jobs_done = job_history.num_jobs_done
        jct_summary = job_history.jct_summary
        wait_time_summary = job_history.wait_time_summary
        job_done_list = job_history.job_done_list
        wasted_summary = job_history.wasted_summary
        assert num_jobs_done == len(job_done_list)

        print_fn("Wasted progress in summary: %s" % wasted_summary)
        if num_jobs_done == self.num_jobs:
            print_fn("All Done (makespan) at %s" % self.cur_time)
        else:
            print_fn("%d of %d jobs Done (makespan) at %s" % (num_jobs_done, self.num_jobs, self.cur_time))
        print_fn("%d jobs' average JCT: %.4f, average wait time: %.4f" % (num_jobs_done, jct_summary / num_jobs_done, wait_time_summary / num_jobs_done))
        # Print job done breakdown
        job_done_list.sort(key=lambda e: e['job_id'])

        if self.export_job_stats is True:
            job_stats = np.zeros(shape=(6, len(job_done_list)), dtype=int)
            for i, job in enumerate(job_done_list):
                print_fn("%s || %s" % (_repr_job_done(job), job))
                job_stats[0][i] = job['submit_time']
                job_stats[1][i] = job['duration']
                job_stats[2][i] = job['jct']
                job_stats[3][i] = GPU_TYPE_INT_DICT.get(job.get('gpu_type', 'N/A'), -1)
                job_stats[4][i] = job.get('num_inst', 1)
                job_stats[5][i] = job['job_id']
            job_stats_name = "%s.a%s-p%s-i%s-job_stats.npy" % (
                self.log_file.name, self.alloc_policy, self.preempt_policy, id)
            job_stats_file = self.log_file.parent / job_stats_name
            np.save(job_stats_file, job_stats)
        else:
            for job in job_done_list:
                print_fn("%s || %s" % (_repr_job_done(job), job))
        print_fn("")

        if self.export_cluster_util is True:
            cluster_util = np.asarray([
                self.cluster.cluster_time,
                self.cluster.cluster_cpu,
                self.cluster.cluster_gpu
            ])
            cluster_util_name = "%s.a%s-p%s-i%s-cluster_util.npy" % (
                self.log_file.name, self.alloc_policy, self.preempt_policy, id)
            cluster_util_file = self.log_file.parent / cluster_util_name
            np.save(cluster_util_file, cluster_util)
        return num_jobs_done, jct_summary, wait_time_summary