A small image processing project. It splits images into tiles, upscales them, and stitches them back together. The CPU path works by default. GPU paths are optional.
Build and test the CPU path without CUDA or Metal.
CUDA and Metal code live in the repo, but they are optional.
The C preprocessor uses stb_image. The Python flow uses OpenCV.
Upload images, create tiles, upscale, stitch, and download results.
1
Tile images locally with preprocess tool
2
Send tiles to a GPU machine when needed
3
Upscale or filter on GPU
4
Combine tiles into final image
The local CPU path is the stable path. GPU work is kept separate so the app still runs on a plain machine.
./scripts/setup.sh ./scripts/run.sh
docker build -t thread . docker run --rm thread
brew install cmake ninja bash scripts/setup.sh cmake -S . -B build -DWITH_METAL=OFF
sudo apt install cmake ninja-build python3-venv bash scripts/setup.sh cmake -S . -B build -DUSE_CUDA=OFF
Thread is still small. The goal is to keep the working path clear before adding more moving parts.