InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
slow_conv3d.h
Go to the documentation of this file.
1#ifndef INFINI_OPS_BASE_SLOW_CONV3D_H_
2#define INFINI_OPS_BASE_SLOW_CONV3D_H_
3
4#include <optional>
5#include <vector>
6
7#include "operator.h"
8
9namespace infini::ops {
10
11class SlowConv3d : public Operator<SlowConv3d> {
12 public:
13 SlowConv3d(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 out)
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 out_shape_{out.shape()},
25 out_strides_{out.strides()},
26 out_type_{out.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_{out.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 out) 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 out_shape_;
58
59 Tensor::Strides out_strides_;
60
61 DataType out_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.h:11
Tensor::Strides bias_strides_
Definition slow_conv3d.h:67
Tensor::Shape weight_shape_
Definition slow_conv3d.h:51
std::vector< int64_t > kernel_size_
Definition slow_conv3d.h:71
std::vector< int64_t > stride_
Definition slow_conv3d.h:73
DataType input_type_
Definition slow_conv3d.h:49
std::vector< int64_t > padding_
Definition slow_conv3d.h:75
Tensor::Shape input_shape_
Definition slow_conv3d.h:45
DataType bias_type_
Definition slow_conv3d.h:69
Tensor::Strides out_strides_
Definition slow_conv3d.h:59
SlowConv3d(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 out)
Definition slow_conv3d.h:13
DataType out_type_
Definition slow_conv3d.h:61
Tensor::Shape bias_shape_
Definition slow_conv3d.h:65
Tensor::Strides weight_strides_
Definition slow_conv3d.h:53
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 out) const =0
bool has_bias_
Definition slow_conv3d.h:63
Tensor::Strides input_strides_
Definition slow_conv3d.h:47
Tensor::Shape out_shape_
Definition slow_conv3d.h:57
DataType weight_type_
Definition slow_conv3d.h:55
int device_index_
Definition slow_conv3d.h:77
Definition generated/include/operator.h:28
infini::rt::TensorView Tensor
Definition tensor.h:8