9#include <framework/database/DBImportObjPtr.h>
10#include <trg/grl/dbobjects/TRGGRLConfig.h>
21 const int N_config = 1;
23 const int run[N_config][4] = {
27 float ecltaunn_threshold[N_config] = {
30 unsigned ecltaunn_nMLP[N_config] = {
33 bool ecltaunn_multiplyHidden[N_config] = {
36 std::vector<std::vector<float>> ecltaunn_nHidden[N_config];
37 std::vector<float> eclaunn_nHidden_0 = {24, 24, 24};
38 ecltaunn_nHidden[0].push_back(eclaunn_nHidden_0);
39 unsigned ecltaunn_n_cdc_sector[N_config] = {
42 unsigned ecltaunn_n_ecl_sector[N_config] = {
45 std::vector<float> ecltaunn_i_cdc_sector[N_config];
46 ecltaunn_i_cdc_sector[0].push_back(0 * 35 * 3);
48 std::vector<float> ecltaunn_i_ecl_sector[N_config];
49 ecltaunn_i_ecl_sector[0].push_back(1 * 6 * 4);
51 char wfilename[N_config][10][1000] = {{{
52 "/group/belle/users/zhaoxy/hls1112/neuralGRL/hls4ml_Latency/firmware/weights/all_weights.txt"
56 std::vector<std::vector<float>> ecltaunn_weight[N_config];
57 for (
int i = 0; i < N_config; i++) {
58 for (
unsigned j = 0; j < ecltaunn_nMLP[i]; j++) {
59 std::ifstream wfile(wfilename[i][j]);
60 if (!wfile.is_open()) {
64 std::vector<float> ecltaunn_weight_temp;
65 while (wfile >> element) {
66 ecltaunn_weight_temp.push_back(element);
68 ecltaunn_weight[i].push_back(ecltaunn_weight_temp);
73 char bfilename[N_config][10][1000] = {{{
74 "/group/belle/users/zhaoxy/hls1112/neuralGRL/hls4ml_Latency/firmware/weights/all_bias.txt"
78 std::vector<std::vector<float>> ecltaunn_bias[N_config];
79 for (
int i = 0; i < N_config; i++) {
80 for (
unsigned j = 0; j < ecltaunn_nMLP[i]; j++) {
81 std::ifstream bfile(bfilename[i][j]);
82 if (!bfile.is_open()) {
86 std::vector<float> ecltaunn_bias_temp;
87 while (bfile >> element) {
88 ecltaunn_bias_temp.push_back(element);
90 ecltaunn_bias[i].push_back(ecltaunn_bias_temp);
95 std::vector<std::vector<int>> total_bit_bias[N_config] = {
98 std::vector<std::vector<int>> int_bit_bias[N_config] {
101 std::vector<std::vector<bool>> is_signed_bias[N_config] {
102 {{
true,
true,
true,
false }}
104 std::vector<std::vector<int>> rounding_bias[N_config] {
107 std::vector<std::vector<int>> saturation_bias[N_config] {
112 std::vector<std::vector<int>> total_bit_accum[N_config] {
115 std::vector<std::vector<int>> int_bit_accum[N_config] {
118 std::vector<std::vector<bool>> is_signed_accum[N_config] {
119 {{
true,
true,
true,
true }}
121 std::vector<std::vector<int>> rounding_accum[N_config] {
124 std::vector<std::vector<int>> saturation_accum[N_config] {
128 std::vector<std::vector<int>> total_bit_weight[N_config] = {
132 std::vector<std::vector<int>> int_bit_weight[N_config] = {
136 std::vector<std::vector<bool>> is_signed_weight[N_config] = {
137 {{
true,
true,
true,
true }}
140 std::vector<std::vector<int>> rounding_weight[N_config] = {
144 std::vector<std::vector<int>> saturation_weight[N_config] = {
149 std::vector<std::vector<int>> total_bit_relu[N_config] = {
153 std::vector<std::vector<int>> int_bit_relu[N_config] = {
157 std::vector<std::vector<bool>> is_signed_relu[N_config] = {
158 {{
false,
false,
false }}
161 std::vector<std::vector<int>> rounding_relu[N_config] = {
165 std::vector<std::vector<int>> saturation_relu[N_config] = {
170 std::vector<std::vector<int>> total_bit[N_config] {
173 std::vector<std::vector<int>> int_bit[N_config] {
176 std::vector<std::vector<bool>> is_signed[N_config] {
179 std::vector<std::vector<int>> rounding[N_config] {
182 std::vector<std::vector<int>> saturation[N_config] {
187 std::vector<std::vector<std::vector<int>>> W_input[N_config] {
190 { 9, 10, 9, 8, 12, 11, 9, 7, 8, 9, 9, 9, 11, 9, 11, 13, 11, 12, 11, 12, 12, 11, 13, 10 }
192 { 6, 0, 9, 10, 9, 7, 9, 10, 9, 9, 0, 9, 7, 12, 8, 9, 9, 8, 0, 10, 7, 8, 8, 11 }
194 { 11, 8, 0, 8, 11, 12, 11, 11, 12, 9, 12, 11, 10, 10, 12, 12, 0, 12, 12, 9, 12, 10, 8, 11 }
199 std::vector<std::vector<std::vector<int>>> I_input[N_config] {
202 { 7, 9, 7, 7, 8, 8, 7, 6, 6, 7, 8, 8, 9, 7, 8, 9, 10, 10, 9, 9, 9, 9, 10, 8 }
204 { 5, 0, 7, 7, 6, 6, 7, 8, 7, 6, 0, 6, 6, 9, 6, 6, 6, 6, 0, 7, 6, 6, 5, 6 }
206 { 6, 7, 0, 5, 7, 7, 7, 6, 7, 6, 7, 6, 6, 4, 7, 7, 0, 7, 8, 6, 8, 6, 6, 6 }
216 for (
int i = 0; i < N_config; i++) {
218 db_grlconfig->set_ecltaunn_threshold(ecltaunn_threshold[i]);
219 db_grlconfig->set_ecltaunn_nMLP(ecltaunn_nMLP[i]);
220 db_grlconfig->set_ecltaunn_multiplyHidden(ecltaunn_multiplyHidden[i]);
221 db_grlconfig->set_ecltaunn_nHidden(ecltaunn_nHidden[i]);
222 db_grlconfig->set_ecltaunn_n_cdc_sector(ecltaunn_n_cdc_sector[i]);
223 db_grlconfig->set_ecltaunn_n_ecl_sector(ecltaunn_n_ecl_sector[i]);
224 db_grlconfig->set_ecltaunn_i_cdc_sector(ecltaunn_i_cdc_sector[i]);
225 db_grlconfig->set_ecltaunn_i_ecl_sector(ecltaunn_i_ecl_sector[i]);
226 db_grlconfig->set_ecltaunn_weight(ecltaunn_weight[i]);
227 db_grlconfig->set_ecltaunn_bias(ecltaunn_bias[i]);
228 db_grlconfig->set_ecltaunn_total_bit_bias(total_bit_bias[i]);
229 db_grlconfig->set_ecltaunn_int_bit_bias(int_bit_bias[i]);
230 db_grlconfig->set_ecltaunn_is_signed_bias(is_signed_bias[i]);
231 db_grlconfig->set_ecltaunn_rounding_bias(rounding_bias[i]);
232 db_grlconfig->set_ecltaunn_saturation_bias(saturation_bias[i]);
233 db_grlconfig->set_ecltaunn_total_bit_accum(total_bit_accum[i]);
234 db_grlconfig->set_ecltaunn_int_bit_accum(int_bit_accum[i]);
235 db_grlconfig->set_ecltaunn_is_signed_accum(is_signed_accum[i]);
236 db_grlconfig->set_ecltaunn_rounding_accum(rounding_accum[i]);
237 db_grlconfig->set_ecltaunn_saturation_accum(saturation_accum[i]);
238 db_grlconfig->set_ecltaunn_total_bit_weight(total_bit_weight[i]);
239 db_grlconfig->set_ecltaunn_int_bit_weight(int_bit_weight[i]);
240 db_grlconfig->set_ecltaunn_is_signed_weight(is_signed_weight[i]);
241 db_grlconfig->set_ecltaunn_rounding_weight(rounding_weight[i]);
242 db_grlconfig->set_ecltaunn_saturation_weight(saturation_weight[i]);
243 db_grlconfig->set_ecltaunn_total_bit_relu(total_bit_relu[i]);
244 db_grlconfig->set_ecltaunn_int_bit_relu(int_bit_relu[i]);
245 db_grlconfig->set_ecltaunn_is_signed_relu(is_signed_relu[i]);
246 db_grlconfig->set_ecltaunn_rounding_relu(rounding_relu[i]);
247 db_grlconfig->set_ecltaunn_saturation_relu(saturation_relu[i]);
248 db_grlconfig->set_ecltaunn_total_bit(total_bit[i]);
249 db_grlconfig->set_ecltaunn_int_bit(int_bit[i]);
250 db_grlconfig->set_ecltaunn_is_signed(is_signed[i]);
251 db_grlconfig->set_ecltaunn_rounding(rounding[i]);
252 db_grlconfig->set_ecltaunn_saturation(saturation[i]);
253 db_grlconfig->set_ecltaunn_W_input(W_input[i]);
254 db_grlconfig->set_ecltaunn_I_input(I_input[i]);
258 }
else if (ONLINE == 1) {
259 for (
int i = N_config - 1; i < N_config; i++) {
261 db_grlconfig->set_ecltaunn_threshold(ecltaunn_threshold[i]);
262 db_grlconfig->set_ecltaunn_nMLP(ecltaunn_nMLP[i]);
263 db_grlconfig->set_ecltaunn_multiplyHidden(ecltaunn_multiplyHidden[i]);
264 db_grlconfig->set_ecltaunn_nHidden(ecltaunn_nHidden[i]);
265 db_grlconfig->set_ecltaunn_n_cdc_sector(ecltaunn_n_cdc_sector[i]);
266 db_grlconfig->set_ecltaunn_n_ecl_sector(ecltaunn_n_ecl_sector[i]);
267 db_grlconfig->set_ecltaunn_i_cdc_sector(ecltaunn_i_cdc_sector[i]);
268 db_grlconfig->set_ecltaunn_i_ecl_sector(ecltaunn_i_ecl_sector[i]);
269 db_grlconfig->set_ecltaunn_weight(ecltaunn_weight[i]);
270 db_grlconfig->set_ecltaunn_bias(ecltaunn_bias[i]);
271 db_grlconfig->set_ecltaunn_total_bit_bias(total_bit_bias[i]);
272 db_grlconfig->set_ecltaunn_int_bit_bias(int_bit_bias[i]);
273 db_grlconfig->set_ecltaunn_is_signed_bias(is_signed_bias[i]);
274 db_grlconfig->set_ecltaunn_rounding_bias(rounding_bias[i]);
275 db_grlconfig->set_ecltaunn_saturation_bias(saturation_bias[i]);
276 db_grlconfig->set_ecltaunn_total_bit_accum(total_bit_accum[i]);
277 db_grlconfig->set_ecltaunn_int_bit_accum(int_bit_accum[i]);
278 db_grlconfig->set_ecltaunn_is_signed_accum(is_signed_accum[i]);
279 db_grlconfig->set_ecltaunn_rounding_accum(rounding_accum[i]);
280 db_grlconfig->set_ecltaunn_saturation_accum(saturation_accum[i]);
281 db_grlconfig->set_ecltaunn_total_bit_weight(total_bit_weight[i]);
282 db_grlconfig->set_ecltaunn_int_bit_weight(int_bit_weight[i]);
283 db_grlconfig->set_ecltaunn_is_signed_weight(is_signed_weight[i]);
284 db_grlconfig->set_ecltaunn_rounding_weight(rounding_weight[i]);
285 db_grlconfig->set_ecltaunn_saturation_weight(saturation_weight[i]);
286 db_grlconfig->set_ecltaunn_total_bit_relu(total_bit_relu[i]);
287 db_grlconfig->set_ecltaunn_int_bit_relu(int_bit_relu[i]);
288 db_grlconfig->set_ecltaunn_is_signed_relu(is_signed_relu[i]);
289 db_grlconfig->set_ecltaunn_rounding_relu(rounding_relu[i]);
290 db_grlconfig->set_ecltaunn_saturation_relu(saturation_relu[i]);
291 db_grlconfig->set_ecltaunn_total_bit(total_bit[i]);
292 db_grlconfig->set_ecltaunn_int_bit(int_bit[i]);
293 db_grlconfig->set_ecltaunn_is_signed(is_signed[i]);
294 db_grlconfig->set_ecltaunn_rounding(rounding[i]);
295 db_grlconfig->set_ecltaunn_saturation(saturation[i]);
296 db_grlconfig->set_ecltaunn_W_input(W_input[i]);
297 db_grlconfig->set_ecltaunn_I_input(I_input[i]);
bool import(const IntervalOfValidity &iov)
Import the object to database.
Class for importing a single object to the database.
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
A class that describes the interval of experiments/runs for which an object in the database is valid.
Abstract base class for different kinds of events.