class_docstr: Base class for `CorrMM`, `CorrMM_gradWeights` and
  `CorrMM_gradInputs`. Cannot be used directly.
  
  Every sub-class must define internal attribute ``_direction`` out of __init__().
  ``_direction`` must take one of following values:
  
   - "forward" to correlate bottom with weights and store results in top.
   - "backprop weights" to do a valid convolution of bottom with top
     (swapping the first two dimensions) and store results in weights.
   - "backprop inputs" to do a full convolution of top with weights
     (swapping the first two dimensions) and store results in bottom.
  
  Parameters
  ----------
  border_mode : {'valid', 'full', 'half'}
      Additionally, the padding size could be directly specified by an integer,
      a pair of integers, or two pairs of integers.
  subsample
      Perform subsampling of the output (default: (1, 1)).
  filter_dilation
      Perform dilated correlation (default: (1,1))
  num_groups
      Perform grouped convolutions (default: 1)
  unshared
      Perform unshared correlation (default: False)
code: def c_code_cache_version(self):
      # raise this whenever modifying any of the support_code_files
      return (10, self.openmp, blas_header_version())
  
imports: import logging
  import os
  from typing import Optional
  import pytensor
  from pytensor.configdefaults import config
  from pytensor.graph.basic import Apply
  from pytensor.graph.op import _NoPythonOp
  from pytensor.link.c.op import OpenMPOp
  from pytensor.link.c.params_type import ParamsType
  from pytensor.link.c.type import EnumList
  from pytensor.scalar import int8, int64
  from pytensor.tensor import blas_headers
  from pytensor.tensor.basic import as_tensor_variable
  from pytensor.tensor.blas import blas_header_version, ldflags
  from pytensor.tensor.conv.abstract_conv import get_conv_output_shape
  from pytensor.tensor.type import TensorType
label_desc: Use image node_id 12 for calling the BaseCorrMM obj's underlying member method code with example usage: obj.c_code_cache_version() and returns: int,  self,  blas_header_version