9#include <framework/database/DBImportObjPtr.h>
10#include <trg/grl/dbobjects/TRGGRLConfig.h>
22 const int N_config = 1;
24 const int run[N_config][4] = {
29 std::vector<unsigned> ecltaunn_nOutput[N_config];
30 ecltaunn_nOutput[0].push_back(1);
32 std::vector<std::vector<float>> ecltaunn_threshold[N_config];
33 std::vector<float> ecltaunn_threshold_0 = {-1.5};
34 ecltaunn_threshold[0].push_back(ecltaunn_threshold_0);
36 unsigned ecltaunn_nMLP[N_config] = {
39 bool ecltaunn_multiplyHidden[N_config] = {
42 std::vector<std::vector<float>> ecltaunn_nHidden[N_config];
43 std::vector<float> eclaunn_nHidden_0 = {24, 24, 24};
44 ecltaunn_nHidden[0].push_back(eclaunn_nHidden_0);
45 unsigned ecltaunn_n_cdc_sector[N_config] = {
48 unsigned ecltaunn_n_ecl_sector[N_config] = {
51 std::vector<float> ecltaunn_i_cdc_sector[N_config];
52 ecltaunn_i_cdc_sector[0].push_back(0 * 35 * 3);
54 std::vector<float> ecltaunn_i_ecl_sector[N_config];
55 ecltaunn_i_ecl_sector[0].push_back(1 * 6 * 4);
57 char wfilename[N_config][10][1000] = {{{
58 "/group/belle/users/zhaoxy/hls1112/neuralGRL/hls4ml_Latency/firmware/weights/all_weights.txt"
62 std::vector<std::vector<float>> ecltaunn_weight[N_config];
63 for (
int i = 0; i < N_config; i++) {
64 for (
unsigned j = 0; j < ecltaunn_nMLP[i]; j++) {
65 std::ifstream wfile(wfilename[i][j]);
66 if (!wfile.is_open()) {
70 std::vector<float> ecltaunn_weight_temp;
71 while (wfile >> element) {
72 ecltaunn_weight_temp.push_back(element);
74 ecltaunn_weight[i].push_back(ecltaunn_weight_temp);
79 char bfilename[N_config][10][1000] = {{{
80 "/group/belle/users/zhaoxy/hls1112/neuralGRL/hls4ml_Latency/firmware/weights/all_bias.txt"
84 std::vector<std::vector<float>> ecltaunn_bias[N_config];
85 for (
int i = 0; i < N_config; i++) {
86 for (
unsigned j = 0; j < ecltaunn_nMLP[i]; j++) {
87 std::ifstream bfile(bfilename[i][j]);
88 if (!bfile.is_open()) {
92 std::vector<float> ecltaunn_bias_temp;
93 while (bfile >> element) {
94 ecltaunn_bias_temp.push_back(element);
96 ecltaunn_bias[i].push_back(ecltaunn_bias_temp);
101 std::vector<std::vector<int>> total_bit_bias[N_config] = {
104 std::vector<std::vector<int>> int_bit_bias[N_config] {
107 std::vector<std::vector<bool>> is_signed_bias[N_config] {
108 {{
true,
true,
true,
false }}
110 std::vector<std::vector<int>> rounding_bias[N_config] {
113 std::vector<std::vector<int>> saturation_bias[N_config] {
118 std::vector<std::vector<int>> total_bit_accum[N_config] {
121 std::vector<std::vector<int>> int_bit_accum[N_config] {
124 std::vector<std::vector<bool>> is_signed_accum[N_config] {
125 {{
true,
true,
true,
true }}
127 std::vector<std::vector<int>> rounding_accum[N_config] {
130 std::vector<std::vector<int>> saturation_accum[N_config] {
134 std::vector<std::vector<int>> total_bit_weight[N_config] = {
138 std::vector<std::vector<int>> int_bit_weight[N_config] = {
142 std::vector<std::vector<bool>> is_signed_weight[N_config] = {
143 {{
true,
true,
true,
true }}
146 std::vector<std::vector<int>> rounding_weight[N_config] = {
150 std::vector<std::vector<int>> saturation_weight[N_config] = {
155 std::vector<std::vector<int>> total_bit_relu[N_config] = {
159 std::vector<std::vector<int>> int_bit_relu[N_config] = {
163 std::vector<std::vector<bool>> is_signed_relu[N_config] = {
164 {{
false,
false,
false }}
167 std::vector<std::vector<int>> rounding_relu[N_config] = {
171 std::vector<std::vector<int>> saturation_relu[N_config] = {
176 std::vector<std::vector<int>> total_bit[N_config] {
179 std::vector<std::vector<int>> int_bit[N_config] {
182 std::vector<std::vector<bool>> is_signed[N_config] {
185 std::vector<std::vector<int>> rounding[N_config] {
188 std::vector<std::vector<int>> saturation[N_config] {
193 std::vector<std::vector<std::vector<int>>> W_input[N_config] {
196 { 9, 10, 9, 8, 12, 11, 9, 7, 8, 9, 9, 9, 11, 9, 11, 13, 11, 12, 11, 12, 12, 11, 13, 10 }
198 { 6, 0, 9, 10, 9, 7, 9, 10, 9, 9, 0, 9, 7, 12, 8, 9, 9, 8, 0, 10, 7, 8, 8, 11 }
200 { 11, 8, 0, 8, 11, 12, 11, 11, 12, 9, 12, 11, 10, 10, 12, 12, 0, 12, 12, 9, 12, 10, 8, 11 }
205 std::vector<std::vector<std::vector<int>>> I_input[N_config] {
208 { 7, 9, 7, 7, 8, 8, 7, 6, 6, 7, 8, 8, 9, 7, 8, 9, 10, 10, 9, 9, 9, 9, 10, 8 }
210 { 5, 0, 7, 7, 6, 6, 7, 8, 7, 6, 0, 6, 6, 9, 6, 6, 6, 6, 0, 7, 6, 6, 5, 6 }
212 { 6, 7, 0, 5, 7, 7, 7, 6, 7, 6, 7, 6, 6, 4, 7, 7, 0, 7, 8, 6, 8, 6, 6, 6 }
222 for (
int i = 0; i < N_config; i++) {
224 db_grlconfig->set_ecltaunn_threshold(ecltaunn_threshold[i]);
225 db_grlconfig->set_ecltaunn_nMLP(ecltaunn_nMLP[i]);
226 db_grlconfig->set_ecltaunn_multiplyHidden(ecltaunn_multiplyHidden[i]);
227 db_grlconfig->set_ecltaunn_nHidden(ecltaunn_nHidden[i]);
228 db_grlconfig->set_ecltaunn_nOutput(ecltaunn_nOutput[i]);
229 db_grlconfig->set_ecltaunn_n_cdc_sector(ecltaunn_n_cdc_sector[i]);
230 db_grlconfig->set_ecltaunn_n_ecl_sector(ecltaunn_n_ecl_sector[i]);
231 db_grlconfig->set_ecltaunn_i_cdc_sector(ecltaunn_i_cdc_sector[i]);
232 db_grlconfig->set_ecltaunn_i_ecl_sector(ecltaunn_i_ecl_sector[i]);
233 db_grlconfig->set_ecltaunn_weight(ecltaunn_weight[i]);
234 db_grlconfig->set_ecltaunn_bias(ecltaunn_bias[i]);
235 db_grlconfig->set_ecltaunn_total_bit_bias(total_bit_bias[i]);
236 db_grlconfig->set_ecltaunn_int_bit_bias(int_bit_bias[i]);
237 db_grlconfig->set_ecltaunn_is_signed_bias(is_signed_bias[i]);
238 db_grlconfig->set_ecltaunn_rounding_bias(rounding_bias[i]);
239 db_grlconfig->set_ecltaunn_saturation_bias(saturation_bias[i]);
240 db_grlconfig->set_ecltaunn_total_bit_accum(total_bit_accum[i]);
241 db_grlconfig->set_ecltaunn_int_bit_accum(int_bit_accum[i]);
242 db_grlconfig->set_ecltaunn_is_signed_accum(is_signed_accum[i]);
243 db_grlconfig->set_ecltaunn_rounding_accum(rounding_accum[i]);
244 db_grlconfig->set_ecltaunn_saturation_accum(saturation_accum[i]);
245 db_grlconfig->set_ecltaunn_total_bit_weight(total_bit_weight[i]);
246 db_grlconfig->set_ecltaunn_int_bit_weight(int_bit_weight[i]);
247 db_grlconfig->set_ecltaunn_is_signed_weight(is_signed_weight[i]);
248 db_grlconfig->set_ecltaunn_rounding_weight(rounding_weight[i]);
249 db_grlconfig->set_ecltaunn_saturation_weight(saturation_weight[i]);
250 db_grlconfig->set_ecltaunn_total_bit_relu(total_bit_relu[i]);
251 db_grlconfig->set_ecltaunn_int_bit_relu(int_bit_relu[i]);
252 db_grlconfig->set_ecltaunn_is_signed_relu(is_signed_relu[i]);
253 db_grlconfig->set_ecltaunn_rounding_relu(rounding_relu[i]);
254 db_grlconfig->set_ecltaunn_saturation_relu(saturation_relu[i]);
255 db_grlconfig->set_ecltaunn_total_bit(total_bit[i]);
256 db_grlconfig->set_ecltaunn_int_bit(int_bit[i]);
257 db_grlconfig->set_ecltaunn_is_signed(is_signed[i]);
258 db_grlconfig->set_ecltaunn_rounding(rounding[i]);
259 db_grlconfig->set_ecltaunn_saturation(saturation[i]);
260 db_grlconfig->set_ecltaunn_W_input(W_input[i]);
261 db_grlconfig->set_ecltaunn_I_input(I_input[i]);
265 }
else if (ONLINE == 1) {
266 for (
int i = N_config - 1; i < N_config; i++) {
268 db_grlconfig->set_ecltaunn_threshold(ecltaunn_threshold[i]);
269 db_grlconfig->set_ecltaunn_nMLP(ecltaunn_nMLP[i]);
270 db_grlconfig->set_ecltaunn_multiplyHidden(ecltaunn_multiplyHidden[i]);
271 db_grlconfig->set_ecltaunn_nHidden(ecltaunn_nHidden[i]);
272 db_grlconfig->set_ecltaunn_nOutput(ecltaunn_nOutput[i]);
273 db_grlconfig->set_ecltaunn_n_cdc_sector(ecltaunn_n_cdc_sector[i]);
274 db_grlconfig->set_ecltaunn_n_ecl_sector(ecltaunn_n_ecl_sector[i]);
275 db_grlconfig->set_ecltaunn_i_cdc_sector(ecltaunn_i_cdc_sector[i]);
276 db_grlconfig->set_ecltaunn_i_ecl_sector(ecltaunn_i_ecl_sector[i]);
277 db_grlconfig->set_ecltaunn_weight(ecltaunn_weight[i]);
278 db_grlconfig->set_ecltaunn_bias(ecltaunn_bias[i]);
279 db_grlconfig->set_ecltaunn_total_bit_bias(total_bit_bias[i]);
280 db_grlconfig->set_ecltaunn_int_bit_bias(int_bit_bias[i]);
281 db_grlconfig->set_ecltaunn_is_signed_bias(is_signed_bias[i]);
282 db_grlconfig->set_ecltaunn_rounding_bias(rounding_bias[i]);
283 db_grlconfig->set_ecltaunn_saturation_bias(saturation_bias[i]);
284 db_grlconfig->set_ecltaunn_total_bit_accum(total_bit_accum[i]);
285 db_grlconfig->set_ecltaunn_int_bit_accum(int_bit_accum[i]);
286 db_grlconfig->set_ecltaunn_is_signed_accum(is_signed_accum[i]);
287 db_grlconfig->set_ecltaunn_rounding_accum(rounding_accum[i]);
288 db_grlconfig->set_ecltaunn_saturation_accum(saturation_accum[i]);
289 db_grlconfig->set_ecltaunn_total_bit_weight(total_bit_weight[i]);
290 db_grlconfig->set_ecltaunn_int_bit_weight(int_bit_weight[i]);
291 db_grlconfig->set_ecltaunn_is_signed_weight(is_signed_weight[i]);
292 db_grlconfig->set_ecltaunn_rounding_weight(rounding_weight[i]);
293 db_grlconfig->set_ecltaunn_saturation_weight(saturation_weight[i]);
294 db_grlconfig->set_ecltaunn_total_bit_relu(total_bit_relu[i]);
295 db_grlconfig->set_ecltaunn_int_bit_relu(int_bit_relu[i]);
296 db_grlconfig->set_ecltaunn_is_signed_relu(is_signed_relu[i]);
297 db_grlconfig->set_ecltaunn_rounding_relu(rounding_relu[i]);
298 db_grlconfig->set_ecltaunn_saturation_relu(saturation_relu[i]);
299 db_grlconfig->set_ecltaunn_total_bit(total_bit[i]);
300 db_grlconfig->set_ecltaunn_int_bit(int_bit[i]);
301 db_grlconfig->set_ecltaunn_is_signed(is_signed[i]);
302 db_grlconfig->set_ecltaunn_rounding(rounding[i]);
303 db_grlconfig->set_ecltaunn_saturation(saturation[i]);
304 db_grlconfig->set_ecltaunn_W_input(W_input[i]);
305 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.