onnx2versal
Loading...
Searching...
No Matches
graph_qlinearadd.h
1#ifndef __QLINEARADD_GRAPH_H__
2#define __QLINEARADD_GRAPH_H__
3
4#include <adf.h>
5#include "qlinearadd.h"
6
7
35template <template<typename, int, int> class QLINEARADD,
36 typename TT, int W, int IS_RELU>
37class QLinearAddGraph : public adf::graph {
38
39 private:
40 static constexpr int TTSIZE = sizeof(TT);
41 adf::kernel k[1];
42 std::string id;
43
44 public:
45 adf::port<input> pin[2];
46 adf::port<output> pout[1];
47
49 float a_scale,
50 float b_scale,
51 float c_scale,
52 TT a_zero,
53 TT b_zero,
54 TT c_zero
55 ) {
56 k[0] = adf::kernel::create_object<QLINEARADD<TT, W, IS_RELU>>(
57 a_scale, b_scale, c_scale, a_zero, b_zero, c_zero);
58 adf::source(k[0]) = "qlinearadd.cc";
59 adf::headers(k[0]) = {"qlinearadd.h"};
60 adf::runtime<ratio>(k[0]) = 0.6;
61
62 adf::connect<adf::stream> (pin[0], k[0].in[0]);
63 adf::connect<adf::stream> (pin[1], k[0].in[1]);
64 adf::connect<adf::stream> (k[0].out[0], pout[0]);
65
66 adf::samples_per_iteration(k[0].in[0]) = W;
67 adf::samples_per_iteration(k[0].in[1]) = W;
68 adf::samples_per_iteration(k[0].out[0]) = W;
69 }
70
71};
75#endif // __QLINEARADD_GRAPH_H__
Single instance graph.
Definition graph_qlinearadd.h:37