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
26
template
<
typename
TT,
int
INP_H,
int
INP_W,
int
OUT_H,
int
OUT_W,
int
B,
int
C,
int
KH,
int
KW>
27
class
QLinearAvgpoolScalarBCHW
{
28
private
:
29
float
in_scale;
30
float
out_scale;
31
int8_t in_zero;
32
int8_t out_zero;
33
34
public
:
35
QLinearAvgpoolScalarBCHW
(
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
56
template
<
typename
TT,
int
INP_H,
int
INP_W,
int
OUT_H,
int
OUT_W,
int
B,
int
C,
int
KH,
int
KW>
57
class
QLinearGlobalAvgpoolScalarBCHW
{
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
:
69
QLinearGlobalAvgpoolScalarBCHW
(
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_
QLinearAvgpoolScalarBCHW
Scalar implementation for BCHW avgpool, requires B*C*OUT_H*OUT_W % 16 == 0 QLinearAvgpoolScalarBCHW::...
Definition
qlinearpool.h:27
QLinearGlobalAvgpoolScalarBCHW
Scalar implementation for BCHW avgpool, QLinearGlobalAvgpoolScalarBCHW<7,16,1,1,1,...
Definition
qlinearpool.h:57
design
aie_src
qlinearpool.h
Generated by
1.9.8