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-develfor RHEL-based systems,libfftw3-devfor Debian-based systems - libpng - e.g.,
libpng-develfor RHEL-based systems,libpng-devfor Debian-based systems - zlib - e.g.,
zlib-develfor RHEL-based systems,zlib1g-devfor 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 -jTwo 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 2or 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_distributedor 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 cudaor 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_distributedTo 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 2or 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 cudaIf 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}}
}