pulsarPostProcess

class pulsarPostProcess : public kotekan::Stage

Post-processing engine for output of the CHIME/Pulsar kernel, makes packets with either 625 or 3125 time samples.

This engine gathers CHIME/Pulsar data from the 4 GPU streams in each CHIME node, which are stored in the output buffer. There are two accepted configurations: — packet with 625 time samples: each packet consists of 4 freq, 2 pol, and one beam (4f-625t-2p-1b), where freq is the fastest varying index. All 4 freq are assumed to be observing the same 10 pulsars. — packet with 3125 time samples: each packet consists of 1 freq, 2 pol, and one beam (1f-3125t-2p-1b), where freq is the fastest varying index. A padding of 6-B is required, making the 3125-format not strictly VDIF, hence undesirable. In both cases, the header contains 32-B. Prior to packing, the real and imag part of the (float) input values are scaled and offset to 4-bit unsigned ints (i.e., 0-15) independently. The scaling factor is an static input value provided by the scheduler, and can be different on a per beam basis.

Buffers

  • network_input_buffer_0 Kotekan buffer feeding data from GPU0.

    • Format: Array of floats

    • Metadata: chimeMetadata

  • network_input_buffer_1 Kotekan buffer feeding data from GPU1.

    • Format: Array of floats

    • Metadata: chimeMetadata

  • network_input_buffer_2 Kotekan buffer feeding data from GPU2.

    • Format: Array of floats

    • Metadata: chimeMetadata

  • network_input_buffer_3 Kotekan buffer feeding data from GPU3.

    • Format: Array of floats

    • Metadata: chimeMetadata

  • pulsar_out_buf Kotekan buffer that will be populated with packetized data.

    • Format: Array of uint

    • Metadata: chimeMetadata

Author

Cherry Ng

Param num_gpus:

Int. No. of GPUs.

Param samples_per_data_set:

Int. No. of baseband samples corresponding to each buffer.

Param num_pulsar:

Int. No. of total pulsar beams (should be 10).

Param num_pol:

Int. No. of polarization (should be 2).

Param timesamples_per_pulsar_packet:

Int. Number of times that will go into each packet. (should be 3125 or 625)

Public Functions

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

Constructor.

virtual ~pulsarPostProcess()

Destructor.

virtual void main_thread() override

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