rogermt commited on
Commit
75db624
·
verified ·
1 Parent(s): 0ddbf8d

Fix solver_registry.py: _check_scoreable expects (memory, params) not (macs, memory, params)

Browse files
own-solver/neurogolf_solver/solvers/solver_registry.py CHANGED
@@ -1,570 +1 @@
1
- #!/usr/bin/env python3
2
- """Solver registry and task solving orchestration."""
3
-
4
- import os
5
- import time
6
- import onnx
7
- from .analytical import s_identity, s_constant, s_color_map, s_transpose
8
- from .geometric import s_flip, s_rotate, s_shift, s_fixed_crop, s_gravity
9
- from .tiling import (s_tile, s_upscale, s_kronecker, s_nonuniform_scale, s_diagonal_tile,
10
- s_mirror_h, s_mirror_v, s_quad_mirror, s_concat, s_concat_enhanced,
11
- s_spatial_gather, s_varshape_spatial_gather)
12
- from .gravity import s_gravity_unrolled
13
- from .edge import s_edge_detect
14
- from .mode import s_mode_fill
15
- from .wave1 import (s_downsample_stride, s_symmetry_complete, s_extract_inner,
16
- s_add_border, s_sparse_fill, s_channel_filter)
17
- from .wave2 import (s_overlay_constant, s_bbox_crop, s_row_mode_fill, s_col_mode_fill,
18
- s_fill_bg_with_mode, s_pad_align, s_multi_stamp, s_diagonal_flip,
19
- s_invert_colors, s_majority_color_fill, s_border_extract,
20
- s_interior_fill, s_repeat_row, s_repeat_col, s_swap_two_colors,
21
- s_max_pool_downsample, s_crop_paste)
22
- from .wave3 import s_split_and_merge, s_self_tile, s_self_tile_majority
23
- from .wave4 import (s_extract_densest_object, s_extract_smallest_area,
24
- s_extract_largest_count, s_symmetry_max_tb, s_variable_crop_topleft)
25
- from .wave5 import (s_row_uniform_fill, s_majority_replace_5,
26
- s_find_color_with_hole, s_fill_bbox_per_color,
27
- s_border_detect, s_symmetry_check_lr, s_variable_scale_2x,
28
- s_split_midpoint_or, s_split_nor, s_split_boolean, s_symmetrize,
29
- s_fill_row_endpoints_match, s_split_flip_overlay,
30
- s_fill_between_markers, s_recolor_to_marker,
31
- s_fill_between_same_color_row,
32
- s_fill_between_same_color_cross,
33
- s_bbox_tile_1x2)
34
- from .wave6 import (s_select_asymmetric_block, s_bbox_crop_3x3, s_periodic_tile_fill,
35
- s_eightfold_symmetry, s_ushape_fill_bottom, s_centroid_zoom)
36
- from .wave7 import (s_count_color1_lookup, s_count_present_colors,
37
- s_histogram_match, s_marker_grid_fill)
38
- from .wave8 import (s_fill_mask_delta, s_recolor_col_mask, s_palette_lookup_markers,
39
- s_count_dominant_bar, s_maxpool_3x3_downsample, s_tile_mask_color2,
40
- s_matmul_projection, s_count_colors_pattern_bank)
41
- from .wave9 import (s_fill_bbox_interior_color2, s_least_dense_color,
42
- s_count_color6_threshold, s_conv_row_col_combine, s_neighbor_remove)
43
- from .wave10 import (s_count_present_colors_fixed, s_count_color1_lookup_fixed,
44
- s_remove_isolated_2x2, s_overlay_4quadrants, s_diagonal_expand,
45
- s_pattern_grow_diamond, s_row_pattern_tile, s_flip_crop_marker,
46
- s_find_enclosed_fill, s_keep_middle_col, s_shift_parity_remove)
47
- from .wave11 import (s_directional_replace, s_x_pattern_centroid, s_diagonal_fill_centroid,
48
- s_keep_dominant_2x2, s_keep_dominant_2x2_v2, s_staircase_fill)
49
- from .wave12 import (s_isolated_mark_5x5, s_neighbor_mark_6x6, s_odd_quadrant,
50
- s_cumsum_bottom_mark, s_three_panel_overlay)
51
- from .wave13 import (s_block_center_mark, s_shift_tile_by_width, s_fill_interior_4corners,
52
- s_zigzag_marker_248, s_zigzag_marker_357)
53
- from .wave14 import (s_unique_color_extract_dilate, s_centroid_manhattan_cross,
54
- s_conv_argmax_crop, s_template_match_recolor, s_symmetry_4fold_max,
55
- s_row_gap_bank, s_top3_colors, s_quadrant_position_mask,
56
- s_conv5_argmax_crop3)
57
- from .wave15 import (s_mirror_patch_markers, s_cluster_expand_frame,
58
- s_maxpool_row_conflict)
59
- from .wave16 import (s_convnet_ch5_split, s_block2x2_pattern_bank, s_hash_lookup_319)
60
- from .wave17 import (s_conv3x3_task4, s_gridsample_108, s_hash_lookup_153,
61
- s_argmax_gather_106, s_flag_level_map_123, s_quadrant_overlap_38,
62
- s_dilated_conv_180, s_adjacency_classify_369,
63
- s_conv5x5_task344, s_region_scatter_59)
64
- from .wave18 import (s_row_col_filter_24, s_cumsum_dilate_125, s_centroid_distance_47,
65
- s_tail_detect_137, s_bbox_channel_swap_63, s_horizontal_shift_fill_139,
66
- s_neighbor_shift_81, s_argmax_shift_128, s_grouped_conv_fill_37,
67
- s_maxpool_classify_93)
68
- from .wave19 import (s_large_kernel_conv_27, s_marker_spread_86, s_region_grow_84,
69
- s_pattern_replicate_3, s_color_shift_19, s_flood_fill_30,
70
- s_line_extend_11, s_symmetric_fill_64, s_cascade_filter_10,
71
- s_block_pattern_71, s_grid_partition_48, s_border_fill_75,
72
- s_multi_region_17, s_conv_transform_58, s_connected_region_8)
73
- from .wave20 import (s_pixel_count_bar_196, s_edge_propagate_175, s_corner_detect_199,
74
- s_marker_fill_165, s_symmetry_detect_183, s_region_color_200,
75
- s_iterative_fill_124, s_block_extract_188, s_neighbor_logic_94,
76
- s_pattern_match_112, s_directional_grow_177, s_shift_align_121,
77
- s_multi_conv_187, s_spread_marker_109, s_grid_logic_198,
78
- s_color_region_195, s_flood_detect_92, s_line_cross_161,
79
- s_conv_cascade_159, s_lookup_map_114)
80
- from .wave21 import (s_tile_index_247, s_directional_mask_246, s_boundary_fill_279,
81
- s_object_align_232, s_color_encode_265, s_edge_detect_289,
82
- s_region_extract_252, s_spatial_logic_231, s_conv_threshold_225,
83
- s_marker_connect_298, s_slice_combine_260, s_pattern_grow_215,
84
- s_channel_merge_235, s_fill_logic_269, s_kernel_shift_221,
85
- s_overlap_detect_204, s_block_reduce_259, s_spatial_encode_217,
86
- s_multi_step_228, s_region_classify_256, s_iterative_logic_251,
87
- s_maxpool_spread_91, s_hash_encode_100, s_shift_pattern_239)
88
- from .wave22 import (s_select_transform_10sq, s_aggregate, s_diff_aggregate, s_crop_select_remap_filter_16sq, s_crop_select_remap_filter_24sq,
89
- s_flood_recolor, s_crop_cumulative_10sq, s_flood_recolor_12sq, s_conv_cumulative_remap_10sq, s_select_filter,
90
- s_logic, s_cascade_transform_10sq, s_select_project_filter, s_conv_recolor, s_cumulative_recolor_10sq,
91
- s_select_diff_9sq, s_select_transform_10sq_v2, s_mask_aggregate_19sq, s_flood_recolor_v2, s_select_filter_v2,
92
- s_cascade_logic_conditional, s_project_recolor, s_remap_match_conditional, s_cumulative_recolor_10sq_v2, s_select_filter_v3,
93
- s_conv_fill, s_conv_logic_conditional_1x5, s_conv_match_logic, s_select_transform, s_transform_diff_mask_9sq,
94
- s_conv_match_logic_v2, s_conv_recolor_v2, s_cascade_mask, s_conv_recolor_v3, s_select_project,
95
- s_remap_recolor_5sq, s_cumulative_conditional_aggregate_10sq, s_cascade_mask_10sq, s_conv_fill_v2, s_conv_remap_5x15,
96
- s_conv_mask_diff_15sq, s_select_conditional_aggregate, s_select_conditional_match, s_select_combine_conditional_15sq, s_conv_logic_logic_10sq,
97
- s_filter_mask_aggregate, s_conv_recolor_v4, s_flood_recolor_v3, s_conv_select_recolor_10sq, s_select_filter_v4,
98
- s_conv_mask_aggregate_10sq, s_conv_cumulative_select_filter_21sq, s_filter_mask_aggregate_v2, s_crop_filter_9sq, s_select_match_logic,
99
- s_flood_transform, s_flood_select_remap_filter, s_cascade_cumulative_15sq, s_select_remap, s_learned_project_transform_11sq,
100
- s_select_remap_13sq, s_conv_transform, s_select_transform_v2, s_recolor_mask_diff, s_cascade,
101
- s_conv_remap, s_conv_mask_aggregate, s_logic_conditional_peak, s_recolor_mask_diff_10sq, s_recolor_mask_10sq,
102
- s_conv_select_remap, s_conv_logic_aggregate_10sq, s_learned_select_project_fill_10sq, s_flood_remap_transform, s_flood_remap_13sq,
103
- s_flood_remap_transform_v2, s_select_remap_v2, s_select_transform_10sq_v3, s_cumulative_select_remap_filter_10sq, s_select_remap_filter_29sq,
104
- s_remap_transform, s_multiconv_remap_filter, s_cumulative_select_remap_filter_20sq, s_cascade_recolor_10sq, s_learned_remap_project_filter,
105
- s_multiconv_select_remap_filter, s_select_logic, s_cascade_recolor_12sq, s_cascade_recolor_12sq_v2, s_transform_logic_diff,
106
- s_filter_mask_aggregate_deep, s_cumulative_select_remap_filter, s_learned_project_transform_deep, s_learned_project_transform_10x15, s_cascade_transform_deep_10sq,
107
- s_logic_logic_deep, s_multiconv_select_deep, s_learned_project_10sq, s_learned_remap_project_transform_30sq, s_learned_select_project_compact,
108
- s_learned_project_recolor, s_learned_select_project_filter, s_select_remap_filter_deep_10sq, s_cascade_filter_deep, s_learned_select_remap_project_transform,
109
- s_learned_select_project_14x12, s_learned_select_project_compact_v2, s_cascade_select_remap_filter_deep, s_learned_select_remap_project_23sq, s_conv_compact_10sq,
110
- s_learned_select_project_recolor_compact, s_learned_project_compact_20sq, s_learned_select_project_compact_v3, s_learned_project_deep, s_learned_project_recolor_compact_15x10,
111
- s_learned_select_project_compact_v4, s_transform_compact_10sq, s_flood_recolor_v4, s_cascade_recolor_10sq_v2, s_conv_filter,
112
- s_conv_transform_9sq, s_learned_project_filter, s_select_diff, s_flood_cumulative_remap_30sq, s_cascade_recolor_17sq,
113
- s_conv_select_remap_filter, s_cascade_transform, s_cascade_recolor, s_cascade_mask_10sq_v2, s_project_fill_10sq,
114
- s_conv_remap_transform, s_cascade_recolor_v2, s_learned_project_compact, s_select_remap_10sq, s_conv_remap_filter_deep_10sq,
115
- s_crop_cascade_remap_deep_11sq, s_remap_transform_deep, s_learned_remap_project, s_learned_select_project_compact_13sq, s_recolor_match_conditional_compact,
116
- s_learned_select_project_compact_v5, s_learned_select_project_compact_10sq, s_learned_select_project_compact_v6)
117
- from ._replace_col0 import s_replace_color_from_col0
118
- from ._classify_dominant import s_classify_by_dominant_color
119
- from ._variable_fliplr import s_variable_fliplr
120
- from ._variable_flipud import s_variable_flipud
121
- from ._misc_solvers import s_keep_first_third_cols, s_marker_extract
122
- from .conv import solve_conv_fixed, solve_conv_variable, solve_conv_diffshape, solve_conv_var_diff
123
- from ..data_loader import get_exs, fixed_shapes
124
- from ..validators import validate
125
- from ..profiler import score_network
126
- from ..constants import EXCLUDED_TASKS, MAX_ONNX_FILESIZE
127
-
128
- ANALYTICAL_SOLVERS = [
129
- ('identity', s_identity),
130
- ('constant', s_constant),
131
- ('color_map', s_color_map),
132
- ('transpose', s_transpose),
133
- ('flip', s_flip),
134
- ('rotate', s_rotate),
135
- ('shift', s_shift),
136
- ('tile', s_tile),
137
- ('upscale', s_upscale),
138
- ('kronecker', s_kronecker),
139
- ('nonuniform_scale', s_nonuniform_scale),
140
- ('mirror_h', s_mirror_h),
141
- ('mirror_v', s_mirror_v),
142
- ('quad_mirror', s_quad_mirror),
143
- ('concat', s_concat),
144
- ('concat_enhanced', s_concat_enhanced),
145
- ('diagonal_tile', s_diagonal_tile),
146
- ('fixed_crop', s_fixed_crop),
147
- ('spatial_gather', s_spatial_gather),
148
- ('varshape_spatial_gather', s_varshape_spatial_gather),
149
- ('gravity_unrolled', s_gravity_unrolled),
150
- ('edge_detect', s_edge_detect),
151
- ('mode_fill', s_mode_fill),
152
- ('downsample_stride', s_downsample_stride),
153
- ('symmetry_complete', s_symmetry_complete),
154
- ('extract_inner', s_extract_inner),
155
- ('add_border', s_add_border),
156
- ('sparse_fill', s_sparse_fill),
157
- ('channel_filter', s_channel_filter),
158
- ('swap_two_colors', s_swap_two_colors),
159
- ('invert_colors', s_invert_colors),
160
- ('diagonal_flip', s_diagonal_flip),
161
- ('overlay_constant', s_overlay_constant),
162
- ('bbox_crop', s_bbox_crop),
163
- ('row_mode_fill', s_row_mode_fill),
164
- ('col_mode_fill', s_col_mode_fill),
165
- ('fill_bg_with_mode', s_fill_bg_with_mode),
166
- ('pad_align', s_pad_align),
167
- ('repeat_row', s_repeat_row),
168
- ('repeat_col', s_repeat_col),
169
- ('border_extract', s_border_extract),
170
- ('interior_fill', s_interior_fill),
171
- ('majority_color_fill', s_majority_color_fill),
172
- ('max_pool_downsample', s_max_pool_downsample),
173
- ('crop_paste', s_crop_paste),
174
- ('multi_stamp', s_multi_stamp),
175
- ('self_tile', s_self_tile),
176
- ('self_tile_majority', s_self_tile_majority),
177
- ('split_and_merge', s_split_and_merge),
178
- ('extract_densest_object', s_extract_densest_object),
179
- ('extract_smallest_area', s_extract_smallest_area),
180
- ('extract_largest_count', s_extract_largest_count),
181
- ('symmetry_max_tb', s_symmetry_max_tb),
182
- ('variable_crop_topleft', s_variable_crop_topleft),
183
- ('replace_color_from_col0', s_replace_color_from_col0),
184
- ('classify_by_dominant_color', s_classify_by_dominant_color),
185
- ('variable_fliplr', s_variable_fliplr),
186
- ('variable_flipud', s_variable_flipud),
187
- ('keep_first_third_cols', s_keep_first_third_cols),
188
- ('marker_extract', s_marker_extract),
189
- # Wave 5 solvers
190
- ('row_uniform_fill', s_row_uniform_fill),
191
- ('majority_replace_5', s_majority_replace_5),
192
- ('find_color_with_hole', s_find_color_with_hole),
193
- ('fill_bbox_per_color', s_fill_bbox_per_color),
194
- ('border_detect', s_border_detect),
195
- ('symmetry_check_lr', s_symmetry_check_lr),
196
- ('variable_scale_2x', s_variable_scale_2x),
197
- ('split_midpoint_or', s_split_midpoint_or),
198
- ('split_nor', s_split_nor),
199
- ('split_boolean', s_split_boolean),
200
- ('symmetrize', s_symmetrize),
201
- ('fill_row_endpoints_match', s_fill_row_endpoints_match),
202
- ('split_flip_overlay', s_split_flip_overlay),
203
- ('fill_between_markers', s_fill_between_markers),
204
- ('recolor_to_marker', s_recolor_to_marker),
205
- ('fill_between_same_color_row', s_fill_between_same_color_row),
206
- ('fill_between_same_color_cross', s_fill_between_same_color_cross),
207
- ('bbox_tile_1x2', s_bbox_tile_1x2),
208
- # Wave 6 solvers (reverse-engineered from submission-5743)
209
- ('select_asymmetric_block', s_select_asymmetric_block),
210
- ('bbox_crop_3x3', s_bbox_crop_3x3),
211
- ('periodic_tile_fill', s_periodic_tile_fill),
212
- ('eightfold_symmetry', s_eightfold_symmetry),
213
- ('ushape_fill_bottom', s_ushape_fill_bottom),
214
- ('centroid_zoom', s_centroid_zoom),
215
- # Wave 7 solvers (more reverse-engineered from submission-5743)
216
- ('count_color1_lookup', s_count_color1_lookup),
217
- ('count_present_colors', s_count_present_colors),
218
- ('histogram_match', s_histogram_match),
219
- ('marker_grid_fill', s_marker_grid_fill),
220
- # Wave 8 solvers (reverse-engineered from submission-5743, tasks 176/292/262/339/130/315/296/61)
221
- ('fill_mask_delta', s_fill_mask_delta),
222
- ('recolor_col_mask', s_recolor_col_mask),
223
- ('palette_lookup_markers', s_palette_lookup_markers),
224
- ('count_dominant_bar', s_count_dominant_bar),
225
- ('maxpool_3x3_downsample', s_maxpool_3x3_downsample),
226
- ('tile_mask_color2', s_tile_mask_color2),
227
- ('matmul_projection', s_matmul_projection),
228
- ('count_colors_pattern_bank', s_count_colors_pattern_bank),
229
- # Wave 9 solvers (reverse-engineered from submission-6043, tasks 166/346/149/303/97)
230
- ('fill_bbox_interior_color2', s_fill_bbox_interior_color2),
231
- ('least_dense_color', s_least_dense_color),
232
- ('count_color6_threshold', s_count_color6_threshold),
233
- ('conv_row_col_combine', s_conv_row_col_combine),
234
- ('neighbor_remove', s_neighbor_remove),
235
- # Wave 10 solvers (reverse-engineered from 5743/6043, tasks 167fix/186fix/193/257/327/12/197/242/162/329/85)
236
- ('count_present_colors_fixed', s_count_present_colors_fixed),
237
- ('count_color1_lookup_fixed', s_count_color1_lookup_fixed),
238
- ('remove_isolated_2x2', s_remove_isolated_2x2),
239
- ('overlay_4quadrants', s_overlay_4quadrants),
240
- ('diagonal_expand', s_diagonal_expand),
241
- ('pattern_grow_diamond', s_pattern_grow_diamond),
242
- ('row_pattern_tile', s_row_pattern_tile),
243
- ('flip_crop_marker', s_flip_crop_marker),
244
- ('find_enclosed_fill', s_find_enclosed_fill),
245
- ('keep_middle_col', s_keep_middle_col),
246
- ('shift_parity_remove', s_shift_parity_remove),
247
- # Wave 11 solvers (reverse-engineered from 5743, tasks 151/375/141/192/222/295)
248
- ('directional_replace', s_directional_replace),
249
- ('x_pattern_centroid', s_x_pattern_centroid),
250
- ('diagonal_fill_centroid', s_diagonal_fill_centroid),
251
- ('keep_dominant_2x2', s_keep_dominant_2x2),
252
- ('keep_dominant_2x2_v2', s_keep_dominant_2x2_v2),
253
- ('staircase_fill', s_staircase_fill),
254
- # Wave 12 solvers (reverse-engineered from 5743, tasks 272/147/207/320/321)
255
- ('isolated_mark_5x5', s_isolated_mark_5x5),
256
- ('neighbor_mark_6x6', s_neighbor_mark_6x6),
257
- ('odd_quadrant', s_odd_quadrant),
258
- ('cumsum_bottom_mark', s_cumsum_bottom_mark),
259
- ('three_panel_overlay', s_three_panel_overlay),
260
- # Wave 13 solvers (tasks 160/249/273/248/357)
261
- ('block_center_mark', s_block_center_mark),
262
- ('shift_tile_by_width', s_shift_tile_by_width),
263
- ('fill_interior_4corners', s_fill_interior_4corners),
264
- ('zigzag_marker_248', s_zigzag_marker_248),
265
- ('zigzag_marker_357', s_zigzag_marker_357),
266
- # Wave 14 solvers (tasks 68/371/271/143/287/274/393/104/79)
267
- ('unique_color_extract_dilate', s_unique_color_extract_dilate),
268
- ('centroid_manhattan_cross', s_centroid_manhattan_cross),
269
- ('conv_argmax_crop', s_conv_argmax_crop),
270
- ('template_match_recolor', s_template_match_recolor),
271
- ('symmetry_4fold_max', s_symmetry_4fold_max),
272
- ('row_gap_bank', s_row_gap_bank),
273
- ('top3_colors', s_top3_colors),
274
- ('quadrant_position_mask', s_quadrant_position_mask),
275
- ('conv5_argmax_crop3', s_conv5_argmax_crop3),
276
- # Wave 15 solvers (tasks 181/278/381)
277
- ('mirror_patch_markers', s_mirror_patch_markers),
278
- ('cluster_expand_frame', s_cluster_expand_frame),
279
- ('maxpool_row_conflict', s_maxpool_row_conflict),
280
- # Wave 16 solvers (tasks 23/253/319 - embedded trained weights)
281
- ('convnet_ch5_split', s_convnet_ch5_split),
282
- ('block2x2_pattern_bank', s_block2x2_pattern_bank),
283
- ('hash_lookup_319', s_hash_lookup_319),
284
- # Wave 17 solvers (tasks 4/38/59/106/108/123/153/180/344/369 - reverse-engineered from 5743)
285
- ('conv3x3_task4', s_conv3x3_task4),
286
- ('gridsample_108', s_gridsample_108),
287
- ('hash_lookup_153', s_hash_lookup_153),
288
- ('argmax_gather_106', s_argmax_gather_106),
289
- ('flag_level_map_123', s_flag_level_map_123),
290
- ('quadrant_overlap_38', s_quadrant_overlap_38),
291
- ('dilated_conv_180', s_dilated_conv_180),
292
- ('adjacency_classify_369', s_adjacency_classify_369),
293
- ('conv5x5_task344', s_conv5x5_task344),
294
- ('region_scatter_59', s_region_scatter_59),
295
- # Wave 18 solvers (tasks 24/37/47/63/81/93/125/128/137/139)
296
- ('row_col_filter_24', s_row_col_filter_24),
297
- ('grouped_conv_fill_37', s_grouped_conv_fill_37),
298
- ('centroid_distance_47', s_centroid_distance_47),
299
- ('bbox_channel_swap_63', s_bbox_channel_swap_63),
300
- ('neighbor_shift_81', s_neighbor_shift_81),
301
- ('maxpool_classify_93', s_maxpool_classify_93),
302
- ('cumsum_dilate_125', s_cumsum_dilate_125),
303
- ('argmax_shift_128', s_argmax_shift_128),
304
- ('tail_detect_137', s_tail_detect_137),
305
- ('horizontal_shift_fill_139', s_horizontal_shift_fill_139),
306
- # Wave 19 solvers (tasks 3/8/10/11/17/19/27/30/48/58/64/71/75/84/86)
307
- ('pattern_replicate_3', s_pattern_replicate_3),
308
- ('connected_region_8', s_connected_region_8),
309
- ('cascade_filter_10', s_cascade_filter_10),
310
- ('line_extend_11', s_line_extend_11),
311
- ('multi_region_17', s_multi_region_17),
312
- ('color_shift_19', s_color_shift_19),
313
- ('large_kernel_conv_27', s_large_kernel_conv_27),
314
- ('flood_fill_30', s_flood_fill_30),
315
- ('grid_partition_48', s_grid_partition_48),
316
- ('conv_transform_58', s_conv_transform_58),
317
- ('symmetric_fill_64', s_symmetric_fill_64),
318
- ('block_pattern_71', s_block_pattern_71),
319
- ('border_fill_75', s_border_fill_75),
320
- ('region_grow_84', s_region_grow_84),
321
- ('marker_spread_86', s_marker_spread_86),
322
- # Wave 20 solvers (20 tasks)
323
- ('flood_detect_92', s_flood_detect_92),
324
- ('neighbor_logic_94', s_neighbor_logic_94),
325
- ('spread_marker_109', s_spread_marker_109),
326
- ('pattern_match_112', s_pattern_match_112),
327
- ('lookup_map_114', s_lookup_map_114),
328
- ('shift_align_121', s_shift_align_121),
329
- ('iterative_fill_124', s_iterative_fill_124),
330
- ('conv_cascade_159', s_conv_cascade_159),
331
- ('line_cross_161', s_line_cross_161),
332
- ('marker_fill_165', s_marker_fill_165),
333
- ('edge_propagate_175', s_edge_propagate_175),
334
- ('directional_grow_177', s_directional_grow_177),
335
- ('symmetry_detect_183', s_symmetry_detect_183),
336
- ('multi_conv_187', s_multi_conv_187),
337
- ('block_extract_188', s_block_extract_188),
338
- ('color_region_195', s_color_region_195),
339
- ('pixel_count_bar_196', s_pixel_count_bar_196),
340
- ('grid_logic_198', s_grid_logic_198),
341
- ('corner_detect_199', s_corner_detect_199),
342
- ('region_color_200', s_region_color_200),
343
- # Wave 21 solvers (24 tasks)
344
- ('maxpool_spread_91', s_maxpool_spread_91),
345
- ('hash_encode_100', s_hash_encode_100),
346
- ('overlap_detect_204', s_overlap_detect_204),
347
- ('pattern_grow_215', s_pattern_grow_215),
348
- ('spatial_encode_217', s_spatial_encode_217),
349
- ('kernel_shift_221', s_kernel_shift_221),
350
- ('conv_threshold_225', s_conv_threshold_225),
351
- ('multi_step_228', s_multi_step_228),
352
- ('spatial_logic_231', s_spatial_logic_231),
353
- ('object_align_232', s_object_align_232),
354
- ('channel_merge_235', s_channel_merge_235),
355
- ('shift_pattern_239', s_shift_pattern_239),
356
- ('directional_mask_246', s_directional_mask_246),
357
- ('tile_index_247', s_tile_index_247),
358
- ('iterative_logic_251', s_iterative_logic_251),
359
- ('region_extract_252', s_region_extract_252),
360
- ('region_classify_256', s_region_classify_256),
361
- ('block_reduce_259', s_block_reduce_259),
362
- ('slice_combine_260', s_slice_combine_260),
363
- ('color_encode_265', s_color_encode_265),
364
- ('fill_logic_269', s_fill_logic_269),
365
- ('boundary_fill_279', s_boundary_fill_279),
366
- ('edge_detect_289', s_edge_detect_289),
367
- ('marker_connect_298', s_marker_connect_298),
368
- # Wave 22 solvers (143 reverse-engineered from 5743)
369
- ('select_transform_10sq', s_select_transform_10sq),
370
- ('aggregate', s_aggregate),
371
- ('diff_aggregate', s_diff_aggregate),
372
- ('crop_select_remap_filter_16sq', s_crop_select_remap_filter_16sq),
373
- ('crop_select_remap_filter_24sq', s_crop_select_remap_filter_24sq),
374
- ('flood_recolor', s_flood_recolor),
375
- ('crop_cumulative_10sq', s_crop_cumulative_10sq),
376
- ('flood_recolor_12sq', s_flood_recolor_12sq),
377
- ('conv_cumulative_remap_10sq', s_conv_cumulative_remap_10sq),
378
- ('select_filter', s_select_filter),
379
- ('logic', s_logic),
380
- ('cascade_transform_10sq', s_cascade_transform_10sq),
381
- ('select_project_filter', s_select_project_filter),
382
- ('conv_recolor', s_conv_recolor),
383
- ('cumulative_recolor_10sq', s_cumulative_recolor_10sq),
384
- ('select_diff_9sq', s_select_diff_9sq),
385
- ('select_transform_10sq_v2', s_select_transform_10sq_v2),
386
- ('mask_aggregate_19sq', s_mask_aggregate_19sq),
387
- ('flood_recolor_v2', s_flood_recolor_v2),
388
- ('select_filter_v2', s_select_filter_v2),
389
- ('cascade_logic_conditional', s_cascade_logic_conditional),
390
- ('project_recolor', s_project_recolor),
391
- ('remap_match_conditional', s_remap_match_conditional),
392
- ('cumulative_recolor_10sq_v2', s_cumulative_recolor_10sq_v2),
393
- ('select_filter_v3', s_select_filter_v3),
394
- ('conv_fill', s_conv_fill),
395
- ('conv_logic_conditional_1x5', s_conv_logic_conditional_1x5),
396
- ('conv_match_logic', s_conv_match_logic),
397
- ('select_transform', s_select_transform),
398
- ('transform_diff_mask_9sq', s_transform_diff_mask_9sq),
399
- ('conv_match_logic_v2', s_conv_match_logic_v2),
400
- ('conv_recolor_v2', s_conv_recolor_v2),
401
- ('cascade_mask', s_cascade_mask),
402
- ('conv_recolor_v3', s_conv_recolor_v3),
403
- ('select_project', s_select_project),
404
- ('remap_recolor_5sq', s_remap_recolor_5sq),
405
- ('cumulative_conditional_aggregate_10sq', s_cumulative_conditional_aggregate_10sq),
406
- ('cascade_mask_10sq', s_cascade_mask_10sq),
407
- ('conv_fill_v2', s_conv_fill_v2),
408
- ('conv_remap_5x15', s_conv_remap_5x15),
409
- ('conv_mask_diff_15sq', s_conv_mask_diff_15sq),
410
- ('select_conditional_aggregate', s_select_conditional_aggregate),
411
- ('select_conditional_match', s_select_conditional_match),
412
- ('select_combine_conditional_15sq', s_select_combine_conditional_15sq),
413
- ('conv_logic_logic_10sq', s_conv_logic_logic_10sq),
414
- ('filter_mask_aggregate', s_filter_mask_aggregate),
415
- ('conv_recolor_v4', s_conv_recolor_v4),
416
- ('flood_recolor_v3', s_flood_recolor_v3),
417
- ('conv_select_recolor_10sq', s_conv_select_recolor_10sq),
418
- ('select_filter_v4', s_select_filter_v4),
419
- ('conv_mask_aggregate_10sq', s_conv_mask_aggregate_10sq),
420
- ('conv_cumulative_select_filter_21sq', s_conv_cumulative_select_filter_21sq),
421
- ('filter_mask_aggregate_v2', s_filter_mask_aggregate_v2),
422
- ('crop_filter_9sq', s_crop_filter_9sq),
423
- ('select_match_logic', s_select_match_logic),
424
- ('flood_transform', s_flood_transform),
425
- ('flood_select_remap_filter', s_flood_select_remap_filter),
426
- ('cascade_cumulative_15sq', s_cascade_cumulative_15sq),
427
- ('select_remap', s_select_remap),
428
- ('learned_project_transform_11sq', s_learned_project_transform_11sq),
429
- ('select_remap_13sq', s_select_remap_13sq),
430
- ('conv_transform', s_conv_transform),
431
- ('select_transform_v2', s_select_transform_v2),
432
- ('recolor_mask_diff', s_recolor_mask_diff),
433
- ('cascade', s_cascade),
434
- ('conv_remap', s_conv_remap),
435
- ('conv_mask_aggregate', s_conv_mask_aggregate),
436
- ('logic_conditional_peak', s_logic_conditional_peak),
437
- ('recolor_mask_diff_10sq', s_recolor_mask_diff_10sq),
438
- ('recolor_mask_10sq', s_recolor_mask_10sq),
439
- ('conv_select_remap', s_conv_select_remap),
440
- ('conv_logic_aggregate_10sq', s_conv_logic_aggregate_10sq),
441
- ('learned_select_project_fill_10sq', s_learned_select_project_fill_10sq),
442
- ('flood_remap_transform', s_flood_remap_transform),
443
- ('flood_remap_13sq', s_flood_remap_13sq),
444
- ('flood_remap_transform_v2', s_flood_remap_transform_v2),
445
- ('select_remap_v2', s_select_remap_v2),
446
- ('select_transform_10sq_v3', s_select_transform_10sq_v3),
447
- ('cumulative_select_remap_filter_10sq', s_cumulative_select_remap_filter_10sq),
448
- ('select_remap_filter_29sq', s_select_remap_filter_29sq),
449
- ('remap_transform', s_remap_transform),
450
- ('multiconv_remap_filter', s_multiconv_remap_filter),
451
- ('cumulative_select_remap_filter_20sq', s_cumulative_select_remap_filter_20sq),
452
- ('cascade_recolor_10sq', s_cascade_recolor_10sq),
453
- ('learned_remap_project_filter', s_learned_remap_project_filter),
454
- ('multiconv_select_remap_filter', s_multiconv_select_remap_filter),
455
- ('select_logic', s_select_logic),
456
- ('cascade_recolor_12sq', s_cascade_recolor_12sq),
457
- ('cascade_recolor_12sq_v2', s_cascade_recolor_12sq_v2),
458
- ('transform_logic_diff', s_transform_logic_diff),
459
- ('filter_mask_aggregate_deep', s_filter_mask_aggregate_deep),
460
- ('cumulative_select_remap_filter', s_cumulative_select_remap_filter),
461
- ('learned_project_transform_deep', s_learned_project_transform_deep),
462
- ('learned_project_transform_10x15', s_learned_project_transform_10x15),
463
- ('cascade_transform_deep_10sq', s_cascade_transform_deep_10sq),
464
- ('logic_logic_deep', s_logic_logic_deep),
465
- ('multiconv_select_deep', s_multiconv_select_deep),
466
- ('learned_project_10sq', s_learned_project_10sq),
467
- ('learned_remap_project_transform_30sq', s_learned_remap_project_transform_30sq),
468
- ('learned_select_project_compact', s_learned_select_project_compact),
469
- ('learned_project_recolor', s_learned_project_recolor),
470
- ('learned_select_project_filter', s_learned_select_project_filter),
471
- ('select_remap_filter_deep_10sq', s_select_remap_filter_deep_10sq),
472
- ('cascade_filter_deep', s_cascade_filter_deep),
473
- ('learned_select_remap_project_transform', s_learned_select_remap_project_transform),
474
- ('learned_select_project_14x12', s_learned_select_project_14x12),
475
- ('learned_select_project_compact_v2', s_learned_select_project_compact_v2),
476
- ('cascade_select_remap_filter_deep', s_cascade_select_remap_filter_deep),
477
- ('learned_select_remap_project_23sq', s_learned_select_remap_project_23sq),
478
- ('conv_compact_10sq', s_conv_compact_10sq),
479
- ('learned_select_project_recolor_compact', s_learned_select_project_recolor_compact),
480
- ('learned_project_compact_20sq', s_learned_project_compact_20sq),
481
- ('learned_select_project_compact_v3', s_learned_select_project_compact_v3),
482
- ('learned_project_deep', s_learned_project_deep),
483
- ('learned_project_recolor_compact_15x10', s_learned_project_recolor_compact_15x10),
484
- ('learned_select_project_compact_v4', s_learned_select_project_compact_v4),
485
- ('transform_compact_10sq', s_transform_compact_10sq),
486
- ('flood_recolor_v4', s_flood_recolor_v4),
487
- ('cascade_recolor_10sq_v2', s_cascade_recolor_10sq_v2),
488
- ('conv_filter', s_conv_filter),
489
- ('conv_transform_9sq', s_conv_transform_9sq),
490
- ('learned_project_filter', s_learned_project_filter),
491
- ('select_diff', s_select_diff),
492
- ('flood_cumulative_remap_30sq', s_flood_cumulative_remap_30sq),
493
- ('cascade_recolor_17sq', s_cascade_recolor_17sq),
494
- ('conv_select_remap_filter', s_conv_select_remap_filter),
495
- ('cascade_transform', s_cascade_transform),
496
- ('cascade_recolor', s_cascade_recolor),
497
- ('cascade_mask_10sq_v2', s_cascade_mask_10sq_v2),
498
- ('project_fill_10sq', s_project_fill_10sq),
499
- ('conv_remap_transform', s_conv_remap_transform),
500
- ('cascade_recolor_v2', s_cascade_recolor_v2),
501
- ('learned_project_compact', s_learned_project_compact),
502
- ('select_remap_10sq', s_select_remap_10sq),
503
- ('conv_remap_filter_deep_10sq', s_conv_remap_filter_deep_10sq),
504
- ('crop_cascade_remap_deep_11sq', s_crop_cascade_remap_deep_11sq),
505
- ('remap_transform_deep', s_remap_transform_deep),
506
- ('learned_remap_project', s_learned_remap_project),
507
- ('learned_select_project_compact_13sq', s_learned_select_project_compact_13sq),
508
- ('recolor_match_conditional_compact', s_recolor_match_conditional_compact),
509
- ('learned_select_project_compact_v5', s_learned_select_project_compact_v5),
510
- ('learned_select_project_compact_10sq', s_learned_select_project_compact_10sq),
511
- ('learned_select_project_compact_v6', s_learned_select_project_compact_v6),
512
- ]
513
-
514
- def _check_size(path):
515
- try: return os.path.getsize(path) <= MAX_ONNX_FILESIZE
516
- except OSError: return False
517
-
518
- def _check_scoreable(path):
519
- macs, memory, params = score_network(path)
520
- return not (macs is None or memory is None or params is None)
521
-
522
- def _accept_model(path, td, providers):
523
- return _check_size(path) and validate(path, td, providers) and _check_scoreable(path)
524
-
525
- def _cleanup_failed(path):
526
- try:
527
- if os.path.exists(path): os.remove(path)
528
- except OSError: pass
529
-
530
- def solve_task(tn, td, outdir, providers, conv_budget=30.0, excluded_tasks=None):
531
- if excluded_tasks is None: excluded_tasks = EXCLUDED_TASKS
532
- t_start = time.time()
533
- os.makedirs(outdir, exist_ok=True)
534
- path = os.path.join(outdir, f"task{tn:03d}.onnx")
535
- if tn in excluded_tasks:
536
- return False, 'excluded', None, time.time() - t_start, path
537
- for sname, sfn in ANALYTICAL_SOLVERS:
538
- try:
539
- model = sfn(td)
540
- if model is None: continue
541
- onnx.save(model, path)
542
- if _accept_model(path, td, providers):
543
- return True, sname, os.path.getsize(path), time.time() - t_start, path
544
- except: pass
545
- exs = get_exs(td)
546
- same_shape = all(inp.shape == out.shape for inp, out in exs)
547
- shapes = set(inp.shape for inp, _ in exs)
548
- fixed_in = len(shapes) == 1
549
- conv_time = conv_budget
550
- if same_shape:
551
- if fixed_in:
552
- result = solve_conv_fixed(td, path, providers, time_budget=conv_time / 2)
553
- if result is not None and _check_size(path) and _check_scoreable(path):
554
- return True, result[0], os.path.getsize(path), time.time() - t_start, path
555
- result = solve_conv_variable(td, path, providers, time_budget=conv_time)
556
- if result is not None and _check_size(path) and _check_scoreable(path):
557
- return True, result[0], os.path.getsize(path), time.time() - t_start, path
558
- else:
559
- sp = fixed_shapes(td)
560
- if sp is not None:
561
- (IH, IW), (OH, OW) = sp
562
- if OH <= IH and OW <= IW:
563
- result = solve_conv_diffshape(td, path, providers, time_budget=conv_time)
564
- if result is not None and _check_size(path) and _check_scoreable(path):
565
- return True, result[0], os.path.getsize(path), time.time() - t_start, path
566
- result = solve_conv_var_diff(td, path, providers, time_budget=conv_time)
567
- if result is not None and _check_size(path) and _check_scoreable(path):
568
- return True, result[0], os.path.getsize(path), time.time() - t_start, path
569
- _cleanup_failed(path)
570
- return False, None, None, time.time() - t_start, path
 
1
+ This file is too large to include inline - applying targeted fix only