Stelline

FBH5 Reader

Source that reads the `/data` dataset from an FBH5 file.

The FBH5 reader is the source of an offline beamformed-data post-processing pipeline. It reads beamformed and detected (either Stokes I or {XX, XY, YX, YY}) spectra from an FBH5 file, the HDF5 flavor of the SIGPROC filterbank format used by blimpy and the Breakthrough Listen toolchain. When CUDA is set as the device, reads come via the GPUDirect Storage HDF5 driver, so spectra travel to GPU memory from NVMe without a host bounce.

How it works

The block is idle until playing is enabled. At that point it starts iterating through the /data in chunks of batchSize, producing tensors with shape {T=batchSize, P=NIFs, F=NFreqs} where the last 2 dimensions reflect the data shape within the file. The batchSize must be an integer factor of the T dimension in the data. The same chunking happens for the /mask dataset that accompanies the data. With the block's device set as CUDA all of this happens via GPUDirect Storage driver. Each compute cycle then steps through the data until it reaches the end at which point it will loop back to the beginning. If loop is enabled playing will be left enabled and the dataset will repeat, otherwise playing will be disabled.

The observational header fields (source name, coordinates, channel frequencies etc) are pushed to the flowgraph environment under the observatory key.

Configuration

Parameter Type Default Description
filepath string ./file.fbh5 Path of the input file.
batchSize int 1 The step-size for the Time dimension of the incremental read.
playing boolean false Master switch for reading.
loop boolean false Loop back to the start after reaching the end of the file.

Output

Name Description
signal Contiguous `{F32
mask Contiguous U8 boolean tensor shaped [time, polarisation-product, channels] read from the file that flags data in the signal tensor.

The time dimension is set by the batchSize configuration value, everything else is determined by the contents of the file being read.

Metrics

The node reports the current position of the read within the file and the current read bandwidth in MB/s.

Telemetry

The metrics below are reported to Nexus.

Metric Description
progress Current file position as a percentage.
currentBandwidth Read bandwidth in megabytes per second.

Requirements

If using the CUDA device, the GPUDirect Storage stack must be installed. See host dependencies for the setup.