def manipulator(self): m = manipulator.ConfigurationManipulator() m.add_parameter(manipulator.IntegerParameter('-O', 0, 3)) for flag in self.cc_flags: m.add_parameter( manipulator.EnumParameter(flag, ['on', 'off', 'default'])) for param in self.cc_params: defaults = self.cc_param_defaults[param] if defaults['max'] <= defaults['min']: defaults['max'] = float('inf') defaults['max'] = min(defaults['max'], max(1, defaults['default']) * args.scaler) defaults['min'] = max(defaults['min'], max(1, defaults['default']) / args.scaler) if param == 'l1-cache-line-size': # gcc requires this to be a power of two or it internal errors m.add_parameter(manipulator.PowerOfTwoParameter(param, 4, 256)) elif defaults['max'] > 128: m.add_parameter( manipulator.LogIntegerParameter(param, defaults['min'], defaults['max'])) else: m.add_parameter( manipulator.IntegerParameter(param, defaults['min'], defaults['max'])) return m
def manipulator(self): m = manipulator.ConfigurationManipulator() if 'tomcat_jvm' in self.tune: print "Adding Tomcat JVM flags to the tuning configurations" for flag_set in self.bool_flags: for flag in flag_set: m.add_parameter( manipulator.EnumParameter(flag, ['on', 'off'])) for flag_set in self.param_flags: for flag in flag_set: value = flag_set[flag] if (value['min'] >= value['max']): m.add_parameter( manipulator.IntegerParameter( value['flagname'], value['max'], value['min'])) else: m.add_parameter( manipulator.IntegerParameter( value['flagname'], value['min'], value['max'])) for flag in self.apache_bool_flags: m.add_parameter(manipulator.EnumParameter(flag, ['on', 'off'])) # print self.apache_param_flags if 'apache' in self.tune: print "Adding Apache flags to the tuning configurations" for index, value in self.apache_param_flags.iterrows(): m.add_parameter( manipulator.IntegerParameter(value['name'], value['min'], value['max'])) if 'mysql' in self.tune: print "Adding MySQL flags to the tuning configurations" for flag in self.mysql_bool_flags: m.add_parameter(manipulator.EnumParameter(flag, ['on', 'off'])) for index, value in self.mysql_param_flags.iterrows(): m.add_parameter( manipulator.IntegerParameter(value['name'], value['min'], value['max'])) if 'tomcat' in self.tune: print "Adding Tomcat AJP Connector flags to the tuning configurations" for flag in self.ajp_bool_flags: m.add_parameter(manipulator.EnumParameter(flag, ['on', 'off'])) for index, value in self.ajp_param_flags.iterrows(): m.add_parameter( manipulator.IntegerParameter(value['name'], value['min'], value['max'])) # print "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" # print "Dumping the manipulator to a file" # pickle.dump( m, open( "manipulator.p", "wb" ) ) return m
def manipulator(self): m = manipulator.ConfigurationManipulator() for flag_set in self.bool_flags: for flag in flag_set: m.add_parameter(manipulator.EnumParameter(flag, ['on', 'off'])) for flag_set in self.param_flags: for flag in flag_set: value = flag_set[flag] if(value['min'] >= value['max']): m.add_parameter(manipulator.IntegerParameter(value['flagname'],value['max'],value['min'])) else: m.add_parameter(manipulator.IntegerParameter(value['flagname'],value['min'],value['max'])) return m
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ m = manipulator.ConfigurationManipulator() self.goals={} self.trace = {} self.weight = {} weightTotal = 0 for n in range(self.args.num_params): pname = 'P%03d' % (n) randbool = random.randint(0,1) == 0 if self.args.use_enum_param: m.add_parameter(manipulator.EnumParameter(pname, ['on', 'off'])) self.goals[pname] = 'off' if randbool else 'on' elif self.args.use_int_param: m.add_parameter(manipulator.IntegerParameter(pname, 256, 257)) self.goals[pname] = 256 if randbool else 257 else: m.add_parameter(manipulator.BooleanParameter(pname)) self.goals[pname] = randbool self.trace[pname] = {} weight = n*n + 1 self.weight[pname] = weight weightTotal += weight self.maxscore = weightTotal + 1 self.best = self.maxscore self.bestcfg = None if False: print 'goals = ', pprint(self.goals) return m
def manipulator(self): # print 'manipulator started' m = manipulator.ConfigurationManipulator() for flag_set in self.all_bool_flags: for flag in flag_set: m.add_parameter( manipulator.EnumParameter(flag, ['on', 'off', 'default'])) for flag_set in self.all_param_flags: # print flag_set for flag in flag_set: value = flag_set[flag] # print value if (value['min'] >= value['max']): m.add_parameter( manipulator.IntegerParameter(value['flagname'], value['max'], value['min'])) else: m.add_parameter( manipulator.IntegerParameter(value['flagname'], value['min'], value['max'])) return m
def manipulator(self): m = manipulator.ConfigurationManipulator() for parameter in self.parameter_space.forward_metrics[self.benchmark]: parameter = self.parameter_space.parameters[parameter] if "vectorization" not in parameter.tags or parameter.tags[ "vectorization"] == terminal.get_vectorization(): if type(parameter) == generate.IntegerParameter: m.add_parameter( manipulator.IntegerParameter( parameter.name, parameter.minimum / parameter.step, parameter.maximum / parameter.step)) if type(parameter) == generate.BooleanParameter: m.add_parameter( manipulator.BooleanParameter(parameter.name)) if type(parameter) == generate.PowerOfTwoParameter: m.add_parameter( manipulator.PowerOfTwoParameter( parameter.name, parameter.minimum, parameter.maximum)) return m