HFBAccumulate

class HFBAccumulate : public kotekan::Stage

Post-processing engine for output of the CHIME/HFB kernel, integrates data over 80 frames to create 10s worth of data. num_beams * num_sub_freq = 1024 * 128.

This engine sums CHIME/HFB data from 1 GPU stream in each CHIME node, which are stored in the output buffer. Note: _num_frames_to_integrate cannot go below 16 frames as _num_frames_to_integrate cannot be lower than the max_frames_missing

This stage will also calculate the within sample variance for weights.

The output of this stage is written to a raw file where each chunk is the metadata followed by the frame and indexed by frequency ID. This raw file is then transposed and compressed into a structured HDF5 format by gossec.

Buffers

  • hfb_input_buffer Kotekan buffer feeding data from any GPU.

    • Format: Array of floats

  • cls_buffer Kotekan buffer that contains the compressed lost samples.

    • Format: Array of uint32_t

  • hfb_out_buf Kotekan buffer that will be populated with integrated data.

    • Format: Array of floats

Author

James Willis

Param num_frames_to_integrate:

Int. No. of frames to integrate over.

Param num_frb_total_beams:

Int. No. of total FRB beams (should be 1024).

Param factor_upchan:

Int. Upchannelise factor (should be 128).

Param samples_per_data_set:

Int. The number of samples each GPU buffer has been integrated for.

Param good_samples_threshold:

Float. Required fraction of good samples in integration before it is recorded.

Public Functions

HFBAccumulate(kotekan::Config &config_, const std::string &unique_name, kotekan::bufferContainer &buffer_container)

Constructor.

virtual ~HFBAccumulate()

Destructor.

virtual void main_thread() override

Primary loop to wait for buffers, dig through data, stuff packets lather, rinse and repeat.