Skip to main content
Log in

Mojo function

accumulate_wo_tile_1d

accumulate_wo_tile_1d[micro_kernel_height: Int, micro_kernel_width: Int, simd_size: Int, partial_load_filter: Bool, effected_by_padding: Bool, input_dt: DType, filter_dt: DType](c_tile_size: Int, S: Int, mut acc: _Accumulator[type, num_rows, num_cols, simd_width, row_start, row_stop], input: UnsafePointer[SIMD[input_dt, 1]], input_stride: Int, input_stride_to_nbr: Int, filter: UnsafePointer[SIMD[filter_dt, 1]], filter_stride: Int, filter_stride_to_nbr: Int, partial_load_filter_size: Int, w: Int, W: Int, dilation: Int)

Update one row in the output for a given (c, f) tile.

Parameters:

  • micro_kernel_height (Int): Number of input points in register tiling.
  • micro_kernel_width (Int): Number of SIMD resgiters assigned to F.
  • simd_size (Int): Number of elements in a SIMD register.
  • partial_load_filter (Bool): Whether using partial load for filter.
  • effected_by_padding (Bool): Whether the tile is effected by padding.
  • input_dt (DType): DType of input.
  • filter_dt (DType): DType of filter.

Args:

  • c_tile_size (Int): Tile size in input channel.
  • S (Int): Filter window width.
  • acc (_Accumulator[type, num_rows, num_cols, simd_width, row_start, row_stop]): Pointer to register tile accumulator.
  • input (UnsafePointer[SIMD[input_dt, 1]]): Pointer to the first input point in WO tile.
  • input_stride (Int): Stride between two input points, i.e., C w/ NHWC layout.
  • input_stride_to_nbr (Int): Stride between an input point and its neighbor.
  • filter (UnsafePointer[SIMD[filter_dt, 1]]): Pointer to the first coef in the filter window.
  • filter_stride (Int): Stride between two segments of size micro_kernel_width * simd_size.
  • filter_stride_to_nbr (Int): Stride between between two neighbor coefs, i.e., CF w/ RSCF layout.
  • partial_load_filter_size (Int): Size of partial load for filter.
  • w (Int): Coordinate in an input row.
  • W (Int): Input width.
  • dilation (Int): Convolution dilation.

Was this page helpful?