Home / Class/ kSpatialDim Class — pytorch Architecture

kSpatialDim Class — pytorch Architecture

Architecture documentation for the kSpatialDim class in fbgemm_utils.cpp from the pytorch codebase.

Entity Profile

Source Code

aten/src/ATen/native/quantized/cpu/fbgemm_utils.cpp lines 97–146

template <int kSpatialDim>
fbgemm::conv_param_t<kSpatialDim> MakeFbgemmConvParam(
    int N,
    int C,
    int M,
    const std::vector<int>& image_shape,
    int groups,
    const std::vector<int>& kernels,
    const std::vector<int>& strides,
    const std::vector<int>& pads,
    const std::vector<int>& dilations,
    const std::vector<int>& output_padding,
    bool transposed) {
  std::array<int, kSpatialDim> image_shape_{};
  std::array<int, kSpatialDim> kernels_{};
  std::array<int, kSpatialDim> strides_{};
  std::array<int, kSpatialDim * 2ull> pads_{};
  std::array<int, kSpatialDim> dilations_{};
  std::array<int, kSpatialDim> output_padding_{};
  std::move(
      image_shape.begin(), image_shape.begin() + static_cast<int64_t>(image_shape.size()), image_shape_.begin());
  std::move(
      kernels.begin(), kernels.begin() + static_cast<int64_t>(kernels.size()), kernels_.begin());
  std::move(
      strides.begin(), strides.begin() + static_cast<int64_t>(strides.size()), strides_.begin());
  std::move(
      dilations.begin(),
      dilations.begin() + static_cast<int64_t>(dilations.size()),
      dilations_.begin());
  std::move(
      output_padding.begin(),
      output_padding.begin() + static_cast<int64_t>(output_padding.size()),
      output_padding_.begin());
  std::copy(pads.begin(), pads.begin() + static_cast<int64_t>(pads.size()), pads_.begin());
  const auto pads_size = static_cast<int64_t>(pads.size());
  std::move(pads.begin(), pads.begin() + pads_size, pads_.begin() + pads_size);

  return fbgemm::conv_param_t<kSpatialDim>(
      N, // batch size
      C, // input channels
      M, // output channels
      image_shape_, // feature map size
      groups, // groups
      kernels_, // kernels
      strides_, // strides
      pads_, // paddings
      dilations_, // dilations
      output_padding_, // output paddings for conv transpose
      transposed);
}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free