def METHOD_NAME(self):
    """Use the cost model to predict the estimated performance of configurations and find the top ones for the next round of evaluation"""
    configs = []
    for c in self.all_configs:
        flattened_ds_config = flatten(c)
        feature_val = []
        for k, v in flattened_ds_config.items():
            if isinstance(v, numbers.Number):
                feature_val.append(v)
        configs.append(feature_val)
    # print(configs)
    # TODO the current implementation requires that all configs have the same shape.
    configs = np.array(configs, dtype=np.float32)
    estimates = self.cost_model.predict(configs)
    n = len(estimates)
    top_idx = np.argsort(estimates)
    top_idx_ret = top_idx if self.metric == AUTOTUNING_METRIC_LATENCY else top_idx[::-1][:n]
    # top_configs = [self.all_configs[i] for i in top_idx]
    return top_idx_ret