TorchLean API

NN.Runtime.Autograd.Engine.Cuda.ConvPool

CUDA Conv/Pool FFI #

Foreign-function declarations for TorchLean's float32 convolution and pooling kernels. The real CUDA implementation lives in csrc/cuda/conv_pool/; CPU stubs with the same symbols are used when TorchLean is built without -K cuda=true.

All buffers are contiguous Cuda.Buffer values and shape/stride/padding metadata is passed explicitly through the FFI boundary.

@[never_extract, extern torchlean_cuda_convtranspose_fwd]
opaque Runtime.Autograd.Cuda.torchleanConvTransposeFwdCuda (input kernel bias : Buffer) (inSpatial kernelSpatial stride padding : Array Nat) (inC outC : UInt32) :

Float32 N-D transposed convolution forward (channels-first, no batch).

Shapes/parameters:

  • inSpatial: length d (input spatial dims)
  • kernelSpatial: length d (kernel window)
  • stride: length d
  • padding: length d

All arrays must have the same length d ≤ 8.

Layout conventions:

  • input: (inC, spatial...)
  • kernel: (inC, outC, kernelSpatial...)
  • bias: (outC)
  • output: (outC, outSpatial...), where outSpatial[i] = (inSpatial[i] - 1) * stride[i] - 2*padding[i] + kernelSpatial[i].
@[never_extract, extern torchlean_cuda_convtranspose_bwd]
opaque Runtime.Autograd.Cuda.torchleanConvTransposeBwdCuda (input kernel gradOutput : Buffer) (inSpatial kernelSpatial stride padding : Array Nat) (inC outC : UInt32) :

Float32 N-D transposed convolution backward.

Returns (dKernel, dBias, dInput) as device buffers. Array conventions match torchleanConvTransposeFwdCuda.

@[never_extract, extern torchlean_cuda_conv_fwd]
opaque Runtime.Autograd.Cuda.torchleanConvFwdCuda (input kernel bias : Buffer) (inSpatial kernelSpatial stride padding : Array Nat) (inC outC : UInt32) :

Float32 N-D convolution forward (channels-first, no batch).

Shapes/parameters:

  • inSpatial: length d (spatial dims)
  • kernelSpatial: length d (kernel window)
  • stride: length d
  • padding: length d

All arrays must have the same length d ≤ 8.

@[never_extract, extern torchlean_cuda_conv_bwd]
opaque Runtime.Autograd.Cuda.torchleanConvBwdCuda (input kernel gradOutput : Buffer) (inSpatial kernelSpatial stride padding : Array Nat) (inC outC : UInt32) :

Float32 N-D convolution backward.

Returns (dKernel, dBias, dInput) as device buffers. Array conventions match torchleanConvFwdCuda.

@[never_extract, extern torchlean_cuda_maxpool_fwd]
opaque Runtime.Autograd.Cuda.torchleanMaxPoolFwdCuda (input : Buffer) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D max-pooling forward (channels preserved).

@[never_extract, extern torchlean_cuda_maxpool_bwd]
opaque Runtime.Autograd.Cuda.torchleanMaxPoolBwdCuda (input gradOutput : Buffer) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D max-pooling backward: returns dInput.

@[never_extract, extern torchlean_cuda_avgpool_fwd]
opaque Runtime.Autograd.Cuda.torchleanAvgPoolFwdCuda (input : Buffer) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D avg-pooling forward (channels preserved).

@[never_extract, extern torchlean_cuda_avgpool_bwd]
opaque Runtime.Autograd.Cuda.torchleanAvgPoolBwdCuda (gradOutput : Buffer) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D avg-pooling backward: returns dInput.

@[never_extract, extern torchlean_cuda_smooth_maxpool_fwd]
opaque Runtime.Autograd.Cuda.torchleanSmoothMaxPoolFwdCuda (input : Buffer) (beta : Float) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D smooth max-pooling forward with channels preserved.

The native implementation requires finite nonzero beta and uses a maximum input pivot for positive beta or a minimum input pivot for negative beta, matching the two-dimensional path.

@[never_extract, extern torchlean_cuda_smooth_maxpool_bwd]
opaque Runtime.Autograd.Cuda.torchleanSmoothMaxPoolBwdCuda (input gradOutput : Buffer) (beta : Float) (inSpatial kernel stride padding : Array Nat) (inC : UInt32) :

Float32 N-D smooth max-pooling backward, returning dInput.

It shares the forward operation's finite nonzero-beta contract and sign-aware max/min input pivot.