docker/cuvs-dev/README.md
This lightweight image contains cuVS, CuPy, the OpenViking local VectorDB native engine, and the minimal Python dependencies needed by the cuVS smoke and integration tests. It deliberately excludes the server, bot, Web UI, and unrelated ingestion dependencies. It does not encode any cluster-specific configuration.
Build it from the repository root:
docker build \
-f docker/cuvs-dev/Dockerfile \
-t openviking-cuvs:dev \
.
The defaults track CUDA 13 packages. Build a CUDA 12 variant for systems whose driver/runtime policy requires it:
docker build \
--build-arg CUVS_PACKAGE=cuvs-cu12==26.6.0 \
--build-arg 'CUPY_PACKAGE=cupy-cuda12x[ctk]==14.1.1' \
-f docker/cuvs-dev/Dockerfile \
-t openviking-cuvs:dev-cu12 \
.
Run the baked smoke test:
docker run --rm --gpus all openviking-cuvs:dev \
python /opt/openviking-cuvs/cuvs_smoke.py
Exercise CAGRA with the same image:
docker run --rm --gpus all openviking-cuvs:dev \
python /opt/openviking-cuvs/cuvs_smoke.py --algorithm cagra
For Python-only iteration, mount a worktree and point
OPENVIKING_SOURCE_DIR at it. The entrypoint copies the prebuilt native
engine into the mounted tree before running the command:
docker run --rm --gpus all \
-v "$PWD:/workspace/OpenViking" \
-e OPENVIKING_SOURCE_DIR=/workspace/OpenViking \
openviking-cuvs:dev \
python examples/cuvs_smoke.py
The dependency, native-engine, and Python-source layers are separate. Normal
changes to the Python cuVS integration reuse the dependency and C++ build
layers. Recompile the native layer only when src/ or third_party/ changes.
For an Enroot/Pyxis environment, export the already-built Docker image once to a shared SquashFS file:
docker/cuvs-dev/export-sqsh.sh \
openviking-cuvs:dev \
/shared/images/openviking-cuvs-dev.sqsh
Set both NVIDIA_VISIBLE_DEVICES and NVIDIA_DRIVER_CAPABILITIES before
launching the SquashFS image, and explicitly pass them through when the Pyxis
configuration does not inherit host variables. This triggers the NVIDIA hook
that injects libcuda and the allocated devices:
export NVIDIA_VISIBLE_DEVICES=all
export NVIDIA_DRIVER_CAPABILITIES=compute,utility