From 92bc53ef9bd3b5a3ca91647da9b0d9cf7638f0b2 Mon Sep 17 00:00:00 2001 From: lhdamiani Date: Tue, 13 Jul 2021 14:59:43 +0200 Subject: [PATCH 1/2] writer stats only when image counter is not zero --- jf-assembler/src/EigerAssembler.cpp | 63 ++++++++++------------------- jf-assembler/src/main.cpp | 7 ---- std-det-writer/src/WriterStats.cpp | 4 +- 3 files changed, 24 insertions(+), 50 deletions(-) diff --git a/jf-assembler/src/EigerAssembler.cpp b/jf-assembler/src/EigerAssembler.cpp index 638089b..f42e685 100644 --- a/jf-assembler/src/EigerAssembler.cpp +++ b/jf-assembler/src/EigerAssembler.cpp @@ -70,21 +70,18 @@ void EigerAssembler::assemble_image(const char* src_meta, image_meta->encoding = 0; image_meta->source_id = 0; is_pulse_init = 1; + #ifdef DEBUG_OUTPUT + using namespace date; + cout << " [" << std::chrono::system_clock::now(); + cout << "] [EigerAssembler::assemble_image] is_pulse_init "; + cout << " || Image id: " << image_meta->id; + cout << endl; + #endif } // missing packets: bad status = 1 if (frame_meta->n_recv_packets != n_packets_per_frame_){ image_meta->status = 1; - #ifdef DEBUG_OUTPUT - using namespace date; - cout << " [" << std::chrono::system_clock::now(); - cout << "] [EigerAssembler::assemble_image] bad frame :"; - cout << "frame_meta->frame_index != n_packets_per_frame_ "; - cout << "|| i_module: " << i_module; - cout << "|| frame_meta->n_recv_packets " << frame_meta->n_recv_packets; - cout << "|| n_packets_per_frame_" << n_packets_per_frame_; - cout << endl; - #endif } // frame id false: bad status = 2 @@ -118,20 +115,6 @@ void EigerAssembler::assemble_image(const char* src_meta, dest_offset += n_bytes_per_module_line_ + n_bytes_per_x_gap_; } - #ifdef DEBUG_OUTPUT - using namespace date; - // if (i_module == 0){ - cout << " [" << std::chrono::system_clock::now(); - cout << "] [MODULE " << i_module; - cout << "] (row " << i_module_row; - cout << " , column" << i_module_column; - cout << ") || reverse_factor" << reverse_factor; - cout << " || line_number" << line_number; - cout << " || N_RECV_PACKETS" << frame_meta->n_recv_packets; - cout << endl; - // } - #endif - int counter = 0; for (uint32_t frame_line = 0; @@ -142,29 +125,25 @@ void EigerAssembler::assemble_image(const char* src_meta, (char*)(src_data + source_offset), n_bytes_per_module_line_ ); - - #ifdef DEBUG_OUTPUT - using namespace date; - // verifies the addresses for - // beginning and end of each frame - if (counter < 5 || counter > 508){ - cout << " [" << std::chrono::system_clock::now(); - cout << "] [MODULE " << i_module; - cout << "] (row " << i_module_row; - cout << ",column " << i_module_column; - cout << ") source_offset" << source_offset; - cout << " || dest_offset " << dest_offset; - cout << " || frame_line " << frame_line; - cout << " || COUNTER " << counter; - cout << endl; - } - #endif + counter += 1; source_offset += reverse * n_bytes_per_module_line_; dest_offset += reverse * n_bytes_per_image_line_; } line_number += n_lines_per_frame_; dest_module_line = line_number + n_lines_per_frame_ - 1; - last_image_status_ = image_meta->status; + + // last module sets the last_image_status_ + if (i_module == n_modules_ - 1){ + last_image_status_ = image_meta->status; + #ifdef DEBUG_OUTPUT + using namespace date; + cout << " [" << std::chrono::system_clock::now(); + cout << "] [EigerAssembler::assemble_image] "; + cout << " || Image id: " << image_meta->id; + cout << " || last_image_status_ " << last_image_status_; + cout << endl; + #endif + } } } diff --git a/jf-assembler/src/main.cpp b/jf-assembler/src/main.cpp index 8af16bd..2d646f5 100644 --- a/jf-assembler/src/main.cpp +++ b/jf-assembler/src/main.cpp @@ -95,13 +95,6 @@ int main (int argc, char *argv[]) // receives the synced image id zmq_recv(receiver_sync, &image_id, sizeof(image_id), 0); - #ifdef DEBUG_OUTPUT - using namespace date; - cout << " [" << std::chrono::system_clock::now(); - cout << "] [ASSEMBLER::receiver_sync] image_id: "; - cout << image_id; - cout << endl; - #endif // metadata auto* src_meta = frame_buffer.get_slot_meta(image_id); auto* src_data = frame_buffer.get_slot_data(image_id); diff --git a/std-det-writer/src/WriterStats.cpp b/std-det-writer/src/WriterStats.cpp index 83ce848..41439b5 100644 --- a/std-det-writer/src/WriterStats.cpp +++ b/std-det-writer/src/WriterStats.cpp @@ -39,7 +39,9 @@ void WriterStats::end_image_write() void WriterStats::end_run() { - print_stats(); + if (image_counter_ > 0){ + print_stats(); + } reset_counters(); } From bfce762ff3517fbb628aa36d5fc2ebf3d6a7e6d0 Mon Sep 17 00:00:00 2001 From: lhdamiani Date: Tue, 13 Jul 2021 15:11:06 +0200 Subject: [PATCH 2/2] floating error fix when no images arrived --- std-det-writer/src/WriterStats.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/std-det-writer/src/WriterStats.cpp b/std-det-writer/src/WriterStats.cpp index 41439b5..e5b03e0 100644 --- a/std-det-writer/src/WriterStats.cpp +++ b/std-det-writer/src/WriterStats.cpp @@ -39,24 +39,25 @@ void WriterStats::end_image_write() void WriterStats::end_run() { - if (image_counter_ > 0){ - print_stats(); - } + print_stats(); reset_counters(); } void WriterStats::print_stats() { - const float avg_buffer_write_us = total_buffer_write_us_ / image_counter_; - - const uint64_t timestamp = time_point_cast( - system_clock::now()).time_since_epoch().count(); - - const uint64_t avg_throughput = + float avg_buffer_write_us = 0; + uint64_t avg_throughput = 0; + if (image_counter_ > 0) { + avg_buffer_write_us = total_buffer_write_us_ / image_counter_; + avg_throughput = // bytes -> megabytes (image_n_bytes_ / 1024 / 1024) / // micro seconds -> seconds (avg_buffer_write_us * 1000 * 1000); + } + + const uint64_t timestamp = time_point_cast( + system_clock::now()).time_since_epoch().count(); // Output in InfluxDB line protocol cout << "jf_buffer_writer";