| A — shape/distribution |
default, y_offset_zero, full_row, slice_large_row, min_block_cols, slice_at_end, wide_slice (gather_kernel, 7); 1core, large_k (gather_kernel_1core, 2); 2d, 2d_serial, 2d_large_table, 2d_large_table_serial (gather_2d_kernel, 4); 1d (gather_1d_kernel, 1); 3d, 3d_large_k, 3d_group, 3d_group_end, 3d_partial, scatter_3d, scatter_3d_partial, 4d, 4d_boundary, 2d_index_gather, 2d_index_roundtrip, 2d_index_3d_block, 2d_index_3d_block_large (9 kernel fns, 14 variants) |
Good fit, already exists. All 28 pin fp32/i32 and sweep rank, shape, grid, and distribution — exactly Level A's job. No new variants needed; this is a reclassification, not a rewrite. |
| C — layout |
spyre_stick, spyre_stick_output_only (gather_kernel_spyre, 2); 4d_spyre_stick_output (part of gather_4d_kernel's 3) |
Good fit, already exists. All three carry tl.spyre_tensor_layout annotations, no compiles_to_binary, matching Level C exactly. |
A-D levels for test fixtures already exist for e.g.
reduce.As a follow-up to #11 and #116 the same pattern should be established for
gather.The table below shows the current status/gaps:
default,y_offset_zero,full_row,slice_large_row,min_block_cols,slice_at_end,wide_slice(gather_kernel, 7);1core,large_k(gather_kernel_1core, 2);2d,2d_serial,2d_large_table,2d_large_table_serial(gather_2d_kernel, 4);1d(gather_1d_kernel, 1);3d,3d_large_k,3d_group,3d_group_end,3d_partial,scatter_3d,scatter_3d_partial,4d,4d_boundary,2d_index_gather,2d_index_roundtrip,2d_index_3d_block,2d_index_3d_block_large(9 kernel fns, 14 variants)fp32/i32and sweep rank, shape, grid, and distribution — exactly Level A's job. No new variants needed; this is a reclassification, not a rewrite.ktir_cpualone — the closest thing today (1core) isfp32-only and already carries other Level-A-ish framing (single-program shape, not a dtype probe).spyre_stick,spyre_stick_output_only(gather_kernel_spyre, 2);4d_spyre_stick_output(part ofgather_4d_kernel's 3)tl.spyre_tensor_layoutannotations, nocompiles_to_binary, matching Level C exactly.grep -n "compiles_to_binary" fixtures/gather/meta.pyreturns nothing — no gather variant reachesdbo-optor compiles to a real binary today. A and C are largely already there in substance if not in labeling.The implementation is probably going to be done in at least 2 stages: