InfiniOps
Operator Library for Accelerators
Loading...
Searching...
No Matches
gelu_infinilm.h
Go to the documentation of this file.
1#ifndef INFINI_OPS_BASE_GELU_INFINILM_H_
2#define INFINI_OPS_BASE_GELU_INFINILM_H_
3
4#include <cassert>
5#include <string>
6
7#include "operator.h"
8
9namespace infini::ops {
10
12class [[deprecated("Use `Gelu` instead.")]] GeluInfinilm
13 : public Operator<GeluInfinilm> {
14 public:
15 GeluInfinilm(const Tensor input, const std::string approximate, Tensor out)
16 : input_shape_{input.shape()},
17 input_strides_{input.strides()},
18 input_type_{input.dtype()},
19 out_shape_{out.shape()},
20 out_strides_{out.strides()},
21 out_type_{out.dtype()},
22 approximate_{approximate},
23 output_size_{out.numel()},
24 ndim_{out.ndim()},
25 is_input_contiguous_{input.IsContiguous()},
26 is_out_contiguous_{out.IsContiguous()},
27 device_index_{out.device().index()} {
28 assert(input_shape_ == out_shape_ &&
29 "`GeluInfinilm` input and output shapes must match");
30 assert(input_type_ == out_type_ &&
31 "`GeluInfinilm` input and output dtypes must match");
32 assert((approximate.empty() || approximate == "none") &&
33 "`GeluInfinilm` only supports exact approximation");
34 assert(!out.HasBroadcastDim() &&
35 "`GeluInfinilm` output must not have broadcasted dimensions");
36 }
37
38 virtual void operator()(const Tensor input, const std::string approximate,
39 Tensor out) const = 0;
40
41 protected:
42 Tensor::Shape input_shape_;
43
44 Tensor::Strides input_strides_;
45
46 DataType input_type_;
47
48 Tensor::Shape out_shape_;
49
50 Tensor::Strides out_strides_;
51
52 DataType out_type_;
53
54 std::string approximate_{};
55
56 Tensor::Size output_size_{0};
57
58 Tensor::Size ndim_{0};
59
60 bool is_input_contiguous_{false};
61
62 bool is_out_contiguous_{false};
63
64 int device_index_{0};
65};
66
67} // namespace infini::ops
68
69#endif
Definition gelu_infinilm.h:13
Tensor::Shape input_shape_
Definition gelu_infinilm.h:42
GeluInfinilm(const Tensor input, const std::string approximate, Tensor out)
Definition gelu_infinilm.h:15
Tensor::Strides out_strides_
Definition gelu_infinilm.h:50
Tensor::Strides input_strides_
Definition gelu_infinilm.h:44
virtual void operator()(const Tensor input, const std::string approximate, Tensor out) const =0
DataType out_type_
Definition gelu_infinilm.h:52
DataType input_type_
Definition gelu_infinilm.h:46
Tensor::Shape out_shape_
Definition gelu_infinilm.h:48
Definition generated/include/operator.h:282
Definition generated/include/operator.h:28
infini::rt::TensorView Tensor
Definition tensor.h:8