TorchLean API

NN.Runtime.Autograd.Engine.Cuda.Ops.ConvPool

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.

Arbitrary-rank convolution and pooling #

def Runtime.Autograd.Cuda.Tape.conv {d inC outC : } {kernel stride padding inSpatial : TorchLean.Tensor [d]} (t : Tape) (kernelId biasId inputId : ) :

Rank-polymorphic convolution via the CUDA ConvPool FFI (spatial rank $\le 8$).

Instances For
    def Runtime.Autograd.Cuda.Tape.convTranspose {d inC outC : } {kernel stride padding inSpatial : TorchLean.Tensor [d]} (t : Tape) (kernelId biasId inputId : ) :

    Rank-polymorphic transpose convolution via the CUDA ConvPool FFI (spatial rank $\le 8$).

    Instances For
      def Runtime.Autograd.Cuda.Tape.maxPool {d C : } {inSpatial kernel stride padding : TorchLean.Tensor [d]} (t : Tape) (xId : ) :

      Rank-polymorphic max pooling via the CUDA ConvPool FFI (spatial rank $\le 8$).

      Instances For
        def Runtime.Autograd.Cuda.Tape.smoothMaxPool {d C : } {inSpatial kernel stride padding : TorchLean.Tensor [d]} (t : Tape) (xId : ) (beta : Float) :

        Rank-polymorphic smooth max pooling via the CUDA ConvPool FFI (spatial 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.

        Instances For
          def Runtime.Autograd.Cuda.Tape.avgPool {d C : } {inSpatial kernel stride padding : TorchLean.Tensor [d]} (t : Tape) (xId : ) :

          Rank-polymorphic average pooling via the CUDA ConvPool FFI (spatial rank $\le 8$).

          Instances For