1bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 2bedd5dcaSJeremy L Thompson# HONEE GitLab CI 3bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 4bedd5dcaSJeremy L Thompsonstages: 5bedd5dcaSJeremy L Thompson - test:stage-lint 6f27266cbSJeremy L Thompson - test:stage-full 7bedd5dcaSJeremy L Thompson 8bedd5dcaSJeremy L Thompson.test-basic: 9bedd5dcaSJeremy L Thompson interruptible: true 10bedd5dcaSJeremy L Thompson only: 11bedd5dcaSJeremy L Thompson refs: 12bedd5dcaSJeremy L Thompson - web 13bedd5dcaSJeremy L Thompson - merge_requests 14bedd5dcaSJeremy L Thompson 15bedd5dcaSJeremy L Thompson.test: 16bedd5dcaSJeremy L Thompson extends: .test-basic 17bedd5dcaSJeremy L Thompson only: 18bedd5dcaSJeremy L Thompson refs: 19bedd5dcaSJeremy L Thompson - web 20bedd5dcaSJeremy L Thompson - merge_requests 21bedd5dcaSJeremy L Thompson - main 22bedd5dcaSJeremy L Thompson - release 23bedd5dcaSJeremy L Thompson except: 24bedd5dcaSJeremy L Thompson variables: 25bedd5dcaSJeremy L Thompson # Skip if the No-Code label is attached to a merge request (i.e., documentation only) 26bedd5dcaSJeremy L Thompson - $CI_MERGE_REQUEST_LABELS =~ /(^|,)No-Code($|,)/ 27bedd5dcaSJeremy L Thompson needs: 28bedd5dcaSJeremy L Thompson - job: docker-build 29bedd5dcaSJeremy L Thompson optional: true 30bedd5dcaSJeremy L Thompson 31bedd5dcaSJeremy L Thompson.docs: 32bedd5dcaSJeremy L Thompson image: python:3.10 33bedd5dcaSJeremy L Thompson before_script: 34bedd5dcaSJeremy L Thompson - pip install -r doc/requirements.txt 35bedd5dcaSJeremy L Thompson - apt-get update 36bedd5dcaSJeremy L Thompson - apt-get install -y doxygen librsvg2-bin 37bedd5dcaSJeremy L Thompson 38bedd5dcaSJeremy L Thompson 39bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 40bedd5dcaSJeremy L Thompson# Test formatting and static analysis 41bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 42bedd5dcaSJeremy L Thompsonnoether-lint: 43bedd5dcaSJeremy L Thompson stage: test:stage-lint 44bedd5dcaSJeremy L Thompson extends: .test 45bedd5dcaSJeremy L Thompson tags: 46bedd5dcaSJeremy L Thompson - noether 47bedd5dcaSJeremy L Thompson - shell 48bedd5dcaSJeremy L Thompson needs: [] 49bedd5dcaSJeremy L Thompson script: 50bedd5dcaSJeremy L Thompson - rm -f .SUCCESS 51bedd5dcaSJeremy L Thompson # Environment 52bedd5dcaSJeremy L Thompson - export COVERAGE=1 CC=gcc HIPCC=hipcc 53bedd5dcaSJeremy L Thompson - echo "-------------- nproc ---------------" && NPROC_CPU=$(nproc) && NPROC_GPU=$(($(nproc)<8?$(nproc):8)) && echo "NPROC_CPU" $NPROC_CPU && echo "NPROC_GPU" $NPROC_GPU 54bedd5dcaSJeremy L Thompson - echo "-------------- CC ------------------" && $CC --version 55bedd5dcaSJeremy L Thompson - echo "-------------- GCOV ----------------" && gcov --version 56bedd5dcaSJeremy L Thompson - echo "-------------- HIPCC ---------------" && $HIPCC --version && export HIP_DIR=/opt/rocm 57bedd5dcaSJeremy L Thompson # Libraries 58bedd5dcaSJeremy L Thompson # -- libCEED 59bedd5dcaSJeremy L Thompson - echo "-------------- libCEED -------------" 60bedd5dcaSJeremy L Thompson - export CEED_DIR=/projects/honee/libCEED && git -C $CEED_DIR -c safe.directory=$CEED_DIR describe && make -C $CEED_DIR info 61bedd5dcaSJeremy L Thompson # -- PETSc 62bedd5dcaSJeremy L Thompson - echo "-------------- PETSc ---------------" 63bedd5dcaSJeremy L Thompson - export PETSC_DIR=/projects/honee/petsc 64bedd5dcaSJeremy L Thompson - export PETSC_ARCH=arch-serial-gpu && git -C $PETSC_DIR -c safe.directory=$PETSC_DIR describe && make -C $PETSC_DIR info 65bedd5dcaSJeremy L Thompson - export PETSC_OPTIONS='-malloc_debug no' # faster tests 66bedd5dcaSJeremy L Thompson - export LD_LIBRARY_PATH=$PETSC_DIR/lib PATH="$PATH:$PETSC_DIR/bin" # cgnsdiff 67bedd5dcaSJeremy L Thompson # make with Werror, Wall, supress loop vectorization warnings 68bedd5dcaSJeremy L Thompson - echo "-------------- make Werror ---------" 6974512b2dSJeremy L Thompson - PEDANTIC=1 PEDANTICFLAGS="-Werror -Wall -Wno-pass-failed" make -j$NPROC_CPU 70bedd5dcaSJeremy L Thompson # make format 71bedd5dcaSJeremy L Thompson - echo "-------------- make format ---------" && export CLANG_FORMAT=clang-format-15 && $CLANG_FORMAT --version 72bedd5dcaSJeremy L Thompson - make -j$NPROC_CPU format && git diff --color=always --exit-code 73bedd5dcaSJeremy L Thompson # Clang-tidy 74bedd5dcaSJeremy L Thompson - echo "-------------- clang-tidy ----------" && export CLANG_TIDY=clang-tidy-15 && $CLANG_TIDY --version 7503f5db93SJeremy L Thompson - echo "Tests intentionally skipped" 7603f5db93SJeremy L Thompson # - PETSC_ARCH=arch-serial-gpu make -j$NPROC_CPU tidy 77bedd5dcaSJeremy L Thompson # Report status 78bedd5dcaSJeremy L Thompson - touch .SUCCESS 79bedd5dcaSJeremy L Thompson 80bedd5dcaSJeremy L Thompson 81bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 82bedd5dcaSJeremy L Thompson# Test memory access assumptions 83bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 84bedd5dcaSJeremy L Thompsonnoether-memcheck: 85f27266cbSJeremy L Thompson stage: test:stage-lint 86bedd5dcaSJeremy L Thompson extends: .test 87bedd5dcaSJeremy L Thompson tags: 88bedd5dcaSJeremy L Thompson - noether 89bedd5dcaSJeremy L Thompson - shell 90bedd5dcaSJeremy L Thompson needs: [] 91bedd5dcaSJeremy L Thompson script: 92bedd5dcaSJeremy L Thompson - rm -f .SUCCESS 93bedd5dcaSJeremy L Thompson # Environment 94bedd5dcaSJeremy L Thompson # -- NOTE: Coverage disabled because it doesn't play nice with the ASAN options 95bedd5dcaSJeremy L Thompson - export CC=clang-15 96bedd5dcaSJeremy L Thompson - export NPROC_POOL=8 97bedd5dcaSJeremy L Thompson - echo "-------------- nproc ---------------" && NPROC_CPU=$(nproc) && NPROC_GPU=$(($(nproc)<8?$(nproc):8)) && echo "NPROC_CPU" $NPROC_CPU && echo "NPROC_GPU" $NPROC_GPU 98bedd5dcaSJeremy L Thompson - echo "-------------- CC ------------------" && $CC --version 99bedd5dcaSJeremy L Thompson # Libraries 100bedd5dcaSJeremy L Thompson # -- libCEED 101bedd5dcaSJeremy L Thompson - echo "-------------- libCEED -------------" 102bedd5dcaSJeremy L Thompson - export CEED_DIR=/projects/honee/libCEED-cpu && git -C $CEED_DIR -c safe.directory=$CEED_DIR describe && make -C $CEED_DIR info 103bedd5dcaSJeremy L Thompson # -- PETSc 104bedd5dcaSJeremy L Thompson - echo "-------------- PETSc ---------------" 105bedd5dcaSJeremy L Thompson - export PETSC_DIR=/projects/honee/petsc 106bedd5dcaSJeremy L Thompson - export PETSC_ARCH=arch-serial-cpu-clang && git -C $PETSC_DIR -c safe.directory=$PETSC_DIR describe && make -C $PETSC_DIR info 107bedd5dcaSJeremy L Thompson - export PETSC_OPTIONS='-malloc_debug no' # faster tests 108bedd5dcaSJeremy L Thompson - export LD_LIBRARY_PATH=$PETSC_DIR/lib PATH="$PATH:$PETSC_DIR/bin" # cgnsdiff 109bedd5dcaSJeremy L Thompson # ASAN 110bedd5dcaSJeremy L Thompson - echo "-------------- ASAN ----------------" 11103f5db93SJeremy L Thompson - echo "ASAN intentionlly skipped, known leaks" 11203f5db93SJeremy L Thompson # - export ASAN=1 AFLAGS="-fsanitize=address -fsanitize=leak" 113bedd5dcaSJeremy L Thompson - echo $AFLAGS 114bedd5dcaSJeremy L Thompson # HONEE 115bedd5dcaSJeremy L Thompson - echo "-------------- HONEE ---------------" && make info 116bedd5dcaSJeremy L Thompson - make clean 11774512b2dSJeremy L Thompson - make -j$NPROC_CPU 118bedd5dcaSJeremy L Thompson # Test suite 119bedd5dcaSJeremy L Thompson - echo "-------------- HONEE tests ---------" 120bedd5dcaSJeremy L Thompson - echo '[{"subject":"/","metrics":[{"name":"Transfer Size (KB)","value":"19.5","desiredSize":"smaller"},{"name":"Speed Index","value":0,"desiredSize":"smaller"},{"name":"Total Score","value":92,"desiredSize":"larger"},{"name":"Requests","value":4,"desiredSize":"smaller"}]}]' > performance.json 121bedd5dcaSJeremy L Thompson # -- Memcheck libCEED CPU backend, serial 122bedd5dcaSJeremy L Thompson - NPROC_TEST=1 make -k -j$((NPROC_CPU / NPROC_POOL)) CEED_BACKENDS="/cpu/self/memcheck" JUNIT_BATCH="cpu-serial-memcheck" junit realsearch=% 123bedd5dcaSJeremy L Thompson # Report status 124bedd5dcaSJeremy L Thompson - touch .SUCCESS 125bedd5dcaSJeremy L Thompson artifacts: 126bedd5dcaSJeremy L Thompson paths: 127bedd5dcaSJeremy L Thompson - build/*.junit 128bedd5dcaSJeremy L Thompson reports: 129bedd5dcaSJeremy L Thompson junit: build/*.junit 130bedd5dcaSJeremy L Thompson performance: performance.json 131bedd5dcaSJeremy L Thompson expire_in: 28 days 132bedd5dcaSJeremy L Thompson 133bedd5dcaSJeremy L Thompson 134bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 135bedd5dcaSJeremy L Thompson# CPU testing on Noether 136bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 137bedd5dcaSJeremy L Thompsonnoether-cpu: 138f27266cbSJeremy L Thompson stage: test:stage-full 139bedd5dcaSJeremy L Thompson extends: .test 140bedd5dcaSJeremy L Thompson tags: 141bedd5dcaSJeremy L Thompson - noether 142bedd5dcaSJeremy L Thompson - shell 143bedd5dcaSJeremy L Thompson script: 144bedd5dcaSJeremy L Thompson - rm -f .SUCCESS 145bedd5dcaSJeremy L Thompson # Environment 146bedd5dcaSJeremy L Thompson - export COVERAGE=1 CC=gcc HIPCC=hipcc 147bedd5dcaSJeremy L Thompson - export NPROC_POOL=4 148bedd5dcaSJeremy L Thompson - echo "-------------- nproc ---------------" && NPROC_CPU=$(nproc) && NPROC_GPU=$(($(nproc)<8?$(nproc):8)) && echo "NPROC_CPU" $NPROC_CPU && echo "NPROC_GPU" $NPROC_GPU 149bedd5dcaSJeremy L Thompson - echo "-------------- CC ------------------" && $CC --version 150bedd5dcaSJeremy L Thompson - echo "-------------- GCOV ----------------" && gcov --version 151bedd5dcaSJeremy L Thompson - echo "-------------- HIPCC ---------------" && $HIPCC --version && export HIP_DIR=/opt/rocm 152bedd5dcaSJeremy L Thompson # Libraries 153bedd5dcaSJeremy L Thompson # -- libCEED 154bedd5dcaSJeremy L Thompson - echo "-------------- libCEED -------------" 155bedd5dcaSJeremy L Thompson - export CEED_DIR=/projects/honee/libCEED && git -C $CEED_DIR -c safe.directory=$CEED_DIR describe && make -C $CEED_DIR info 156bedd5dcaSJeremy L Thompson # -- PETSc 157bedd5dcaSJeremy L Thompson - echo "-------------- PETSc ---------------" 158bedd5dcaSJeremy L Thompson - export PETSC_DIR=/projects/honee/petsc 159bedd5dcaSJeremy L Thompson - export PETSC_ARCH=arch-parallel-gpu && git -C $PETSC_DIR -c safe.directory=$PETSC_DIR describe && make -C $PETSC_DIR info 160bedd5dcaSJeremy L Thompson - export PETSC_OPTIONS='-malloc_debug no' # faster tests 161bedd5dcaSJeremy L Thompson - export LD_LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib PATH="$PATH:$PETSC_DIR/$PETSC_ARCH/bin" # cgnsdiff 162bedd5dcaSJeremy L Thompson # HONEE 163bedd5dcaSJeremy L Thompson - echo "-------------- HONEE ---------------" && make info 164bedd5dcaSJeremy L Thompson - make clean 16574512b2dSJeremy L Thompson - make -j$NPROC_CPU 166bedd5dcaSJeremy L Thompson # Test suite 167bedd5dcaSJeremy L Thompson - echo "-------------- HONEE tests ---------" 168bedd5dcaSJeremy L Thompson - echo '[{"subject":"/","metrics":[{"name":"Transfer Size (KB)","value":"19.5","desiredSize":"smaller"},{"name":"Speed Index","value":0,"desiredSize":"smaller"},{"name":"Total Score","value":92,"desiredSize":"larger"},{"name":"Requests","value":4,"desiredSize":"smaller"}]}]' > performance.json 169bedd5dcaSJeremy L Thompson # -- Fastest libCEED CPU backend, parallel 170bedd5dcaSJeremy L Thompson # Note: /shared is faster due to /gen JiT time for CeedOperators overwhelming runtime improvements at these problem sizes 171*a447840aSJeremy L Thompson - echo "Parallel tests skipped for now" 172*a447840aSJeremy L Thompson # - NPROC_TEST=2 make -k -j$((NPROC_GPU / NPROC_POOL / 2)) CEED_BACKENDS="/gpu/hip/shared" JUNIT_BATCH="cpu-parallel" junit realsearch=% 173bedd5dcaSJeremy L Thompson # Report status 174bedd5dcaSJeremy L Thompson - touch .SUCCESS 175bedd5dcaSJeremy L Thompson after_script: 176bedd5dcaSJeremy L Thompson - | 177bedd5dcaSJeremy L Thompson if [ -f .SUCCESS ]; then 178bedd5dcaSJeremy L Thompson gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml; 179bedd5dcaSJeremy L Thompson fi 180bedd5dcaSJeremy L Thompson artifacts: 181bedd5dcaSJeremy L Thompson paths: 182bedd5dcaSJeremy L Thompson - coverage.xml 183bedd5dcaSJeremy L Thompson - build/*.junit 184bedd5dcaSJeremy L Thompson reports: 185bedd5dcaSJeremy L Thompson coverage_report: 186bedd5dcaSJeremy L Thompson coverage_format: cobertura 187bedd5dcaSJeremy L Thompson path: coverage.xml 188bedd5dcaSJeremy L Thompson junit: build/*.junit 189bedd5dcaSJeremy L Thompson performance: performance.json 190bedd5dcaSJeremy L Thompson expire_in: 28 days 191bedd5dcaSJeremy L Thompson 192bedd5dcaSJeremy L Thompson 193bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 194bedd5dcaSJeremy L Thompson# GPU testing on Noether 195bedd5dcaSJeremy L Thompson# ---------------------------------------------------------------------------------------- 196bedd5dcaSJeremy L Thompsonnoether-gpu: 197f27266cbSJeremy L Thompson stage: test:stage-full 198bedd5dcaSJeremy L Thompson extends: .test 199bedd5dcaSJeremy L Thompson tags: 200bedd5dcaSJeremy L Thompson - noether 201bedd5dcaSJeremy L Thompson - shell 202bedd5dcaSJeremy L Thompson script: 203bedd5dcaSJeremy L Thompson - rm -f .SUCCESS 204bedd5dcaSJeremy L Thompson # Environment 205bedd5dcaSJeremy L Thompson - export COVERAGE=1 CC=gcc HIPCC=hipcc 206bedd5dcaSJeremy L Thompson - export NPROC_POOL=4 207bedd5dcaSJeremy L Thompson - echo "-------------- nproc ---------------" && NPROC_CPU=$(nproc) && NPROC_GPU=$(($(nproc)<8?$(nproc):8)) && echo "NPROC_CPU" $NPROC_CPU && echo "NPROC_GPU" $NPROC_GPU 208bedd5dcaSJeremy L Thompson - echo "-------------- CC ------------------" && $CC --version 209bedd5dcaSJeremy L Thompson - echo "-------------- GCOV ----------------" && gcov --version 210bedd5dcaSJeremy L Thompson - echo "-------------- HIPCC ---------------" && $HIPCC --version && export HIP_DIR=/opt/rocm 211bedd5dcaSJeremy L Thompson # Libraries 212bedd5dcaSJeremy L Thompson # -- libCEED 213bedd5dcaSJeremy L Thompson - echo "-------------- libCEED -------------" 214bedd5dcaSJeremy L Thompson - export CEED_DIR=/projects/honee/libCEED && git -C $CEED_DIR -c safe.directory=$CEED_DIR describe && make -C $CEED_DIR info 215bedd5dcaSJeremy L Thompson # -- PETSc 216bedd5dcaSJeremy L Thompson - echo "-------------- PETSc ---------------" 217bedd5dcaSJeremy L Thompson - export PETSC_DIR=/projects/honee/petsc 218bedd5dcaSJeremy L Thompson - export PETSC_ARCH=arch-parallel-gpu && git -C $PETSC_DIR -c safe.directory=$PETSC_DIR describe && make -C $PETSC_DIR info 219bedd5dcaSJeremy L Thompson - export PETSC_OPTIONS='-malloc_debug no' # faster tests 220bedd5dcaSJeremy L Thompson - export LD_LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib PATH="$PATH:$PETSC_DIR/$PETSC_ARCH/bin" # cgnsdiff 221bedd5dcaSJeremy L Thompson # HONEE 222bedd5dcaSJeremy L Thompson - echo "-------------- HONEE ---------------" && make info 223bedd5dcaSJeremy L Thompson - make clean 22474512b2dSJeremy L Thompson - make -j$NPROC_CPU 225bedd5dcaSJeremy L Thompson # Test suite 226bedd5dcaSJeremy L Thompson - echo "-------------- HONEE tests ---------" 227bedd5dcaSJeremy L Thompson - echo '[{"subject":"/","metrics":[{"name":"Transfer Size (KB)","value":"19.5","desiredSize":"smaller"},{"name":"Speed Index","value":0,"desiredSize":"smaller"},{"name":"Total Score","value":92,"desiredSize":"larger"},{"name":"Requests","value":4,"desiredSize":"smaller"}]}]' > performance.json 228bedd5dcaSJeremy L Thompson # -- Fastest libCEED HIP backend, serial 229bedd5dcaSJeremy L Thompson - NPROC_TEST=1 make -k -j$((NPROC_GPU / NPROC_POOL / 1)) CEED_BACKENDS="/cpu/self" JUNIT_BATCH="hip-serial" junit realsearch=% 230bedd5dcaSJeremy L Thompson # Report status 231bedd5dcaSJeremy L Thompson - touch .SUCCESS 232bedd5dcaSJeremy L Thompson after_script: 233bedd5dcaSJeremy L Thompson - | 234bedd5dcaSJeremy L Thompson if [ -f .SUCCESS ]; then 235bedd5dcaSJeremy L Thompson gcovr --xml-pretty --exclude-unreachable-branches --print-summary -o coverage.xml; 236bedd5dcaSJeremy L Thompson fi 237bedd5dcaSJeremy L Thompson artifacts: 238bedd5dcaSJeremy L Thompson paths: 239bedd5dcaSJeremy L Thompson - coverage.xml 240bedd5dcaSJeremy L Thompson - build/*.junit 241bedd5dcaSJeremy L Thompson reports: 242bedd5dcaSJeremy L Thompson coverage_report: 243bedd5dcaSJeremy L Thompson coverage_format: cobertura 244bedd5dcaSJeremy L Thompson path: coverage.xml 245bedd5dcaSJeremy L Thompson junit: build/*.junit 246bedd5dcaSJeremy L Thompson performance: performance.json 247bedd5dcaSJeremy L Thompson expire_in: 28 days 248