CUDA Tape Operations: Convolution and Pooling #
Every entry point rejects zero strides and geometry that cannot cross the UInt32 ABI, validates
input lengths through requireValue, and checks forward native outputs before recording them on the
tape. Pointer lifetime and device ownership remain responsibilities of the native buffer layer.
Conv2D + pooling (ConvPool FFI) #
ConvTranspose2D (ConvPool FFI) #
Generic naming wrappers #
The CUDA tape exposes conv/max_pool/avg_pool/smooth_max_pool using the same names as the
CPU tape. These dispatch to the ConvPool CUDA FFI entrypoints that take per-axis parameters as
Array Nat (rank $\le 8$).
The *2d* wrappers remain as concise convenience names for the common rank-2 case.
Smooth max-pool2d (log-sum-exp surrogate) via ConvPool FFI, without padding.
beta is checked after conversion to Float32, because conversion can underflow a nonzero Float
to zero or overflow a finite one to infinity.
Instances For
Smooth max-pool2d (log-sum-exp surrogate) via ConvPool FFI, with symmetric padding.
beta is checked after conversion to Float32, because conversion can underflow a nonzero Float
to zero or overflow a finite one to infinity.
Instances For
N-D smooth max pooling via the CUDA ConvPool FFI (rank at most eight).
beta is checked after conversion to Float32, because conversion can underflow a nonzero Float
to zero or overflow a finite one to infinity.