InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
slow_conv3d_forward.h
Go to the documentation of this file.
1#ifndef INFINI_OPS_BASE_SLOW_CONV3D_FORWARD_H_
2#define INFINI_OPS_BASE_SLOW_CONV3D_FORWARD_H_
3
4#include <optional>
5#include <vector>
6
7#include "operator.h"
8
9namespace infini::ops {
10
11class SlowConv3dForward : public Operator<SlowConv3dForward> {
12 public:
13 SlowConv3dForward(const Tensor input, const Tensor weight,
14 const std::optional<Tensor> bias,
15 const std::vector<int64_t> kernel_size,
16 const std::vector<int64_t> stride,
17 const std::vector<int64_t> padding, Tensor output)
18 : input_shape_{input.shape()},
19 input_strides_{input.strides()},
20 input_type_{input.dtype()},
21 weight_shape_{weight.shape()},
22 weight_strides_{weight.strides()},
23 weight_type_{weight.dtype()},
24 output_shape_{output.shape()},
25 output_strides_{output.strides()},
26 output_type_{output.dtype()},
27 has_bias_{bias.has_value()},
28 bias_shape_{bias ? Tensor::Shape{bias->shape()} : Tensor::Shape{}},
29 bias_strides_{bias ? Tensor::Strides{bias->strides()}
30 : Tensor::Strides{}},
31 bias_type_{bias ? bias->dtype() : DataType::kFloat32},
32 kernel_size_{kernel_size},
33 stride_{stride},
34 padding_{padding},
35 device_index_{output.device().index()} {}
36
37 virtual void operator()(const Tensor input, const Tensor weight,
38 const std::optional<Tensor> bias,
39 const std::vector<int64_t> kernel_size,
40 const std::vector<int64_t> stride,
41 const std::vector<int64_t> padding,
42 Tensor output) const = 0;
43
44 protected:
45 Tensor::Shape input_shape_;
46
47 Tensor::Strides input_strides_;
48
49 DataType input_type_;
50
51 Tensor::Shape weight_shape_;
52
53 Tensor::Strides weight_strides_;
54
55 DataType weight_type_;
56
57 Tensor::Shape output_shape_;
58
59 Tensor::Strides output_strides_;
60
61 DataType output_type_;
62
63 bool has_bias_{false};
64
65 Tensor::Shape bias_shape_;
66
67 Tensor::Strides bias_strides_;
68
69 DataType bias_type_{DataType::kFloat32};
70
71 std::vector<int64_t> kernel_size_{};
72
73 std::vector<int64_t> stride_{};
74
75 std::vector<int64_t> padding_{};
76
78};
79
80} // namespace infini::ops
81
82#endif
Definition generated/include/operator.h:282
Definition slow_conv3d_forward.h:11
Tensor::Strides weight_strides_
Definition slow_conv3d_forward.h:53
bool has_bias_
Definition slow_conv3d_forward.h:63
DataType input_type_
Definition slow_conv3d_forward.h:49
DataType bias_type_
Definition slow_conv3d_forward.h:69
std::vector< int64_t > padding_
Definition slow_conv3d_forward.h:75
DataType output_type_
Definition slow_conv3d_forward.h:61
std::vector< int64_t > kernel_size_
Definition slow_conv3d_forward.h:71
DataType weight_type_
Definition slow_conv3d_forward.h:55
virtual void operator()(const Tensor input, const Tensor weight, const std::optional< Tensor > bias, const std::vector< int64_t > kernel_size, const std::vector< int64_t > stride, const std::vector< int64_t > padding, Tensor output) const =0
Tensor::Shape weight_shape_
Definition slow_conv3d_forward.h:51
Tensor::Strides output_strides_
Definition slow_conv3d_forward.h:59
std::vector< int64_t > stride_
Definition slow_conv3d_forward.h:73
int device_index_
Definition slow_conv3d_forward.h:77
SlowConv3dForward(const Tensor input, const Tensor weight, const std::optional< Tensor > bias, const std::vector< int64_t > kernel_size, const std::vector< int64_t > stride, const std::vector< int64_t > padding, Tensor output)
Definition slow_conv3d_forward.h:13
Tensor::Shape bias_shape_
Definition slow_conv3d_forward.h:65
Tensor::Strides bias_strides_
Definition slow_conv3d_forward.h:67
Tensor::Shape input_shape_
Definition slow_conv3d_forward.h:45
Tensor::Shape output_shape_
Definition slow_conv3d_forward.h:57
Tensor::Strides input_strides_
Definition slow_conv3d_forward.h:47
Definition generated/include/operator.h:28
infini::rt::TensorView Tensor
Definition tensor.h:8