43 adf::port<input> pin[1];
44 adf::port<output> pout[1];
51 k[0] = adf::kernel::create_object<QUANTIZE_LINEAR<TT, INP_H, INP_W, OUT_W>>(y_scale, y_zero);
52 adf::source(k[0]) =
"quantize_linear.cc";
53 adf::headers(k[0]) = {
"quantize_linear.h"};
54 adf::runtime<ratio>(k[0]) = 0.6;
55 adf::repetition_count(k[0]) = repeat_cnt;
57 adf::connect<adf::window<INP_H*INP_W*4>> (pin[0], k[0].in[0]);
58 adf::connect<adf::window<INP_H*OUT_W>> (k[0].out[0], pout[0]);
80 adf::port<input> pin[1];
81 adf::port<output> pout[1];
87 k[0] = adf::kernel::create_object<QUANTIZE_LINEAR<TT, INP_H, INP_W, OUT_W>>(y_scale, y_zero);
88 adf::source(k[0]) =
"quantize_linear.cc";
89 adf::headers(k[0]) = {
"quantize_linear.h"};
90 adf::runtime<ratio>(k[0]) = 0.6;
92 adf::connect<adf::stream> (pin[0], k[0].in[0]);
93 adf::connect<adf::stream> (k[0].out[0], pout[0]);
95 adf::samples_per_iteration(k[0].in[0]) = INP_H*INP_W;
96 adf::samples_per_iteration(k[0].out[0]) = INP_H*OUT_W;
118 static constexpr int LCNT = INP_H/HCHUNK;
122 ConcatStreamGraph<ConcatInt8Stream, TT, LCNT, 1, HCHUNK*OUT_W, INP_H*OUT_W> concat_graph;
125 adf::port<input> pin[1];
126 adf::port<output> pout[1];
132 static_assert(INP_H % HCHUNK == 0);
134 adf::connect<adf::stream> (pin[0], split_graph.pin[0]);
136 for (
int i = 0; i < LCNT; i++) {
137 k[i] = adf::kernel::create_object<QUANTIZE_LINEAR<TT, HCHUNK, INP_W, OUT_W>>(y_scale, y_zero);
138 adf::source(k[i]) =
"quantize_linear.cc";
139 adf::headers(k[i]) = {
"quantize_linear.h"};
140 adf::runtime<ratio>(k[i]) = 0.6;
142 adf::connect<adf::stream> (split_graph.pout[i], k[i].in[0]);
143 adf::connect<adf::stream> (k[i].out[0], concat_graph.pin[i]);
145 adf::samples_per_iteration(k[i].in[0]) = HCHUNK*INP_W;
146 adf::samples_per_iteration(k[i].out[0]) = HCHUNK*OUT_W;
149 for (
int i = 0; i < LCNT; i++) {
151 adf::location<adf::kernel>(k[i]) = adf::location<adf::kernel>(k[i-1]) + adf::relative_offset({.col_offset=0, .row_offset=1});
153 adf::location<adf::kernel>(k[i]) = adf::location<adf::kernel>(k[i-1]) + adf::relative_offset({.col_offset=-1, .row_offset=2});
154 if (i == 2 || i == 6)
155 adf::location<adf::kernel>(k[i]) = adf::location<adf::kernel>(k[i-2]) + adf::relative_offset({.col_offset=1, .row_offset=0});
156 adf::location<adf::stack>(k[i]) = adf::location<adf::kernel>(k[i]);
159 for (
int i = 0; i < concat_graph.k1.size(); i++) {
160 adf::location_constraint cTilePos = adf::location<adf::kernel>(concat_graph.k1[i]);
161 adf::location<adf::stack>(concat_graph.k1[i]) = cTilePos;
164 adf::location<adf::kernel>(concat_graph.k1[i]) =
165 adf::location<adf::kernel>(k[i*2]) + adf::relative_offset({.col_offset=0, .row_offset=-1});
167 adf::location<adf::kernel>(concat_graph.k1[i]) =
168 adf::location<adf::kernel>(k[i*2+1]) + adf::relative_offset({.col_offset=0, .row_offset=1});
171 adf::location<adf::kernel>(split_graph.k[0]) = adf::location<adf::kernel>(k[1]) + adf::relative_offset({.col_offset=0, .row_offset=1});
172 adf::connect<adf::stream> (concat_graph.pout[0], pout[0]);