Exemple #1
0
 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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
 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
Exemple #6
0
 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
Exemple #7
0
 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
Exemple #9
0
    def manipulator(self):
        manipulator = ConfigurationManipulator()
        solvers, s_min, s_max = SOLVERS

        manipulator.add_parameter(
                IntegerParameterArray("instances", [s_min]*CHUNKS,
                                      [s_max]*CHUNKS))

        return manipulator
Exemple #10
0
    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
Exemple #11
0
 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
Exemple #13
0
 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
Exemple #14
0
 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
Exemple #15
0
 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
Exemple #16
0
 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
Exemple #20
0
    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
Exemple #22
0
    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
Exemple #24
0
 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
Exemple #25
0
 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
Exemple #28
0
    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
Exemple #29
0
 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
Exemple #30
0
    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