A SAR application written in Halide. Based on the RITSAR backprojection implementation.
Off-the-shelf dependencies (probably available from your preferred package manager):
- LLVM/Clang - exact version constraints depend on Halide's requirements; recommend LLVM >= 11
- LLVM is required for Halide-generated libraries, so we recommend using the same LLVM to build all sources. However, other compilers with C++17 support (including standard library features, e.g., GCC >= 7.3) might work for non-Halide-generated sources.
- CMake >= 3.16
- CUDA
- FFTW3 - e.g.,
fftw-devel
for RHEL-based systems,libfftw3-dev
for Debian-based systems - libpng - e.g.,
libpng-devel
for RHEL-based systems,libpng-dev
for Debian-based systems - zlib - e.g.,
zlib-devel
for RHEL-based systems,zlib1g-dev
for Debian-based systems
Custom dependencies (may need to be built from source):
To enable distributed scheduling support:
- MPI - e.g., OpenMPI
- Distributed Halide (instead of upstream Halide listed above) (fork)
Build with CMake:
mkdir build
cd build
cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_PREFIX_PATH="/path/to/halide-install-prefix/lib64/cmake/Halide/;/path/to/cnpy-install-prefix/"
make -j
Two datasets are available for testing.
- The AFRL dataset contains 469 radar pulses, and the output image is 512x512
- The Sandia dataset contains 1999 radar pulses, and the output image is 2048x2048
To run the backprojection test with the AFRL dataset:
./sarbp -p ../data/AFRL/pass1/HH_npy -o AFRL.png -d -30.0 -D 0.0 -t 17 -u 2
or with a distributed CPU schedule:
mpirun -np 4 ./sarbp -p ../data/AFRL/pass1/HH_npy -o AFRL-cpu_distributed.png -d -30.0 -D 0.0 -t 17 -u 2 -s cpu_distributed
or with a GPU CUDA schedule:
./sarbp -p ../data/AFRL/pass1/HH_npy -o AFRL-cuda.png -d -30.0 -D 0.0 -t 17 -u 2 -s cuda
or with a distributed GPU CUDA schedule:
mpirun -np 4 ./sarbp -p ../data/AFRL/pass1/HH_npy -o AFRL-cuda_distributed.png -d -30.0 -D 0.0 -t 17 -u 2 -s cuda_distributed
To run the backprojection test with the Sandia dataset:
./sarbp -p ../data/Sandia/npy -o Sandia.png -d -45.0 -D 0.0 -t 30 -u 2
or with a GPU CUDA schedule:
./sarbp -p ../data/Sandia/npy -o Sandia-cuda.png -d -45.0 -D 0.0 -t 30 -u 2 -s cuda
If using this software for scientific research or publications, please cite as:
Connor Imes, Tzu-Mao Li, Mark Glines, Rishi Khan and John Paul Walters, "Distributed and Heterogeneous SAR Backprojection with Halide," 2021 IEEE High Performance Extreme Computing Conference (HPEC), 2021, pp. 1-9, doi: 10.1109/HPEC49654.2021.9622855.
@INPROCEEDINGS{imes2021,
author={Imes, Connor and Li, Tzu-Mao and Glines, Mark and Khan, Rishi and Walters, John Paul},
booktitle={2021 IEEE High Performance Extreme Computing Conference (HPEC)},
title={Distributed and Heterogeneous SAR Backprojection with Halide},
year={2021},
pages={1-9},
doi={10.1109/HPEC49654.2021.9622855}}
}