High-performance BMP image convolution tool with multiple parallelization strategies.
bmp-conv explores different computation models for image convolution:
- on-CPU (single and multi-threaded) (static & queue-based)
- MPI-based distributed processing
- on-GPU WIP
- CPU, (GPU — WIP)
- Multiple convolution filters (blur, sharpen, gaussian, median, etc.)
- Several workload distribution strategies
- Queue-based pipeline for batch processing
- MPI-based on-CPU pipeline
- Built-in benchmarking & logging
cmake -S . -B build
cmake --build build./bmp-conv image.bmp --filter=sh --mode=by_column --block=30| Mode | Description |
|---|---|
-cpu |
Default CPU execution (including queue mode and MPI) |
-gpu |
GPU mode (WIP) |
by_rowby_columnby_pixelby_grid(block-based)
CPU Multi-threaded grid convolution
./bmp-conv -cpu image.bmp --filter=gg --mode=by_grid --threadnum=4 --block=16CPU Queue-based batch processing
./bmp-conv -queue-mode img1.bmp img2.bmp img3.bmp \
--filter=bb --mode=by_row --block=5 --rww=1,2,1CPU MPI execution (4 processes)
mpirun -np 4 ./bmp-conv -cpu -mpi-mode image.bmp \
--filter=em --mode=by_column --block=5GPU execution (auto-defined work-group size)
./bmp-conv -gpu image.bmp --filter=ggThe project includes scripts for:
- single vs multi-thread comparison
- queue-based pipeline analysis
- MPI scalability
See:
docs/ST-MT-mode-analysis.mddocs/QMT-mode-analysis.mddocs/MPI-mode-analysis.mddocs/Benchmark-setup.md
Run benchmarks:
./tests/st-mt-benchmark.sh
./tests/qmt-benchmark.sh
./tests/mpi-benchmark.shGPL-3.0 — see LICENSE