Skip to content

Deterministic / bit-for-bit identical output across runs (seed or deterministic mode?) #138

Description

@LeandreSassi

I’m trying to get bit-for-bit identical geometry from two runs with exactly the same inputs and config, but I still see differences between runs. I’m looking for guidance on whether fully deterministic output is possible today, and how to achieve it (e.g., via a seed or a deterministic mode).

What I’m doing

Host: Windows (Docker Desktop)

Image: 3dgi/roofer:develop

Command (single-threaded + pinned math libs):

docker run --rm ^
  -v C:\Users\XXX\Github\LOD2\data\docker_test:/data ^
  -e RANDOM_SEED=42 ^
  -e PYTHONHASHSEED=42 ^
  -e OMP_NUM_THREADS=1 ^
  -e OPENBLAS_NUM_THREADS=1 ^
  -e MKL_NUM_THREADS=1 ^
  -e NUMEXPR_NUM_THREADS=1 ^
  3dgi/roofer:develop roofer \
    -c /data/config.toml \
    --jobs 1 \
    --loglevel info

What I’ve tried:

Single-threaded Roofer: --jobs 1

Env vars to avoid hidden parallelism: OMP_NUM_THREADS=1, OPENBLAS_NUM_THREADS=1, MKL_NUM_THREADS=1, etc.

Fixed locale: LC_ALL=C

Fixed “seed” envs (RANDOM_SEED, PYTHONHASHSEED) — I understand Roofer doesn’t expose a --seed, so these may not affect core steps.

Ensured byte-identical inputs and stable layer selection in config.toml.

Is it even possible to get to that point or are the random seeds generated too deep in the code?

Thanks :)

Léandre

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions