Example #1
0
    def test_mpi_collective(self):

        # Check the mpi p2p series (per job)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        mpi_job = KScheduleData.per_job_series(jobs, "kb_collective")
        self.assertEqual(mpi_job, [0, 888*2])

        # Check the mpi p2p series (per kernel)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        mpi_kernel = KScheduleData.per_kernel_series(jobs, "kb_collective")
        self.assertEqual(mpi_kernel, [888, 888])

        # Check the mpi p2p series (per process)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        mpi_process = KScheduleData.per_process_series(jobs, "kb_collective")
        self.assertEqual(mpi_process, [888]*5+[888]*5)

        # Check the mpi p2p series (per call)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        mpi_call = KScheduleData.per_call_series(jobs, "kb_collective")
        self.assertEqual(mpi_call, [888/444.0]*444+[888/444.0]*444)
Example #2
0
    def test_io_read_series(self):

        # Check the io_formats series (per job)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_read_job = KScheduleData.per_job_series(jobs, "kb_read")
        self.assertEqual(io_read_job, [999, 500])

        # Check the io_formats series (per kernel)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_read_kernel = KScheduleData.per_kernel_series(jobs, "kb_read")
        self.assertEqual(io_read_kernel, [999, 500])

        # Check the io_formats series (per process)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_read_process = KScheduleData.per_process_series(jobs, "kb_read")
        self.assertEqual(io_read_process, [999]+[100]*5)

        # Check the io_formats series (per call)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_read_call = KScheduleData.per_call_series(jobs, "kb_read")
        self.assertEqual(io_read_call, [9]*111+[25]*20)
Example #3
0
    def test_io_write_series(self):

        # Check the io_formats series (per job)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_write_job = KScheduleData.per_job_series(jobs, "kb_write")
        self.assertEqual(io_write_job, [5000, 2500])

        # Check the io_formats series (per kernel)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_write_kernel = KScheduleData.per_kernel_series(jobs, "kb_write")
        self.assertEqual(io_write_kernel, [2500, 2500, 2500])

        # Check the io_formats series (per process)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_write_process = KScheduleData.per_process_series(jobs, "kb_write")
        self.assertEqual(io_write_process, [2500, 2500, 500, 500, 500, 500, 500])

        # Check the flops series (per call)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        io_write_call = KScheduleData.per_call_series(jobs, "kb_write")
        self.assertEqual(io_write_call, [250]*20 + [250]*10)
Example #4
0
    def test_flops_series(self):

        # Check the flops series (per job)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        flops_job = KScheduleData.per_job_series(jobs, "flops")
        self.assertEqual(flops_job, [333, 1000])

        # Check the flops series (per kernel)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        flops_ker = KScheduleData.per_kernel_series(jobs, "flops")
        self.assertEqual(flops_ker, [333, 1000])

        # Check the flops series (per process)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        flops_proc = KScheduleData.per_process_series(jobs, "flops")
        self.assertEqual(flops_proc, [333, 200, 200, 200, 200, 200])

        # Check the flops series (per call)
        valid_ks = self.valid_kschedule.copy()
        jobs = KScheduleData.from_file(StringIO(json.dumps(valid_ks))).jobs
        self.assertRaises(RuntimeError, lambda: KScheduleData.per_call_series(jobs, "flops"))
Example #5
0
 def get_series(self):
     return KScheduleData.per_call_series(self.filtered_jobs,
                                          self.metric_name)
Example #6
0
    def test_validate(self):

        # Check the validation information
        valid_ks = self.valid_kschedule.copy()
        self.assertRaises(jsonschema.ValidationError, lambda: KScheduleData.validate_json(StringIO(json.dumps(valid_ks))))