onnx2versal
Loading...
Searching...
No Matches
qlinearpool.h
1#ifndef QLINEARPOOL_H_
2#define QLINEARPOOL_H_
3
4#include <adf.h>
5#include <assert.h>
6
7
26template <typename TT, int INP_H, int INP_W, int OUT_H, int OUT_W, int B, int C, int KH, int KW>
28 private:
29 float in_scale;
30 float out_scale;
31 int8_t in_zero;
32 int8_t out_zero;
33
34 public:
36 float in_scale,
37 float out_scale,
38 int8_t in_zero,
39 int8_t out_zero
40 ): in_scale(in_scale), out_scale(out_scale), in_zero(in_zero), out_zero(out_zero) {}
41
42 void filter(
43 input_window<TT>* in,
44 output_stream<TT>* out
45 );
46 static void registerKernelClass() {
47 REGISTER_FUNCTION(QLinearAvgpoolScalarBCHW::filter);
48 }
49};
50
51
56template <typename TT, int INP_H, int INP_W, int OUT_H, int OUT_W, int B, int C, int KH, int KW>
58 private:
59 float in_scale;
60 float out_scale;
61 int8_t in_zero;
62 int8_t out_zero;
63
64 // precomputation
65 int BITSHIFT;
66 int16_t scale;
67
68 public:
70 float in_scale,
71 float out_scale,
72 int8_t in_zero,
73 int8_t out_zero
74 );
75
76 void filter(
77 input_stream<TT>* in,
78 output_stream<TT>* out
79 );
80 static void registerKernelClass() {
81 static_assert(C % 16 == 0);
82 static_assert(KW <= 16);
83 REGISTER_FUNCTION(QLinearGlobalAvgpoolScalarBCHW::filter);
84 }
85};
89#endif // QLINEARPOOL_H_
Scalar implementation for BCHW avgpool, requires B*C*OUT_H*OUT_W % 16 == 0 QLinearAvgpoolScalarBCHW::...
Definition qlinearpool.h:27
Scalar implementation for BCHW avgpool, QLinearGlobalAvgpoolScalarBCHW<7,16,1,1,1,...
Definition qlinearpool.h:57