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-and-post-merge-acceptance
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-and-post-merge-acceptance
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:gcc-8-cuda-11.0:configureMPI:
244 - .gromacs:base:configure
248 - .rules:merge-and-post-merge-acceptance
249 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
251 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
252 COMPILER_MAJOR_VERSION: 8
254 gromacs:clang-TSAN:configure:
256 - .gromacs:base:configure
258 - .rules:merge-and-post-merge-acceptance
259 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
261 COMPILER_MAJOR_VERSION: 8
262 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
264 gromacs:clang-8:configure:
266 - .gromacs:base:configure
268 - .rules:merge-requests
269 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
271 COMPILER_MAJOR_VERSION: 8
273 gromacs:clang-9-mpi:configure:
275 - .gromacs:base:configure
278 - .rules:merge-requests
279 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
281 COMPILER_MAJOR_VERSION: 9
282 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
284 gromacs:clang-static-analyzer:configure:
286 - .gromacs:base:configure
288 - .rules:merge-requests
289 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
291 CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
292 CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
293 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
295 gromacs:clang-ASAN:configure:
297 - .gromacs:base:configure
299 - .rules:merge-requests
300 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
302 COMPILER_MAJOR_VERSION: 8
303 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
305 gromacs:oneapi-2021.1-beta09-opencl:configure:
307 - .gromacs:base:configure
310 - .rules:merge-requests
311 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
313 COMPILER_MAJOR_VERSION: 2021
315 gromacs:oneapi-2021.1-beta09-sycl:configure:
317 - .gromacs:base:configure
320 - .rules:merge-and-post-merge-acceptance
321 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
323 COMPILER_MAJOR_VERSION: 2021
325 gromacs:clang-UBSAN:configure:
327 - .gromacs:base:configure
329 - .rules:merge-and-post-merge-acceptance
330 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
332 COMPILER_MAJOR_VERSION: 8
333 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
335 gromacs:gcc-8-cuda-11.0:release:configure:
337 - .gromacs:base:release:configure
341 - .rules:nightly-only-for-release
342 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
344 COMPILER_MAJOR_VERSION: 8
345 RELEASE_BUILD_DIR: release-builds-gcc
346 CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
347 CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
348 CMAKE_REGRESSIONTEST_OPTIONS: ""
351 - regressiontests:package
352 - prepare-release-version
354 gromacs:gcc-7:release:configure:
356 - .gromacs:base:release:configure
359 - .rules:nightly-only-for-release
360 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
362 COMPILER_MAJOR_VERSION: 7
363 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
364 RELEASE_BUILD_DIR: release-builds-gcc
365 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
368 - regressiontests:package
369 - prepare-release-version
371 gromacs:clang-9:release:configure:
373 - .gromacs:base:release:configure
376 - .rules:nightly-only-for-release
377 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
379 COMPILER_MAJOR_VERSION: 9
380 RELEASE_BUILD_DIR: release-builds-clang
381 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
382 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
385 - regressiontests:package
386 - prepare-release-version
388 gromacs:clang-8-cuda-10.1:release:configure:
390 - .gromacs:base:release:configure
393 - .rules:nightly-only-for-release
394 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
396 COMPILER_MAJOR_VERSION: 8
397 RELEASE_BUILD_DIR: release-builds-clang
398 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
400 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
402 - .gromacs:base:release:configure
405 - .rules:nightly-only-for-release
406 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
408 COMPILER_MAJOR_VERSION: 2021
409 RELEASE_BUILD_DIR: release-builds-oneapi
411 # Jobs running during build stage
417 - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
418 - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
419 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
420 | grep -v "CMake" | tee buildErrors.log || true
421 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
422 - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
423 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
424 - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
432 .gromacs:static-analyzer-build:
436 - scan-build -o scan_html cmake --build . -- -j8 2>&1 | tee buildLogFile.log
437 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
438 | grep -v "CMake" | tee buildErrors.log || true
439 - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
440 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
445 - $BUILD_DIR/scan_html
450 - .gromacs:base:build
451 - .before_script:default
453 - .rules:merge-and-post-merge-acceptance
454 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
456 - job: gromacs:gcc-7:configure
459 gromacs:gcc-8-cuda-11.0:build:
462 - .gromacs:base:build
463 - .before_script:default
465 - .rules:merge-and-post-merge-acceptance
466 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
468 - job: gromacs:gcc-8-cuda-11.0:configure
470 gromacs:gcc-8-cuda-11.0:buildMPI:
473 - .gromacs:base:build
474 - .before_script:default
476 - .rules:merge-and-post-merge-acceptance
477 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
479 - job: gromacs:gcc-8-cuda-11.0:configureMPI
481 gromacs:clang-TSAN:build:
484 - .gromacs:base:build
487 - .rules:merge-and-post-merge-acceptance
488 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
490 - job: gromacs:clang-TSAN:configure
492 gromacs:clang-ASAN:build:
495 - .gromacs:base:build
498 - .rules:merge-requests
499 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
503 - job: gromacs:clang-ASAN:configure
505 gromacs:clang-UBSAN:build:
508 - .gromacs:base:build
511 - .rules:merge-and-post-merge-acceptance
512 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
516 - job: gromacs:clang-UBSAN:configure
518 gromacs:clang-static-analyzer:build:
521 - .gromacs:static-analyzer-build
524 - .rules:merge-requests
525 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
529 - job: gromacs:clang-static-analyzer:configure
531 gromacs:clang-8:build:
534 - .gromacs:base:build
535 - .before_script:default
537 - .rules:merge-requests
538 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
540 - job: gromacs:clang-8:configure
542 gromacs:oneapi-2021.1-beta09-opencl:build:
545 - .gromacs:base:build
548 - .rules:merge-requests
549 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
551 - job: gromacs:oneapi-2021.1-beta09-opencl:configure
553 gromacs:oneapi-2021.1-beta09-sycl:build:
556 - .gromacs:base:build
559 - .rules:merge-and-post-merge-acceptance
560 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
562 - job: gromacs:oneapi-2021.1-beta09-sycl:configure
564 gromacs:clang-9-mpi:build:
567 - .gromacs:base:build
568 - .before_script:default
570 - .rules:merge-requests
571 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
573 - job: gromacs:clang-9-mpi:configure
575 gromacs:gcc-8-cuda-11.0:release:build:
578 - .gromacs:base:build
579 - .before_script:default
581 - .rules:nightly-only-for-release
584 BUILD_DIR: release-builds-gcc
585 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
587 - job: gromacs:gcc-8-cuda-11.0:release:configure
589 gromacs:gcc-7:release:build:
592 - .gromacs:base:build
593 - .before_script:default
595 - .rules:nightly-only-for-release
598 BUILD_DIR: release-builds-gcc
599 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
601 - job: gromacs:gcc-7:release:configure
603 gromacs:clang-9:release:build:
606 - .gromacs:base:build
607 - .before_script:default
609 - .rules:nightly-only-for-release
612 BUILD_DIR: release-builds-clang
613 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
615 - job: gromacs:clang-9:release:configure
617 gromacs:clang-8-cuda-10.1:release:build:
620 - .gromacs:base:build
621 - .before_script:default
623 - .rules:nightly-only-for-release
626 BUILD_DIR: release-builds-clang
627 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
629 - job: gromacs:clang-8-cuda-10.1:release:configure
631 gromacs:oneapi-2021.1-beta09-opencl:release:build:
634 - .gromacs:base:build
638 - .rules:nightly-only-for-release
641 BUILD_DIR: release-builds-oneapi
642 COMPILER_MAJOR_VERSION: 2021
643 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
645 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
647 # Jobs running during test stage
657 CTEST_RUN_MODE: "ExperimentalTest"
660 - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
661 # Needed to run MPI enabled code in the docker images, until we set up different users
662 - export OMPI_ALLOW_RUN_AS_ROOT=1
663 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
664 - 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"
665 # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
666 - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
667 if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
668 echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
669 export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
672 - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
675 - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
676 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
677 ctestLog.log | tee ctestErrors.log
678 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
679 - if [ -s ctestErrors.log ] ; then
680 echo "Error during running ctest";
686 junit: $BUILD_DIR/JUnitTestResults.xml
693 .gromacs:base:regressiontest:
697 KUBERNETES_CPU_LIMIT: 4
698 KUBERNETES_CPU_REQUEST: 4
699 KUBERNETES_MEMORY_REQUEST: 4Gi
700 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
701 REGRESSIONTEST_OMP_RANK_NUMBER: 2
702 REGRESSIONTEST_PME_RANK_NUMBER: 1
703 REGRESSIONTEST_MPI_RUN_COMMAND: ""
704 REGRESSIONTEST_DOUBLE: ""
705 REGRESSIONTEST_PARALLEL: "-nt"
711 - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
712 - 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"
713 # Needed to run MPI enabled code in the docker images, until we set up different users
714 - export OMPI_ALLOW_RUN_AS_ROOT=1
715 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
716 - tar xzf gmx-regressiontests.tar.gz
717 - source $INSTALL_DIR/bin/GMXRC
719 - 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
722 - regressiontests/gmxtest.xml
729 - .rules:merge-requests
730 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
732 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
733 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
734 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
738 - job: gromacs:gcc-7:build
740 gromacs:gcc-8-cuda-11.0:test:
743 - .rules:merge-requests
744 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
746 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
747 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
751 - job: gromacs:gcc-8-cuda-11.0:build
753 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
756 - .rules:post-merge-acceptance
757 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
759 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
760 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
762 GMX_GPU_PME_PP_COMMS: 1
763 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
767 - job: gromacs:gcc-8-cuda-11.0:build
769 gromacs:clang-8:test:
772 - .rules:merge-requests
773 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
775 - job: gromacs:clang-8:build
777 gromacs:clang-TSAN:test:
780 - .rules:post-merge-acceptance
781 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
783 - job: gromacs:clang-TSAN:build
785 gromacs:clang-ASAN:test:
789 - .rules:merge-requests
790 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
792 CTEST_RUN_MODE: "ExperimentalMemCheck"
796 - job: gromacs:clang-ASAN:build
798 gromacs:clang-UBSAN:test:
802 - .rules:post-merge-acceptance
803 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
807 - job: gromacs:clang-UBSAN:build
809 gromacs:oneapi-2021.1-beta09-opencl:test:
813 - .rules:merge-requests
814 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
816 - job: gromacs:oneapi-2021.1-beta09-opencl:build
818 gromacs:oneapi-2021.1-beta09-sycl:test:
822 - .rules:post-merge-acceptance
823 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
825 - job: gromacs:oneapi-2021.1-beta09-sycl:build
827 gromacs:clang-9-mpi:test:
830 - .rules:merge-requests
831 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
835 - job: gromacs:clang-9-mpi:build
837 gromacs:gcc-7:regressiontest:
839 - .gromacs:base:regressiontest
840 - .rules:post-merge-acceptance
841 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
843 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
844 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
845 REGRESSIONTEST_PME_RANK_NUMBER: 0
846 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
847 REGRESSIONTEST_OMP_RANK_NUMBER: 1
848 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
852 - job: gromacs:gcc-7:build
853 - job: regressiontests:prepare
855 gromacs:gcc-8-cuda-11.0:regressiontest:
857 - .gromacs:base:regressiontest
858 - .rules:merge-requests
859 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
861 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
862 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
863 REGRESSIONTEST_PME_RANK_NUMBER: 0
864 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
865 REGRESSIONTEST_OMP_RANK_NUMBER: 1
869 - job: gromacs:gcc-8-cuda-11.0:build
870 - job: regressiontests:prepare
872 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
874 - .gromacs:base:regressiontest
875 - .rules:post-merge-acceptance
876 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
878 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
879 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
880 REGRESSIONTEST_PME_RANK_NUMBER: 0
881 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
882 REGRESSIONTEST_OMP_RANK_NUMBER: 1
884 GMX_GPU_PME_PP_COMMS: 1
885 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
889 - job: gromacs:gcc-8-cuda-11.0:build
890 - job: regressiontests:prepare
897 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
899 - .gromacs:base:regressiontest
900 - .rules:post-merge-acceptance
901 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
903 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
904 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
905 REGRESSIONTEST_PME_RANK_NUMBER: 0
906 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
907 REGRESSIONTEST_OMP_RANK_NUMBER: 1
908 REGRESSIONTEST_PARALLEL: "-np"
910 GMX_GPU_PME_PP_COMMS: 1
911 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
915 - job: gromacs:gcc-8-cuda-11.0:buildMPI
916 - job: regressiontests:prepare
923 gromacs:clang-8:regressiontest:
925 - .gromacs:base:regressiontest
926 - .rules:merge-requests
927 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
931 - job: gromacs:clang-8:build
932 - job: regressiontests:prepare
934 gromacs:clang-TSAN:regressiontest:
936 - .gromacs:base:regressiontest
937 - .rules:post-merge-acceptance
938 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
942 - job: gromacs:clang-TSAN:build
943 - job: regressiontests:prepare
945 gromacs:clang-ASAN:regressiontest:
947 - .gromacs:base:regressiontest
949 - .rules:merge-requests
950 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
954 - job: gromacs:clang-ASAN:build
955 - job: regressiontests:prepare
957 gromacs:clang-9:regressiontest:
959 - .gromacs:base:regressiontest
960 - .rules:merge-requests
961 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
963 REGRESSIONTEST_DOUBLE: "-double"
964 REGRESSIONTEST_PARALLEL: "-np"
968 - job: gromacs:clang-9-mpi:build
969 - job: regressiontests:prepare
971 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
973 - .gromacs:base:regressiontest
975 - .rules:merge-requests
976 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
978 - job: gromacs:oneapi-2021.1-beta09-opencl:build
979 - job: regressiontests:prepare
981 gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
983 - .gromacs:base:regressiontest
985 - .rules:post-merge-acceptance
986 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
988 - job: gromacs:oneapi-2021.1-beta09-sycl:build
989 - job: regressiontests:prepare
991 gromacs:gcc-8-cuda-11.0:release:test:
994 - .rules:nightly-only-for-release
996 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
998 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
999 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1000 BUILD_DIR: release-builds-gcc
1004 - job: gromacs:gcc-8-cuda-11.0:release:configure
1005 - job: gromacs:gcc-8-cuda-11.0:release:build
1007 gromacs:gcc-7:release:test:
1009 - .gromacs:base:test
1010 - .rules:nightly-only-for-release
1011 stage: release-tests
1012 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
1014 BUILD_DIR: release-builds-gcc
1015 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1016 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1017 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1021 - job: gromacs:gcc-7:release:configure
1022 - job: gromacs:gcc-7:release:build
1024 gromacs:clang-9:release:test:
1026 - .gromacs:base:test
1027 - .rules:nightly-only-for-release
1028 stage: release-tests
1029 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
1031 BUILD_DIR: release-builds-clang
1033 - job: gromacs:clang-9:release:configure
1034 - job: gromacs:clang-9:release:build
1036 gromacs:clang-8-cuda-10.1:release:test:
1038 - .gromacs:base:test
1039 - .rules:nightly-only-for-release
1040 stage: release-tests
1041 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1043 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1044 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1045 BUILD_DIR: release-builds-clang
1049 - job: gromacs:clang-8-cuda-10.1:release:configure
1050 - job: gromacs:clang-8-cuda-10.1:release:build
1052 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1054 - .gromacs:base:test
1056 - .rules:nightly-only-for-release
1057 stage: release-tests
1058 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1060 BUILD_DIR: release-builds-oneapi
1062 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1063 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1065 gromacs:gcc-7:release:regressiontest:
1067 - .gromacs:base:regressiontest
1068 - .rules:nightly-only-for-release
1069 stage: release-tests
1070 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
1072 BUILD_DIR: release-builds-gcc
1073 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1074 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1075 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1079 - job: gromacs:gcc-7:release:build
1080 - job: regressiontests:package
1082 gromacs:clang-9:release:regressiontest:
1084 - .gromacs:base:regressiontest
1085 - .rules:nightly-only-for-release
1086 stage: release-tests
1087 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
1089 BUILD_DIR: release-builds-clang
1090 REGRESSIONTEST_DOUBLE: "-double"
1091 REGRESSIONTEST_PARALLEL: "-np"
1095 - job: gromacs:clang-9:release:build
1096 - job: regressiontests:package
1098 gromacs:clang-8-cuda-10.1:release:regressiontest:
1100 - .gromacs:base:regressiontest
1101 - .rules:nightly-only-for-release
1102 stage: release-tests
1103 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1105 BUILD_DIR: release-builds-clang
1106 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1107 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1108 REGRESSIONTEST_PME_RANK_NUMBER: 0
1109 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1110 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1114 - job: gromacs:clang-8-cuda-10.1:release:build
1115 - job: regressiontests:package
1117 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1119 - .gromacs:base:regressiontest
1121 - .rules:nightly-only-for-release
1122 stage: release-tests
1123 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1125 BUILD_DIR: release-builds-oneapi
1126 REGRESSIONTEST_PME_RANK_NUMBER: 0
1127 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1128 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1130 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1131 - job: regressiontests:package