in scheme_adapters/polyfit_adapter/polyfit_adapter.py [0:0]
def generate_search_param(self):
num = self.total_runtime / self.workload_info[0]["runtime"]
self.num_runs = max(5, min(self.num_runs, num))
key_dim = self.find_key_dim(self.num_runs)
key_index = 0
for key, value in self.ranges.items():
if isinstance(value, list):
range_diff = self.convert(value[1]) - self.convert(value[0])
num_runs = key_dim[key_index]
key_index += 1
num_runs = min(num_runs, range_diff + 1)
num_regions = max(1, int(num_runs / 5))
region_size = int(range_diff / num_regions)
self.search_param[key] = [self.convert(value[0])]
num_left = num_runs - (num_regions + 1)
num_samples = int(num_left / num_regions)
remainder = num_left % num_regions
for i in range(num_regions):
self.search_param[key].append((i + 1) * region_size)
numbers = num_samples + (1 if i < remainder else 0)
random_list = random.sample(range((i * region_size) + 1, (i + 1) * region_size), numbers)
self.search_param[key] += random_list
else:
self.search_param[key] = [value]