Skip to content

qrutyy/bmp-conv

Repository files navigation

bmp-conv

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

Features

  • 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

Quick Start

Build

cmake -S . -B build
cmake --build build

Minimal usage

./bmp-conv image.bmp --filter=sh --mode=by_column --block=30

Execution Modes

Platforms

Mode Description
-cpu Default CPU execution (including queue mode and MPI)
-gpu GPU mode (WIP)

Distribution strategies

  • by_row
  • by_column
  • by_pixel
  • by_grid (block-based)

Examples

CPU Multi-threaded grid convolution

./bmp-conv -cpu image.bmp --filter=gg --mode=by_grid --threadnum=4 --block=16

CPU Queue-based batch processing

./bmp-conv -queue-mode img1.bmp img2.bmp img3.bmp \
  --filter=bb --mode=by_row --block=5 --rww=1,2,1

CPU MPI execution (4 processes)

mpirun -np 4 ./bmp-conv -cpu -mpi-mode image.bmp \
  --filter=em --mode=by_column --block=5

GPU execution (auto-defined work-group size)

./bmp-conv -gpu image.bmp --filter=gg

Benchmarking & Analysis

The project includes scripts for:

  • single vs multi-thread comparison
  • queue-based pipeline analysis
  • MPI scalability

See:

Run benchmarks:

./tests/st-mt-benchmark.sh
./tests/qmt-benchmark.sh
./tests/mpi-benchmark.sh

Documentation

License

GPL-3.0 — see LICENSE

About

Distributed BMP image convolution

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors