Skip to content

ISI-apex/halide-sar-app

Repository files navigation

Halide SAR Application Demo

A SAR application written in Halide. Based on the RITSAR backprojection implementation.

Prerequisites:

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:

Compiling

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

Testing

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

AFRL

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

Sandia

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

Citation

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}}
}