11# ============================================================
22# SISAP 2026 deglib submission — single container.
3- # Stage 1 builds the deglib_sisap C++ binary (default -march=native ; pass
4- # --build-arg FORCE_AVX2=ON for an AVX2-only build). Stage 2 is a thin Python
3+ # Stage 1 builds the deglib_sisap C++ binary (AVX2-only by default ; pass
4+ # --build-arg FORCE_AVX2=OFF for a -march=native build). Stage 2 is a thin Python
55# runtime that runs submission/search.py, which drives the binary. Both stages
66# share the same Ubuntu base so the binary's glibc/libstdc++ match the runtime.
77# Build from the repo root: docker build -t sisap-deglib .
@@ -16,13 +16,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1616COPY cpp /build/cpp
1717WORKDIR /build/cpp
1818# ISA selection:
19- # FORCE_AVX2=OFF (default) -> -march=native: best ISA on the build host. On TIRA
20- # the image is built on the eval node itself, so native targets that exact CPU.
21- # FORCE_AVX2=ON -> AVX2-only build (drops -march=native so AVX-512 is not
22- # re-enabled), for building on an AVX-512 host that must match a non-AVX-512
23- # target (e.g. our build box vs the EPYC 7F72 eval node, which has no AVX-512).
24- # Usage (AVX2-only): docker build --build-arg FORCE_AVX2=ON -t sisap-deglib .
25- ARG FORCE_AVX2=OFF
19+ # FORCE_AVX2=ON (default) -> AVX2-only build (drops -march=native so AVX-512 is
20+ # not re-enabled). Default because we build the submission image on an AVX-512
21+ # host (our build box) but it must run on the EPYC 7F72 eval node, which has NO
22+ # AVX-512 — a -march=native binary would crash there with SIGILL.
23+ # FORCE_AVX2=OFF -> -march=native: best ISA on the build host (only safe when the
24+ # build host and the run host share the same CPU).
25+ # Native build: docker build --build-arg FORCE_AVX2=OFF -t sisap-deglib .
26+ ARG FORCE_AVX2=ON
2627RUN if [ "$FORCE_AVX2" = "ON" ]; then \
2728 cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DFORCE_AVX2=ON ; \
2829 else \
0 commit comments