1 # Build, test, and install variously configured GROMACS installations.
3 # Initial build that always needs to pass before follow-up stages run
11 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
13 KUBERNETES_CPU_LIMIT: 8
14 KUBERNETES_CPU_REQUEST: 4
15 KUBERNETES_MEMORY_REQUEST: 8Gi
16 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
17 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
18 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
19 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
20 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
21 CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
22 COMPILER_MAJOR_VERSION: 9
23 BUILD_DIR: simple-build
25 - echo $CMAKE_COMPILER_SCRIPT
26 - echo $CMAKE_EXTRA_OPTIONS
27 - echo $CMAKE_SIMD_OPTIONS
28 - echo $CMAKE_GPU_OPTIONS
29 - echo $CMAKE_MPI_OPTIONS
30 - echo $CMAKE_PRECISION_OPTIONS
31 - echo $CMAKE_BUILD_TYPE_OPTIONS
32 - echo $CMAKE_GMXAPI_OPTIONS
33 - if [[ -d $BUILD_DIR ]] ; then
34 echo "Cleaning up build directory" ;
35 rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
37 echo "Preparing new build directory" ;
42 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
43 $CMAKE_COMPILER_SCRIPT
47 $CMAKE_PRECISION_OPTIONS
48 $CMAKE_BUILD_TYPE_OPTIONS
51 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
52 2>&1 | tee cmakeLog.log
53 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
54 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
55 - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
56 - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
57 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
58 | grep -v "CMake" | tee buildErrors.log || true
59 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
60 - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
61 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
62 - ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
63 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
64 ctestLog.log | tee ctestErrors.log
65 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > JUnitTestResults.xml
66 - if [ -s ctestErrors.log ] ; then
67 echo "Error during running ctest";
73 junit: $BUILD_DIR/JUnitTestResults.xml
79 # Jobs running in first pre-build stage
81 .gromacs:base:configure:
84 stage: configure-build
87 KUBERNETES_CPU_LIMIT: 1
88 KUBERNETES_CPU_REQUEST: 1
89 KUBERNETES_MEMORY_REQUEST: 2Gi
90 CMAKE_COMPILER_SCRIPT: ""
91 CMAKE_EXTRA_OPTIONS: ""
92 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
93 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
94 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
95 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
96 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
98 - echo $CMAKE_COMPILER_SCRIPT
99 - echo $CMAKE_EXTRA_OPTIONS
100 - echo $CMAKE_SIMD_OPTIONS
101 - echo $CMAKE_GPU_OPTIONS
102 - echo $CMAKE_MPI_OPTIONS
103 - echo $CMAKE_PRECISION_OPTIONS
104 - echo $CMAKE_BUILD_TYPE_OPTIONS
105 - echo $CMAKE_GMXAPI_OPTIONS
106 - if [[ -d $BUILD_DIR ]] ; then
107 rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
109 echo "Preparing new build directory" ;
114 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
115 $CMAKE_COMPILER_SCRIPT
119 $CMAKE_PRECISION_OPTIONS
120 $CMAKE_BUILD_TYPE_OPTIONS
122 $CMAKE_GMXAPI_OPTIONS
123 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
124 2>&1 | tee cmakeLog.log
125 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
126 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
133 .gromacs:base:release:configure:
136 stage: release-configure
139 KUBERNETES_CPU_LIMIT: 1
140 KUBERNETES_CPU_REQUEST: 1
141 KUBERNETES_MEMORY_REQUEST: 2Gi
142 CMAKE_COMPILER_SCRIPT: ""
143 CMAKE_EXTRA_OPTIONS: ""
144 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
145 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
146 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
147 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
148 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
149 CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
150 RELEASE_BUILD_DIR: release-builds
151 RELEASE_SOURCE: release-source-from-tarball
152 RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
154 - VERSION=`cat version.json |
155 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
156 - if [[ $GROMACS_RELEASE != "true" ]] ; then
157 VERSION=$VERSION-dev ;
159 - SOURCENAME=gromacs-$VERSION
160 - SOURCETARBALL=$SOURCENAME.tar.gz
161 - REGTESTNAME=regressiontests-$VERSION
162 - REGTESTTARBALL=$REGTESTNAME.tar.gz
163 - echo "$SOURCETARBALL"
164 - echo "$REGTESTTARBALL"
165 - RELEASE_TARBALLS=release-tarballs
166 - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
167 - mv $SOURCETARBALL $RELEASE_TARBALLS
168 - mv $REGTESTTARBALL $RELEASE_TARBALLS
169 - cd $RELEASE_TARBALLS
170 # We rename the source and regressiontest directories
171 # to have names for them that don't change for different versions.
172 - tar -xf $SOURCETARBALL
173 - mv $SOURCENAME ../$RELEASE_SOURCE
174 - tar -xf $REGTESTTARBALL
175 - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
176 - rm $SOURCETARBALL $REGTESTTARBALL
178 - echo $CMAKE_COMPILER_SCRIPT
179 - echo $CMAKE_EXTRA_OPTIONS
180 - echo $CMAKE_SIMD_OPTIONS
181 - echo $CMAKE_GPU_OPTIONS
182 - echo $CMAKE_MPI_OPTIONS
183 - echo $CMAKE_PRECISION_OPTIONS
184 - echo $CMAKE_BUILD_TYPE_OPTIONS
185 - echo $CMAKE_GMXAPI_OPTIONS
186 - if [[ -d $RELEASE_BUILD_DIR ]] ; then
187 echo "Cleaning up build directory" ;
188 rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
190 echo "Preparing new build directory" ;
191 mkdir $RELEASE_BUILD_DIR ;
193 - cd $RELEASE_BUILD_DIR
194 - cmake ../$RELEASE_SOURCE/
195 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
196 $CMAKE_COMPILER_SCRIPT
200 $CMAKE_PRECISION_OPTIONS
201 $CMAKE_BUILD_TYPE_OPTIONS
203 $CMAKE_GMXAPI_OPTIONS
204 $CMAKE_REGRESSIONTEST_OPTIONS
205 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
206 2>&1 | tee cmakeLog.log
207 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
208 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
214 - $RELEASE_REGRESSIONTESTS
217 # Templates for configuration stage
219 gromacs:gcc-7:configure:
221 - .gromacs:base:configure
224 - .rules:merge-requests
225 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
227 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
228 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
229 COMPILER_MAJOR_VERSION: 7
231 gromacs:gcc-8-cuda-11.0:configure:
233 - .gromacs:base:configure
236 - .rules:merge-requests
237 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
239 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
240 COMPILER_MAJOR_VERSION: 8
242 gromacs:clang-TSAN:configure:
244 - .gromacs:base:configure
246 - .rules:merge-requests
247 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
249 COMPILER_MAJOR_VERSION: 8
250 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
252 gromacs:clang-8:configure:
254 - .gromacs:base:configure
256 - .rules:merge-requests
257 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
259 COMPILER_MAJOR_VERSION: 8
261 gromacs:clang-9-mpi:configure:
263 - .gromacs:base:configure
266 - .rules:merge-requests
267 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
269 COMPILER_MAJOR_VERSION: 9
270 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
272 gromacs:clang-static-analyzer:configure:
274 - .gromacs:base:configure
276 - .rules:merge-requests
277 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
279 CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
280 CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
281 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
283 gromacs:clang-ASAN:configure:
285 - .gromacs:base:configure
287 - .rules:merge-requests
288 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
290 COMPILER_MAJOR_VERSION: 8
291 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
293 gromacs:oneapi-2021.1-beta08-opencl:configure:
295 - .gromacs:base:configure
298 - .rules:merge-requests
299 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
301 COMPILER_MAJOR_VERSION: 2021
303 # Necessary to override gitlab default 'set -e' which breaks Intel's
306 - source /opt/intel/oneapi/setvars.sh
308 gromacs:clang-UBSAN:configure:
310 - .gromacs:base:configure
312 - .rules:merge-requests
313 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
315 COMPILER_MAJOR_VERSION: 8
316 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
318 gromacs:gcc-8-cuda-11.0:release:configure:
320 - .gromacs:base:release:configure
324 - .rules:nightly-only-for-release
325 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
327 COMPILER_MAJOR_VERSION: 8
328 RELEASE_BUILD_DIR: release-builds-gcc
329 CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
330 CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
331 CMAKE_REGRESSIONTEST_OPTIONS: ""
334 - regressiontests:package
335 - prepare-release-version
337 gromacs:gcc-7:release:configure:
339 - .gromacs:base:release:configure
342 - .rules:nightly-only-for-release
343 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
345 COMPILER_MAJOR_VERSION: 7
346 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
347 RELEASE_BUILD_DIR: release-builds-gcc
348 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
351 - regressiontests:package
352 - prepare-release-version
354 gromacs:clang-9:release:configure:
356 - .gromacs:base:release:configure
359 - .rules:nightly-only-for-release
360 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
362 COMPILER_MAJOR_VERSION: 9
363 RELEASE_BUILD_DIR: release-builds-clang
364 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
365 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
368 - regressiontests:package
369 - prepare-release-version
371 gromacs:clang-8-cuda-10.1:release:configure:
373 - .gromacs:base:release:configure
376 - .rules:nightly-only-for-release
377 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
379 COMPILER_MAJOR_VERSION: 8
380 RELEASE_BUILD_DIR: release-builds-clang
381 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
383 gromacs:oneapi-2021.1-beta08-opencl:release:configure:
385 - .gromacs:base:release:configure
388 - .rules:nightly-only-for-release
389 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
391 COMPILER_MAJOR_VERSION: 2021
392 RELEASE_BUILD_DIR: release-builds-oneapi
394 # Necessary to override gitlab default 'set -e' which breaks Intel's
397 - source /opt/intel/oneapi/setvars.sh
399 # Jobs running during build stage
405 - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
406 - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
407 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
408 | grep -v "CMake" | tee buildErrors.log || true
409 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
410 - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
411 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
412 - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
420 .gromacs:static-analyzer-build:
424 - scan-build -o scan_html cmake --build . -- -j8 2>&1 | tee buildLogFile.log
425 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
426 | grep -v "CMake" | tee buildErrors.log || true
427 - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
428 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
433 - $BUILD_DIR/scan_html
438 - .gromacs:base:build
439 - .before_script:default
441 - .rules:merge-requests
442 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
444 - job: gromacs:gcc-7:configure
447 gromacs:gcc-8-cuda-11.0:build:
450 - .gromacs:base:build
451 - .before_script:default
453 - .rules:merge-requests
454 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
456 - job: gromacs:gcc-8-cuda-11.0:configure
458 gromacs:clang-TSAN:build:
461 - .gromacs:base:build
464 - .rules:merge-requests
465 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
467 - job: gromacs:clang-TSAN:configure
469 gromacs:clang-ASAN:build:
472 - .gromacs:base:build
475 - .rules:merge-requests
476 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
480 - job: gromacs:clang-ASAN:configure
482 gromacs:clang-UBSAN:build:
485 - .gromacs:base:build
488 - .rules:merge-requests
489 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
493 - job: gromacs:clang-UBSAN:configure
495 gromacs:clang-static-analyzer:build:
498 - .gromacs:static-analyzer-build
501 - .rules:merge-requests
502 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
506 - job: gromacs:clang-static-analyzer:configure
508 gromacs:clang-8:build:
511 - .gromacs:base:build
512 - .before_script:default
514 - .rules:merge-requests
515 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
517 - job: gromacs:clang-8:configure
519 gromacs:oneapi-2021.1-beta08-opencl:build:
522 - .gromacs:base:build
524 - .before_script:default
525 - .rules:merge-requests
526 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
528 - job: gromacs:oneapi-2021.1-beta08-opencl:configure
530 # Necessary to override gitlab default 'set -e' which breaks Intel's
533 - source /opt/intel/oneapi/setvars.sh
535 gromacs:clang-9-mpi:build:
538 - .gromacs:base:build
539 - .before_script:default
541 - .rules:merge-requests
542 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
544 - job: gromacs:clang-9-mpi:configure
546 gromacs:gcc-8-cuda-11.0:release:build:
549 - .gromacs:base:build
550 - .before_script:default
552 - .rules:nightly-only-for-release
555 BUILD_DIR: release-builds-gcc
556 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
558 - job: gromacs:gcc-8-cuda-11.0:release:configure
560 gromacs:gcc-7:release:build:
563 - .gromacs:base:build
564 - .before_script:default
566 - .rules:nightly-only-for-release
569 BUILD_DIR: release-builds-gcc
570 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
572 - job: gromacs:gcc-7:release:configure
574 gromacs:clang-9:release:build:
577 - .gromacs:base:build
578 - .before_script:default
580 - .rules:nightly-only-for-release
583 BUILD_DIR: release-builds-clang
584 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
586 - job: gromacs:clang-9:release:configure
588 gromacs:clang-8-cuda-10.1:release:build:
591 - .gromacs:base:build
592 - .before_script:default
594 - .rules:nightly-only-for-release
597 BUILD_DIR: release-builds-clang
598 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
600 - job: gromacs:clang-8-cuda-10.1:release:configure
602 gromacs:oneapi-2021.1-beta08-opencl:release:build:
605 - .gromacs:base:build
608 - .before_script:default
610 - .rules:nightly-only-for-release
613 BUILD_DIR: release-builds-oneapi
614 COMPILER_MAJOR_VERSION: 2021
615 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
617 - job: gromacs:oneapi-2021.1-beta08-opencl:release:configure
619 # Necessary to override gitlab default 'set -e' which breaks Intel's
622 - source /opt/intel/oneapi/setvars.sh
624 # Jobs running during test stage
634 CTEST_RUN_MODE: "ExperimentalTest"
637 - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
638 # Needed to run MPI enabled code in the docker images, until we set up different users
639 - export OMPI_ALLOW_RUN_AS_ROOT=1
640 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
641 - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
642 # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
643 - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
644 if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
645 echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
646 export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
649 - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
652 - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
653 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
654 ctestLog.log | tee ctestErrors.log
655 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
656 - if [ -s ctestErrors.log ] ; then
657 echo "Error during running ctest";
663 junit: $BUILD_DIR/JUnitTestResults.xml
670 .gromacs:base:regressiontest:
674 KUBERNETES_CPU_LIMIT: 4
675 KUBERNETES_CPU_REQUEST: 4
676 KUBERNETES_MEMORY_REQUEST: 4Gi
677 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
678 REGRESSIONTEST_OMP_RANK_NUMBER: 2
679 REGRESSIONTEST_PME_RANK_NUMBER: 1
680 REGRESSIONTEST_MPI_RUN_COMMAND: ""
681 REGRESSIONTEST_DOUBLE: ""
682 REGRESSIONTEST_PARALLEL: "-nt"
688 - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
689 - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
690 # Needed to run MPI enabled code in the docker images, until we set up different users
691 - export OMPI_ALLOW_RUN_AS_ROOT=1
692 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
693 - tar xzf gmx-regressiontests.tar.gz
694 - source $INSTALL_DIR/bin/GMXRC
696 - perl gmxtest.pl $REGRESSIONTEST_PARALLEL $REGRESSIONTEST_TOTAL_RANK_NUMBER -ntomp $REGRESSIONTEST_OMP_RANK_NUMBER -npme $REGRESSIONTEST_PME_RANK_NUMBER $REGRESSIONTEST_DOUBLE $REGRESSIONTEST_MPI_RUN_COMMAND -xml all
699 - regressiontests/gmxtest.xml
706 - .rules:merge-requests
707 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
709 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
710 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
711 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
715 - job: gromacs:gcc-7:build
717 gromacs:gcc-8-cuda-11.0:test:
720 - .rules:merge-requests
721 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
723 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
724 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
728 - job: gromacs:gcc-8-cuda-11.0:build
730 gromacs:clang-8:test:
733 - .rules:merge-requests
734 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
736 - job: gromacs:clang-8:build
738 gromacs:clang-TSAN:test:
741 - .rules:merge-requests
742 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
744 - job: gromacs:clang-TSAN:build
746 gromacs:clang-ASAN:test:
750 - .rules:merge-requests
751 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
753 CTEST_RUN_MODE: "ExperimentalMemCheck"
757 - job: gromacs:clang-ASAN:build
759 gromacs:clang-UBSAN:test:
763 - .rules:merge-requests
764 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
768 - job: gromacs:clang-UBSAN:build
770 gromacs:oneapi-2021.1-beta08-opencl:test:
773 - .rules:merge-requests
774 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
776 - job: gromacs:oneapi-2021.1-beta08-opencl:build
778 # Necessary to override gitlab default 'set -e' which breaks Intel's
781 - source /opt/intel/oneapi/setvars.sh
783 gromacs:clang-9-mpi:test:
786 - .rules:merge-requests
787 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
791 - job: gromacs:clang-9-mpi:build
793 gromacs:gcc-7:regressiontest:
795 - .gromacs:base:regressiontest
796 - .rules:merge-requests
797 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
799 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
800 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
801 REGRESSIONTEST_PME_RANK_NUMBER: 0
802 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
803 REGRESSIONTEST_OMP_RANK_NUMBER: 1
804 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
808 - job: gromacs:gcc-7:build
809 - job: regressiontests:prepare
811 gromacs:gcc-8-cuda-11.0:regressiontest:
813 - .gromacs:base:regressiontest
814 - .rules:merge-requests
815 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
817 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
818 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
819 REGRESSIONTEST_PME_RANK_NUMBER: 0
820 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
821 REGRESSIONTEST_OMP_RANK_NUMBER: 1
825 - job: gromacs:gcc-8-cuda-11.0:build
826 - job: regressiontests:prepare
828 gromacs:clang-8:regressiontest:
830 - .gromacs:base:regressiontest
831 - .rules:merge-requests
832 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
836 - job: gromacs:clang-8:build
837 - job: regressiontests:prepare
839 gromacs:clang-TSAN:regressiontest:
841 - .gromacs:base:regressiontest
842 - .rules:merge-requests
843 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
847 - job: gromacs:clang-TSAN:build
848 - job: regressiontests:prepare
850 gromacs:clang-ASAN:regressiontest:
852 - .gromacs:base:regressiontest
854 - .rules:merge-requests
855 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
859 - job: gromacs:clang-ASAN:build
860 - job: regressiontests:prepare
862 gromacs:clang-9:regressiontest:
864 - .gromacs:base:regressiontest
865 - .rules:merge-requests
866 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
868 REGRESSIONTEST_DOUBLE: "-double"
869 REGRESSIONTEST_PARALLEL: "-np"
873 - job: gromacs:clang-9-mpi:build
874 - job: regressiontests:prepare
876 gromacs:oneapi-2021.1-beta08-opencl:regressiontest:
878 - .gromacs:base:regressiontest
879 - .rules:merge-requests
880 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
882 - job: gromacs:oneapi-2021.1-beta08-opencl:build
883 - job: regressiontests:prepare
885 # Necessary to override gitlab default 'set -e' which breaks Intel's
888 - source /opt/intel/oneapi/setvars.sh
890 gromacs:gcc-8-cuda-11.0:release:test:
893 - .rules:nightly-only-for-release
895 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
897 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
898 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
899 BUILD_DIR: release-builds-gcc
903 - job: gromacs:gcc-8-cuda-11.0:release:configure
904 - job: gromacs:gcc-8-cuda-11.0:release:build
906 gromacs:gcc-7:release:test:
909 - .rules:nightly-only-for-release
911 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
913 BUILD_DIR: release-builds-gcc
914 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
915 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
916 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
920 - job: gromacs:gcc-7:release:configure
921 - job: gromacs:gcc-7:release:build
923 gromacs:clang-9:release:test:
926 - .rules:nightly-only-for-release
928 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
930 BUILD_DIR: release-builds-clang
932 - job: gromacs:clang-9:release:configure
933 - job: gromacs:clang-9:release:build
935 gromacs:clang-8-cuda-10.1:release:test:
938 - .rules:nightly-only-for-release
940 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
942 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
943 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
944 BUILD_DIR: release-builds-clang
948 - job: gromacs:clang-8-cuda-10.1:release:configure
949 - job: gromacs:clang-8-cuda-10.1:release:build
951 gromacs:oneapi-2021.1-beta08-opencl:release:test:
954 - .rules:nightly-only-for-release
956 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
958 BUILD_DIR: release-builds-oneapi
960 - job: gromacs:oneapi-2021.1-beta08-opencl:release:configure
961 - job: gromacs:oneapi-2021.1-beta08-opencl:release:build
963 # Necessary to override gitlab default 'set -e' which breaks Intel's
966 - source /opt/intel/oneapi/setvars.sh
968 gromacs:gcc-7:release:regressiontest:
970 - .gromacs:base:regressiontest
971 - .rules:nightly-only-for-release
973 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
975 BUILD_DIR: release-builds-gcc
976 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
977 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
978 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
982 - job: gromacs:gcc-7:release:build
983 - job: regressiontests:package
985 gromacs:clang-9:release:regressiontest:
987 - .gromacs:base:regressiontest
988 - .rules:nightly-only-for-release
990 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
992 BUILD_DIR: release-builds-clang
993 REGRESSIONTEST_DOUBLE: "-double"
994 REGRESSIONTEST_PARALLEL: "-np"
998 - job: gromacs:clang-9:release:build
999 - job: regressiontests:package
1001 gromacs:clang-8-cuda-10.1:release:regressiontest:
1003 - .gromacs:base:regressiontest
1004 - .rules:nightly-only-for-release
1005 stage: release-tests
1006 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1008 BUILD_DIR: release-builds-clang
1009 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1010 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1011 REGRESSIONTEST_PME_RANK_NUMBER: 0
1012 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1013 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1017 - job: gromacs:clang-8-cuda-10.1:release:build
1018 - job: regressiontests:package
1020 gromacs:oneapi-2021.1-beta08-opencl:release:regressiontest:
1022 - .gromacs:base:regressiontest
1023 - .rules:nightly-only-for-release
1024 stage: release-tests
1025 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta08-master
1027 BUILD_DIR: release-builds-oneapi
1028 REGRESSIONTEST_PME_RANK_NUMBER: 0
1029 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1030 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1032 - job: gromacs:oneapi-2021.1-beta08-opencl:release:build
1033 - job: regressiontests:package
1035 # Necessary to override gitlab default 'set -e' which breaks Intel's
1038 - source /opt/intel/oneapi/setvars.sh