Compare: transit-qa from nigiri #1937
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: | | |
| # compute-sanitizer slows every kernel down by an order of | |
| # magnitude, so it gets a much smaller n than the plain runs. | |
| GER="--data $HOME/ci-data/ger/data --name germany --date 2026-07-10 | |
| --intermodal --routed-footpaths --tts | |
| --exclude-transit-modes HIGHSPEED_RAIL" | |
| python3 tools/validate.py ./build/cpu/motis ./build/cuda/motis $GER --n 25 | |
| python3 tools/validate.py ./build/cuda-san/motis $GER --n 25 | |
| python3 tools/validate.py ./build/cuda/motis $GER --n 3 \ | |
| --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 | |
| - 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 3 \ | |
| --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 10 \ | |
| --launcher "$COMPUTE_SANITIZER" |