def _load_search_space(self, params_set, *args, **kwargs): # Configuration manipulator holds the search space manipulator = ConfigurationManipulator() for k, v in params_set.iteritems(): if isinstance(v, list): manipulator.add_parameter(FloatParameter(k, v[0], v[1])) return manipulator
def manipulator(self): """ Returns an object that represents the parameters that can be tuned. """ manipulator = ConfigurationManipulator() if 'ExhaustiveSearch' in self.args.technique: # manipulator.add_parameter(EnumParameter("CLOCK", ['0', '1', '2', '3'])) # manipulator.add_parameter(EnumParameter("KERNEL_CLOCK", ['0', '1', '2', '3'])) manipulator.add_parameter(LogIntegerParameter("CONVOLVERS", 1, 16)) manipulator.add_parameter( IntegerParameter("BIN_DENSE_PIPELINE", 1, 16)) # manipulator.add_parameter(IntegerParameter("FP_CONV_UNROLL", 1, 16)) else: manipulator.add_parameter( EnumParameter("KERNEL_CLOCK", ['0', '1', '2', '3'])) manipulator.add_parameter( FloatParameter("CLOCK_UNCERTAINTY", 0, 100)) manipulator.add_parameter( EnumParameter("DATA_MOVER_CLOCK", ['0', '1', '2', '3'])) manipulator.add_parameter( EnumParameter("DATA_MOVER_SHARING", ['0', '1', '2', '3'])) manipulator.add_parameter(IntegerParameter("IMPL_STRATEGY", 0, 27)) manipulator.add_parameter( LogIntegerParameter("CONVOLVERS", 1, 16, prior="inc")) manipulator.add_parameter( IntegerParameter("BIN_DENSE_PIPELINE", 1, 16, prior="dec")) manipulator.add_parameter( IntegerParameter("FP_CONV_UNROLL", 1, 16, prior="inc")) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.transformation(gl.spark_parameter) manipulator = ConfigurationManipulator() manipulator.add_parameter( IntegerParameter('BLOCK_SIZE', 1, 1)) # print 'in manipulator' for flag in self.enum_param: # print flag[0], flag[1] manipulator.add_parameter( EnumParameter(flag[0], flag[1])) for i in self.int_param: manipulator.add_parameter( IntegerParameter(i[0], int(i[1]), int(i[2]))) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() num_options = len(self.passes) - 1 # choose for a sequence of at most `max_passes` passes for i in range(self.max_passes): passNum = 'pass_' + str(i) # some pass manipulator.add_parameter(IntegerParameter(passNum, 0, num_options)) # and whether to turn it on or off manipulator.add_parameter( EnumParameter('enable_' + passNum, [True, False])) # choose from a set of knobs for knob, minInt, maxInt in self.knobs: manipulator.add_parameter(IntegerParameter(knob, minInt, maxInt)) manipulator.add_parameter( EnumParameter('enable_' + knob, [True, False])) return manipulator
def manipulator(self): manipulator = ConfigurationManipulator() manipulator.add_parameter(FloatParameter('speed', 0.27, 0.32)) manipulator.add_parameter( FloatParameter('support_knee_angle', 0.09, 0.11)) manipulator.add_parameter(FloatParameter('angle_delta', 0.02, 0.04)) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() for i, param in enumerate(self.params): if param[0] == "None": continue if param[0] == "Int": manipulator.add_parameter( IntegerParameter(i, int(param[1]), int(param[2]))) continue if param[0] == "Log": manipulator.add_parameter( LogIntegerParameter(i, int(param[1]), int(param[2]))) continue if param[0] == "Pow": manipulator.add_parameter( PowerOfTwoParameter(i, 2**int(param[1]), 2**int(param[2]))) continue if param[0] == "Switch": manipulator.add_parameter(SwitchParameter(i, int(param[1]))) continue if param[0] == "Bool": manipulator.add_parameter(BooleanParameter(i)) continue return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('blockSize', 1, 10)) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('TILE_SIZE', 2, 256)) return manipulator
def manipulator(self): manipulator = ConfigurationManipulator() solvers, s_min, s_max = SOLVERS manipulator.add_parameter( IntegerParameterArray("instances", [s_min]*CHUNKS, [s_max]*CHUNKS)) return manipulator
def manipulator(self): """ Returns an object that represents the parameters that can be tuned. """ manipulator = ConfigurationManipulator() manipulator.add_parameter(BooleanParameter("PIPELINE_SUB")) manipulator.add_parameter(BooleanParameter("PIPELINE_ADDKEY")) manipulator.add_parameter(BooleanParameter("PIPELINE_CPKEY")) manipulator.add_parameter(BooleanParameter("PIPELINE_MIX")) manipulator.add_parameter(BooleanParameter("PIPELINE_EXP1")) manipulator.add_parameter(BooleanParameter("PIPELINE_EXP2")) manipulator.add_parameter(BooleanParameter("PIPELINE_ECB1")) manipulator.add_parameter(BooleanParameter("PIPELINE_ECB2")) manipulator.add_parameter(BooleanParameter("PIPELINE_ECB3")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_SUB", 1, 16, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_ADDKEY", 1, 16, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_CPKEY", 1, 16, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_MIX", 1, 4, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_EXP1", 1, 3, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_EXP2", 1, 3, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_ECB1", 1, 32, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_ECB2", 1, 8, prior="inc")) manipulator.add_parameter( IntegerParameter("UNROLL_FACTOR_ECB3", 1, 13, prior="inc")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_SUB", 1, 16, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_ADDKEY", 1, 16, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_CPKEY", 1, 16, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_MIX", 1, 4, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_EXP1", 1, 3, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_EXP2", 1, 3, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_ECB1", 1, 32, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_ECB2", 1, 8, prior="dec")) manipulator.add_parameter( IntegerParameter("PIPELINE_II_ECB3", 1, 13, prior="dec")) manipulator.add_parameter( EnumParameter("KERNEL_CLOCK", ['0', '1', '2', '3'])) manipulator.add_parameter( EnumParameter("DATA_MOVER_CLOCK", ['0', '1', '2', '3'])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.parallel_compile = True manipulator = ConfigurationManipulator() if (self.run_cmd == ''): self.param_parser(manipulator) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() for flag in OPT_FLAGS: manipulator.add_parameter( EnumParameter(flag, ['on', 'off', 'default'])) return manipulator
def manipulator(self): manipulator = ConfigurationManipulator() for item in self.param: param_type, param_name, param_range = item if param_type == 'EnumParameter': manipulator.add_parameter(EnumParameter(param_name, param_range)) elif param_type == 'IntegerParameter' : manipulator.add_parameter(IntegerParameter(param_name, param_range[0], param_range[1])) elif param_type == 'FloatParameter' : manipulator.add_parameter(FloatParameter(param_name, param_range[0], param_range[1])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter( LogFloatParameter('learning_rate', 1e-5, 1e-1)) manipulator.add_parameter(EnumParameter('gamma', [0.9, 0.99, 0.9999])) manipulator.add_parameter(EnumParameter('batch_size', [32, 64, 256])) manipulator.add_parameter(EnumParameter('n_steps', [128])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter( PermutationParameter('hls_order', list(range(NUM_PASSES)))) for i in range(NUM_PASSES): manipulator.add_parameter(BooleanParameter( 'hls_pass_{}'.format(i))) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() # manipulator.add_parameter( # IntegerParameter('blockSize', 8,16)) manipulator.add_parameter(IntegerParameter('opt_level', 0, 3)) manipulator.add_parameter( EnumParameter('blockSize', ['8', '16', '32', '64', '128'])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('opt_level', 0, 3)) for flag in GCC_FLAGS: manipulator.add_parameter( EnumParameter(flag, ['on', 'off', 'default'])) for param, min, max in GCC_PARAMS: manipulator.add_parameter(IntegerParameter(param, min, max)) return manipulator
def manipulator(self): manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('nsup', 50, 300)) manipulator.add_parameter(IntegerParameter('nrel', 10, 40)) manipulator.add_parameter(IntegerParameter('colperm', 0, 4)) manipulator.add_parameter(IntegerParameter('lookahead', 0, 10)) manipulator.add_parameter(IntegerParameter('numthreads', 1, 10)) ''' Parameters for testing SuperLU ''' return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() builder = sampletree.treeBuilder() self.tree = builder.build(self.args.level) self.tree.addParams(manipulator) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ manipulator = ConfigurationManipulator() manipulator.add_parameter(IntegerParameter('batch_size', 5, 200)) manipulator.add_parameter(IntegerParameter('layer', 1, 20)) manipulator.add_parameter(IntegerParameter('neural', 50, 200)) #manipulator.add_parameter(IntegerParameter('max_iter', 1, 500)) #manipulator.add_parameter(FloatParameter('learning_rate_init', 0.0001, 0.01)) #manipulator.add_parameter(FloatParameter('power_t', 0.2, 0.8)) #manipulator.add_parameter(FloatParameter('alpha', 0.00001, 0.001)) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.granularity = 1 assert (0 < self.granularity) max_m = (160 + self.granularity - 1) / self.granularity max_n = (160 + self.granularity - 1) / self.granularity manipulator = ConfigurationManipulator() manipulator.add_parameter( IntegerParameter("M", self.granularity, max_m)) manipulator.add_parameter( IntegerParameter("N", self.granularity, max_n)) return manipulator
def manipulator(self): self.expose_defines() manipulator = ConfigurationManipulator() params = self.get_parameters() for line in params: [param, type] = line.split()[3:5] if type == 'integer': start, end = line.split()[5:7] manipulator.add_parameter(IntegerParameter(param, start, end)) else: raise HLSTunerError( "Unknown parameter type encountered in tuner parameter pragma." ) return manipulator
def manipulator(self): """Define the search space by creating a ConfigurationManipulator """ list_configs = [] list_configs = read_file_configs() manipulator = ConfigurationManipulator() print "Executing manipulator" for param, mini, maxi in BLOCO_PARAMETROS: #print "param: ", param, " mini: ", mini, " maxi: ", maxi manipulator.add_parameter(IntegerParameter(param, mini, maxi)) # E preciso gerar as configuracoes validas com o run.c. # manipulator.add_parameter(EnumParameter(param, [ 'gx:1024, gy:1, gz:1, bx:1, by:1, bz:1, ', 'gx:32, gy:32, gz:1, bx:1, by:1, bz:1, ' ])) for param in BLOCO_PARAMETROS_CONFIGS: manipulator.add_parameter(EnumParameter(param, list_configs)) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ m_max = min(160, self.args.end) n_max = min(160, self.args.end) self.granularity = 1 assert(0 < self.granularity) m_max = (m_max + self.granularity - 1) / self.granularity n_max = (n_max + self.granularity - 1) / self.granularity m_param = IntegerParameter("M", self.granularity, m_max) n_param = IntegerParameter("N", self.granularity, n_max) manipulator = ConfigurationManipulator() manipulator.add_parameter(m_param) manipulator.add_parameter(n_param) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.granularity = 1 assert (0 < self.granularity) m_max = (64 + self.granularity - 1) / self.granularity n_max = (256 + self.granularity - 1) / self.granularity k_max = (256 + self.granularity - 1) / self.granularity m_param = IntegerParameter("M", self.granularity, m_max) n_param = IntegerParameter("N", self.granularity, n_max) k_param = IntegerParameter("K", self.granularity, k_max) manipulator = ConfigurationManipulator() manipulator.add_parameter(m_param) manipulator.add_parameter(n_param) manipulator.add_parameter(k_param) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ # set the global flags needed for printing schedules if self.args.enable_NUMA_tuning == 0: self.enable_NUMA_tuning = False if self.args.enable_parallel_tuning == 0: self.enable_parallel_tuning = False if self.args.enable_denseVertexSet_tuning == 0: self.enable_denseVertexSet_tuning = False manipulator = ConfigurationManipulator() manipulator.add_parameter( EnumParameter('direction', [ 'SparsePush', 'DensePull', 'SparsePush-DensePull', 'DensePush-SparsePush' ])) if self.enable_parallel_tuning: manipulator.add_parameter( EnumParameter('parallelization', [ 'dynamic-vertex-parallel', 'edge-aware-dynamic-vertex-parallel' ])) else: manipulator.add_parameter( EnumParameter('parallelization', ['serial'])) manipulator.add_parameter( IntegerParameter('numSSG', 1, self.args.max_num_segments)) if self.enable_NUMA_tuning: manipulator.add_parameter( EnumParameter('NUMA', ['serial', 'static-parallel'])) if self.enable_denseVertexSet_tuning: manipulator.add_parameter( EnumParameter('DenseVertexSet', ['boolean-array', 'bitvector'])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.dimset = libxsmm_utilities.load_mnklist(self.args.mnk, 0, -1) self.granularity = 1 assert (0 < self.granularity) m_max = (64 + self.granularity - 1) / self.granularity n_max = (256 + self.granularity - 1) / self.granularity k_max = (256 + self.granularity - 1) / self.granularity m_param = IntegerParameter("M", self.granularity, m_max) n_param = IntegerParameter("N", self.granularity, n_max) k_param = IntegerParameter("K", self.granularity, k_max) manipulator = ConfigurationManipulator() manipulator.add_parameter(m_param) manipulator.add_parameter(n_param) manipulator.add_parameter(k_param) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ # set the global flags needed for printing schedules if self.args.enable_NUMA_tuning == 0: self.enable_NUMA_tuning = False if self.args.enable_parallel_tuning == 0: self.enable_parallel_tuning = False if self.args.enable_denseVertexSet_tuning == 0: self.enable_denseVertexSet_tuning = False manipulator = ConfigurationManipulator() manipulator.add_parameter( EnumParameter('direction', ['SparsePush','DensePull', 'SparsePush-DensePull', 'DensePush-SparsePush'])) #'edge-aware-dynamic-vertex-parallel' not supported with the latest g++ cilk implementation if self.enable_parallel_tuning: manipulator.add_parameter(EnumParameter('parallelization',['dynamic-vertex-parallel'])) else: manipulator.add_parameter(EnumParameter('parallelization', ['serial'])) manipulator.add_parameter(IntegerParameter('numSSG', 1, self.args.max_num_segments)) if self.enable_NUMA_tuning: manipulator.add_parameter(EnumParameter('NUMA',['serial','static-parallel'])) if self.enable_denseVertexSet_tuning: manipulator.add_parameter(EnumParameter('DenseVertexSet', ['boolean-array', 'bitvector'])) # adding new parameters for PriorityGraph (Ordered GraphIt) manipulator.add_parameter(IntegerParameter('delta', 1, self.args.max_delta)) manipulator.add_parameter( EnumParameter('bucket_update_strategy', ['eager_priority_update','eager_priority_update_with_merge', 'lazy_priority_update'])) return manipulator
def manipulator(self): """ Define the search space by creating a ConfigurationManipulator """ self.mintilesize = 2 self.granularity = 1 assert (0 < self.granularity) minsize = max(self.mintilesize / self.granularity, 1) maxsize = minsize + self.granularity m_max = max(min(self.args.maxm, self.args.end), maxsize) n_max = max(min(self.args.maxn, self.args.end), maxsize) m_max = (m_max + self.granularity - 1) / self.granularity n_max = (n_max + self.granularity - 1) / self.granularity m_param = IntegerParameter("M", minsize, m_max) n_param = IntegerParameter("N", minsize, n_max) manipulator = ConfigurationManipulator() manipulator.add_parameter(m_param) manipulator.add_parameter(n_param) return manipulator
def manipulator(self) -> ConfigurationManipulator: """Define the search space.""" manipulator = ConfigurationManipulator() # A permutation parameter to order the passes that are present. manipulator.add_parameter( PermutationParameter("flag_order", list(range(self.flags_limit)))) # Boolean parameters for whether each pass is present. for i in range(self.flags_limit): manipulator.add_parameter(BooleanParameter(f"flag{i}")) def biased_random(): cfg = ConfigurationManipulator.random(manipulator) # duplicates in the search space, bias to `n / 2` enabled disabled = random.sample(range(self.flags_limit), k=self.flags_limit - self.env.action_space.n) cfg.update({f"flag{x}": False for x in disabled}) return cfg manipulator.random = biased_random return manipulator