Tensara Logo

tensara

All Problems

1D Max Pooling

EASY

Perform 1D max pooling on an input tensor:

output[i]=maxm=0k1input[Si+DmP]\text{output}[i] = \max_{m=0}^{k-1} \text{input}[S \cdot i + D \cdot m - P]

The max pooling operation slides a window of size k×kk \times k over the input tensor with stride SS, dilation DD, and padding PP, computing the maximum value within each window position.

Input:

  • Matrix input of size H\text{H} (input tensor)
  • kernel_size (kk): Size of the pooling window
  • stride (SS): Step size between window positions
  • padding (PP): Number of zero-padding elements added on all sides
  • dilation (DD): Spacing between kernel elements

Output:

  • Matrix output of size Hout\text{H}_{\text{out}} where: Hout=H+2PD(k1)1S+1\text{H}_{\text{out}} = \left\lfloor\frac{\text{H} + 2P - D(k-1) - 1}{S}\right\rfloor + 1

Notes:

  • All tensors are stored in row-major order
  • Zero padding is applied when specified by the padding parameter
  • For values outside the input boundaries (after padding), use negative infinity
  • Dilation controls the spacing between kernel elements, creating an effective kernel size of D(k1)+1D(k-1) + 1
  • This problem is adapted from KernelBench

Test Case Sizes

  • H=2097152, K=7, S=4, P=3, d=1
  • H=4194304, K=2, S=1, P=0, d=1
  • H=8388608, K=3, S=2, P=1, d=1
  • H=16777216, K=4, S=2, P=1, d=2
  • H=33554432, K=3, S=1, P=1, d=1
  • H=67108864, K=5, S=3, P=2, d=1
Console

Sample Run Results

Hit "Run" to test your code with sample inputs

Loading...

Loading editor...

CUDA C++ environment

Desktop Required for Code Submission

For the best coding experience, please switch to a desktop device to write and submit your solution.