parallel query generation #1908
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: GPU Validation | |
| on: | |
| push: | |
| branches: [ master, gouda ] | |
| pull_request: | |
| branches: [ master ] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
| cancel-in-progress: true | |
| jobs: | |
| gpu-validate: | |
| runs-on: [ self-hosted, linux, x64, gpu ] | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| BUILDCACHE_COMPRESS: true | |
| BUILDCACHE_DIRECT_MODE: true | |
| BUILDCACHE_ACCURACY: SLOPPY | |
| BUILDCACHE_MAX_CACHE_SIZE: 16106127360 | |
| CUDACXX: /usr/local/cuda/bin/nvcc | |
| CLICOLOR_FORCE: 1 | |
| LD_LIBRARY_PATH: /usr/local/cuda/lib64 | |
| # protect_shadow_gap=0 is required for CUDA + ASan's combo. | |
| ASAN_OPTIONS: alloc_dealloc_mismatch=0:protect_shadow_gap=0 | |
| UBSAN_OPTIONS: halt_on_error=1:abort_on_error=1:print_stacktrace=1 | |
| COMPUTE_SANITIZER: /usr/local/cuda/bin/compute-sanitizer --tool memcheck --error-exitcode 1 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Get deps | |
| run: mkdir -p ~/deps && mv ~/deps . | |
| - name: Configure | |
| run: | | |
| cmake --preset cuda-sanitizer --compile-no-warning-as-error | |
| cmake --preset cuda | |
| cmake --preset cpu | |
| - name: Build | |
| run: | | |
| ./build/cuda/buildcache/bin/buildcache -z | |
| cmake --build --preset cuda-sanitizer --target motis -j 12 # try not to OOM | |
| cmake --build --preset cuda --target motis nigiri-test | |
| cmake --build --preset cpu --target motis | |
| ./build/cuda/buildcache/bin/buildcache -s | |
| - name: nigiri-test | |
| run: ./build/cuda/deps/nigiri/nigiri-test | |
| - name: nigiri-test (compute-sanitizer memcheck) | |
| run: | | |
| /usr/local/cuda/bin/compute-sanitizer --tool memcheck \ | |
| --error-exitcode 1 --launch-timeout 120 \ | |
| ./build/cuda/deps/nigiri/nigiri-test | |
| - name: Save deps | |
| if: always() | |
| run: mv deps ~ | |
| - name: Import Germany | |
| run: | | |
| cd "$HOME/ci-data/ger" | |
| "$GITHUB_WORKSPACE/build/cpu/motis" import -c config_de.yml -d data | |
| - name: Import Europe | |
| run: | | |
| cd "$HOME/ci-data/eu" | |
| "$GITHUB_WORKSPACE/build/cpu/motis" import -c config_europe.yml -d data | |
| - name: Import Switzerland | |
| run: | | |
| cd "$HOME/ci-data/ch" | |
| "$GITHUB_WORKSPACE/build/cpu/motis" import -c config_ch.yml -d data | |
| - name: Validate Germany | |
| run: | | |
| # Germany queries are cheap, so the sanitized runs keep the full n. | |
| GER="--data $HOME/ci-data/ger/data --name germany --date 2026-07-10 | |
| --intermodal --routed-footpaths --tts | |
| --exclude-transit-modes HIGHSPEED_RAIL --n 25" | |
| python3 tools/validate.py ./build/cpu/motis ./build/cuda/motis $GER | |
| python3 tools/validate.py ./build/cuda-san/motis $GER | |
| python3 tools/validate.py ./build/cuda/motis $GER \ | |
| --launcher "$COMPUTE_SANITIZER" | |
| - name: Validate Europe | |
| run: | | |
| EU="--data $HOME/ci-data/eu/data --name europe --date 2026-07-24 | |
| --rt-dir $HOME/ci-data/eu --intermodal --routed-footpaths --flex | |
| --bike --tts --exclude-transit-modes COACH --n_threads 8" | |
| python3 tools/validate.py ./build/cpu/motis ./build/cuda/motis $EU --n 20 | |
| python3 tools/validate.py ./build/cuda-san/motis $EU --n 10 | |
| python3 tools/validate.py ./build/cuda/motis $EU --n 10 \ | |
| --launcher "$COMPUTE_SANITIZER" | |
| - name: Validate Europe RENTAL | |
| run: | | |
| BOUNDS='{"type":"Polygon","coordinates":[[[1.4461,48.1200],[3.5599,48.1200],[3.5599,49.2415],[1.4461,49.2415],[1.4461,48.1200]]]}' | |
| RENT="--data $HOME/ci-data/eu/data-rental --gbfs-dir $HOME/ci-data/eu | |
| --rt-dir $HOME/ci-data/eu --name europe-rental --date 2026-07-24 | |
| --rental --n_threads 8" | |
| python3 tools/validate.py ./build/cpu/motis ./build/cuda/motis $RENT --bounds "$BOUNDS" --n 20 | |
| python3 tools/validate.py ./build/cuda-san/motis $RENT --bounds "$BOUNDS" --n 10 | |
| python3 tools/validate.py ./build/cuda/motis $RENT --bounds "$BOUNDS" --n 10 \ | |
| --launcher "$COMPUTE_SANITIZER" | |
| - name: Validate Switzerland ODM | |
| run: | | |
| CH="--data $HOME/ci-data/ch/data --name switzerland --date 2026-07-06 | |
| --flex" | |
| python3 tools/validate.py ./build/cpu/motis ./build/cuda/motis $CH --n 250 | |
| python3 tools/validate.py ./build/cuda-san/motis $CH --n 100 | |
| python3 tools/validate.py ./build/cuda/motis $CH --n 100 \ | |
| --launcher "$COMPUTE_SANITIZER" |