adaptive-boxes-gpu ⚡ 📦
GPU-accelerated rectangular decomposition for sound propagation modeling in 2D.
Samples
High resolution images! Click over any image to see the rectangular decomposition's details.
Scene 1
Scene 2
Scene 3
Usage Guide
Requirements
- CUDA 9.0
- Thrust parallel template library
- CuRand
Basics
First compile the adaptive_boxes.cu
script. Just do make
.
Run ./adabox
with the following arguments:
- [1] input file (binary matrix in .csv)
- [2] output file (list of rectangles in .csv)
- [3] n (# of tests = n x n)
Input file
The input should be a .csv
file which contains the matrix size and the binary matrix data.
Some samples are located in data
folder. As a simple example see squares.csv
.
Output file
A list of resulting rectangles in a .csv
file.
Data is given in the format: [x1 x2 y1 y2]
(Two points rectangle location).
Performance Test
Execution time in seconds:
# of parallel searches [n] |
Scene 1 | Scene 2 | Scene 3 |
---|---|---|---|
2400 | 3.1 | 2.6 | 2 |
Tests were performed using a GPU NVIDIA Tesla V100.
Extra info
How does it work? Why sound propagation modeling?
Adaptive Rectangular Decomposition (ARD) is an efficient technique for modeling the sound propagation. This technique reduces the computational overhead and memory requirements by using non-dispersive sub-rectangular domains suitable for parallel computation. In order to use this technique, the scene should be decomposed into large inscribed rectangles. For large and complex scenes, it is not feasible to find an optimal set of large rectangles and thus an approximation should be used. In this paper, we present a GPU-accelerated algorithm for searching an adequate rectangular decomposition of a 2D scene in a reasonable time. Our algorithm performs a fast parallel search in the entire domain. As a result, large and complex scenes can be decomposed in seconds and it enables them to be numerically modeled in parallel using ARD.
More info: GPU-accelerated rectangular decomposition for sound propagation modeling in 2D.
.csv
results?
How to plot the Use adaptive-boxes
python library:
pip install adaptive-boxes
See here adabox.