Conv1d
1D convolution over (N, C, L), matching torch.nn.Conv1d.
Composed from Conv2d, not a new kernel. A 1-D convolution is the 2-D one with a height of 1: the input becomes (N, C, 1, L), the weight gets a kernel height of 1, and the axis is squeezed back out afterwards. The arithmetic is identical, so a separate GLSL kernel would be a second implementation of one algorithm — which this project has already learned costs a byte-level comparison to keep honest.
Weight layout is torch's, (out_channels, in_channels, kernel_size), so a state_dict loads without rearrangement.
Both reshapes are view operations: zero-copy, no allocation, no dispatch. The im2col underneath sees a height of 1 with no padding in that axis, so it does no work for it either.
If a profile ever shows the 1-D path dominated by the degenerate height axis — a very long sequence with a tiny channel count — a dedicated kernel becomes arguable. Nothing measures that today, and reserving a kernel for a speculative case is what ADR 0004 exists to refuse.