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_0Kotekan buffer feeding data from GPU0.Format: Array of
floatsMetadata:
chimeMetadata
network_input_buffer_1Kotekan buffer feeding data from GPU1.Format: Array of
floatsMetadata:
chimeMetadata
network_input_buffer_2Kotekan buffer feeding data from GPU2.Format: Array of
floatsMetadata:
chimeMetadata
network_input_buffer_3Kotekan buffer feeding data from GPU3.Format: Array of
floatsMetadata:
chimeMetadata
pulsar_out_bufKotekan buffer that will be populated with packetized data.Format: Array of
uintMetadata:
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.