luppi_daq_dedisp_GPU1
is the main executable component of LUPPI (Low-frequency Ultimate Pulsar Processing Instrument). It is specifically designed for handling UDP waveform packets from the NenuFAR instrument, which are formatted in the LOFAR style. The core functionality of luppi_daq_dedisp_GPU1
includes loading these packets into a circular buffer, processing them through a GPU for fast Fourier transforms (FFT), and applying coherent dedispersion and Faraday rotation corrections. After inverse FFT (iFFT) to return to the time domain, the data is folded at the pulsar's period (with an option to downsample instead of fold) and written to disk in the PSRFITS format. Additionally, luppi_daq_dedisp_GPU1
prepares scripts for uploading observation files to the databf storage server.
Before installing luppi_daq_dedisp_GPU1
, ensure you have CUDA libraries and tools for PSRFITS format handling.
- Clone the repository (provide the repository link).
- In the Makefile, specify the location of Presto libraries.
- Adjust the CUDA architecture flags (
arch=compute_xx,code=sm_xx
) in the Makefile to match your GPU. For instance, for NVIDIA Pascal architecture, usearch=compute_61,code=sm_61
. - Compile the source with a C compiler, ensuring dependency paths are correctly set.
- Install the executable in your desired directory.
Execute luppi_daq_dedisp_GPU1
with the following command:
./luppi_daq_dedisp_GPU1 [options]
-h, --help
: Show help message.-n, --null
: No disk output.-D, --ds
: Downsample instead of fold.-g, --gpu <GPUid>
: GPU ID (default 0).-j, --databfdirname <dirname>
: Subdirectory on databf (optional).
./luppi_daq_dedisp_GPU1 --gpu 1 --databfdirname pulsar_data
-
Network Thread (
net_thread
): Handles incoming UDP packets, loading data into the circular buffer. -
Dedispersion Thread (
dedisp_thread
/dedisp_ds_thread
): Transfers data to the GPU, applies FFT, coherent dedispersion, and inverse FFT. Optionally, it can downsample the data. -
PSRFITS Thread (
psrfits_thread
): Folds the data at the pulsar's period and writes it to disk in PSRFITS format. Alternatively, thenull_thread
can be used for testing purposes without disk output.
- Data enters through the network thread via UDP, is processed in the GPU by the dedispersion thread, and finally written to disk according to the specified mode.
To contribute:
- Fork and branch the repository.
- Make and test your changes.
- Submit a pull request with detailed changes.