UOA-PARC-SKA / FDAS

Fourier Domain Acceleration Search, FPGA-accelerated with OpenCL.
GNU General Public License v3.0
3 stars 0 forks source link

FDAS

Fourier Domain Acceleration Search, FPGA-accelerated with OpenCL.

FDAS is a key component in the detection of pulsars in signals received by radio telescopes. This particular implementation is designed to meet the specifications of the Square Kilometer Array's (SKA) pulsar search engine. The approach is described in an open access paper in Experimental Astronomy:

Oppermann, J., Mickaliger, M.B. & Sinnen, O.: Pulsar search acceleration using FPGAs and OpenCL templates. Exp Astron (2023). https://doi.org/10.1007/s10686-022-09888-z

Prerequisites

For the hardware synthesis:

Instructions to set up the required toolchain inside a Docker image are provided in docker/README.md. The script docker/setup.sh may also serve as a starting point for a manual setup.

For building the host application:

For creating reference test data:

Building

Make sure the environment variables INTELFPGAOCLSDKROOT and AOCL_BOARD_PACKAGE_ROOT are set correctly.

$ mkdir build ; cd build
$ cmake ..

The following make targets are available:

The architecture's parameters, as well as the command-line flags passed to aoc, can be configured in fdas/CMakeLists.txt

Creating reference test data

To generate a unit test-like signal with the SKA's test vector generator, run the following commands in the provided Docker image (assuming this repository is bind-mounted to /fdas):

$ python psr/soft/vectortools/Pipeline.py -m FDAS-unit -d /fdas/fdas/test/configs -o generated
$ dedisperse generated/Default*.fil -d 0.0 -o /fdas/fdas/test/unit.tim

Back on the host, in the fdas/test directory, execute:

$ python3 ft_conv.py --templates ../tmpl/fdas_templates_85_350.npy \
                     --tile-and-transform --fft-order unit.tim
$ python3 hsum.py unit/fop_ref.npy

Add --num-frequency-bins 32768 to the first command to produce a much smaller data set, suitable for the OpenCL software emulator. Both scripts accept additional options; invoke them with --help for more information.

Running the host application/unit tests

$ cd build/fdas
$ ./fdas_gtest ../../fdas/test/unit

License

Copyright (C) 2020  Parallel and Reconfigurable Computing Lab,
                    Dept. of Electrical, Computer, and Software Engineering,
                    University of Auckland, New Zealand

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

This implementation uses and distributes the following third-party libraries:

Major contributors

listed in alphabetical order

Additional references

Acknowledgement

This work benefitted from discussions with the SKA Time Domain Team (TDT), a collaboration between Manchester and Oxford Universities, and MPIfR Bonn.