def _generate_matrix(self, run, reference_run, aggfunc): """Generate the Correlation Matrix""" reference_aggs = [] aggs = [] for idx in range(self._dimension): reference_aggs.append( MultiTriggerAggregator( sched_funcs.sched_triggers( reference_run, self._reference_pids[idx], trappy.sched.SchedSwitch ), self._topology, aggfunc)) aggs.append( MultiTriggerAggregator( sched_funcs.sched_triggers( run, self._pids[idx], trappy.sched.SchedSwitch ), self._topology, aggfunc)) agg_pair_gen = ((r_agg, agg) for r_agg in reference_aggs for agg in aggs) # pylint fails to recognize numpy members. # pylint: disable=no-member matrix = np.zeros((self._dimension, self._dimension)) # pylint: enable=no-member for (ref_result, test_result) in agg_pair_gen: i = reference_aggs.index(ref_result) j = aggs.index(test_result) corr = Correlator( ref_result, test_result, corrfunc=sched_funcs.binary_correlate, filter_gaps=True) _, total = corr.correlate(level="cluster") matrix[i][j] = total return matrix
def _generate_matrix(self, run, reference_run, aggfunc): """Generate the Correlation Matrix""" reference_aggs = [] aggs = [] for idx in range(self._dimension): reference_aggs.append( MultiTriggerAggregator( sched_funcs.sched_triggers(reference_run, self._reference_pids[idx], trappy.sched.SchedSwitch), self._topology, aggfunc)) aggs.append( MultiTriggerAggregator( sched_funcs.sched_triggers(run, self._pids[idx], trappy.sched.SchedSwitch), self._topology, aggfunc)) agg_pair_gen = ((r_agg, agg) for r_agg in reference_aggs for agg in aggs) # pylint fails to recognize numpy members. # pylint: disable=no-member matrix = np.zeros((self._dimension, self._dimension)) # pylint: enable=no-member for (ref_result, test_result) in agg_pair_gen: i = reference_aggs.index(ref_result) j = aggs.index(test_result) corr = Correlator(ref_result, test_result, corrfunc=sched_funcs.binary_correlate, filter_gaps=True) _, total = corr.correlate(level="cluster") matrix[i][j] = total return matrix
def __init__(self, ftrace, topology, execname=None, pid=None): ftrace = Utils.init_ftrace(ftrace) if not execname and not pid: raise ValueError("Need to specify at least one of pid or execname") self.execname = execname self._ftrace = ftrace self._pid = self._validate_pid(pid) self._aggs = {} self._topology = topology self._triggers = sched_funcs.sched_triggers(self._ftrace, self._pid, trappy.sched.SchedSwitch) self.name = "{}-{}".format(self.execname, self._pid)