Regular conv1d is basically $a_i^c = \sum_{k, c’} weight[c, c’, k] x_{i+k}^c’$, where x is the input with c' the input channel dim, and weight has dimensions [out_channel_dim, in_channel_dim, kernel_size].
The questions

Is there a way to do the convolution operation alone, i.e. without the summation over the channel dim c'?
I guess I could use the einsum for this, but is it going to be fast enough (like cuDNN fast)?

functional.conv1d does the actual convolution, summation over the channel dim and adds the bias… I’d need some more primitive ops for my crazy experiments!