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:clang-UBSAN:configure:
317 - .gromacs:base:configure
319 - .rules:merge-and-post-merge-acceptance
320 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
322 COMPILER_MAJOR_VERSION: 8
323 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
325 gromacs:gcc-8-cuda-11.0:release:configure:
327 - .gromacs:base:release:configure
331 - .rules:nightly-only-for-release
332 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
334 COMPILER_MAJOR_VERSION: 8
335 RELEASE_BUILD_DIR: release-builds-gcc
336 CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
337 CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
338 CMAKE_REGRESSIONTEST_OPTIONS: ""
341 - regressiontests:package
342 - prepare-release-version
344 gromacs:gcc-7:release:configure:
346 - .gromacs:base:release:configure
349 - .rules:nightly-only-for-release
350 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
352 COMPILER_MAJOR_VERSION: 7
353 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
354 RELEASE_BUILD_DIR: release-builds-gcc
355 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
358 - regressiontests:package
359 - prepare-release-version
361 gromacs:clang-9:release:configure:
363 - .gromacs:base:release:configure
366 - .rules:nightly-only-for-release
367 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
369 COMPILER_MAJOR_VERSION: 9
370 RELEASE_BUILD_DIR: release-builds-clang
371 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
372 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
375 - regressiontests:package
376 - prepare-release-version
378 gromacs:clang-8-cuda-10.1:release:configure:
380 - .gromacs:base:release:configure
383 - .rules:nightly-only-for-release
384 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
386 COMPILER_MAJOR_VERSION: 8
387 RELEASE_BUILD_DIR: release-builds-clang
388 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
390 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
392 - .gromacs:base:release:configure
395 - .rules:nightly-only-for-release
396 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
398 COMPILER_MAJOR_VERSION: 2021
399 RELEASE_BUILD_DIR: release-builds-oneapi
401 # Jobs running during build stage
407 - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
408 - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
409 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
410 | grep -v "CMake" | tee buildErrors.log || true
411 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
412 - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
413 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
414 - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
422 .gromacs:static-analyzer-build:
426 - scan-build -o scan_html cmake --build . -- -j8 2>&1 | tee buildLogFile.log
427 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
428 | grep -v "CMake" | tee buildErrors.log || true
429 - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
430 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
435 - $BUILD_DIR/scan_html
440 - .gromacs:base:build
441 - .before_script:default
443 - .rules:merge-and-post-merge-acceptance
444 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
446 - job: gromacs:gcc-7:configure
449 gromacs:gcc-8-cuda-11.0:build:
452 - .gromacs:base:build
453 - .before_script:default
455 - .rules:merge-and-post-merge-acceptance
456 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
458 - job: gromacs:gcc-8-cuda-11.0:configure
460 gromacs:gcc-8-cuda-11.0:buildMPI:
463 - .gromacs:base:build
464 - .before_script:default
466 - .rules:merge-and-post-merge-acceptance
467 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
469 - job: gromacs:gcc-8-cuda-11.0:configureMPI
471 gromacs:clang-TSAN:build:
474 - .gromacs:base:build
477 - .rules:merge-and-post-merge-acceptance
478 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
480 - job: gromacs:clang-TSAN:configure
482 gromacs:clang-ASAN:build:
485 - .gromacs:base:build
488 - .rules:merge-requests
489 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
493 - job: gromacs:clang-ASAN:configure
495 gromacs:clang-UBSAN:build:
498 - .gromacs:base:build
501 - .rules:merge-and-post-merge-acceptance
502 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
506 - job: gromacs:clang-UBSAN:configure
508 gromacs:clang-static-analyzer:build:
511 - .gromacs:static-analyzer-build
514 - .rules:merge-requests
515 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
519 - job: gromacs:clang-static-analyzer:configure
521 gromacs:clang-8:build:
524 - .gromacs:base:build
525 - .before_script:default
527 - .rules:merge-requests
528 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
530 - job: gromacs:clang-8:configure
532 gromacs:oneapi-2021.1-beta09-opencl:build:
535 - .gromacs:base:build
538 - .rules:merge-requests
539 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
541 - job: gromacs:oneapi-2021.1-beta09-opencl:configure
543 gromacs:clang-9-mpi:build:
546 - .gromacs:base:build
547 - .before_script:default
549 - .rules:merge-requests
550 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
552 - job: gromacs:clang-9-mpi:configure
554 gromacs:gcc-8-cuda-11.0:release:build:
557 - .gromacs:base:build
558 - .before_script:default
560 - .rules:nightly-only-for-release
563 BUILD_DIR: release-builds-gcc
564 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
566 - job: gromacs:gcc-8-cuda-11.0:release:configure
568 gromacs:gcc-7:release:build:
571 - .gromacs:base:build
572 - .before_script:default
574 - .rules:nightly-only-for-release
577 BUILD_DIR: release-builds-gcc
578 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
580 - job: gromacs:gcc-7:release:configure
582 gromacs:clang-9:release:build:
585 - .gromacs:base:build
586 - .before_script:default
588 - .rules:nightly-only-for-release
591 BUILD_DIR: release-builds-clang
592 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
594 - job: gromacs:clang-9:release:configure
596 gromacs:clang-8-cuda-10.1:release:build:
599 - .gromacs:base:build
600 - .before_script:default
602 - .rules:nightly-only-for-release
605 BUILD_DIR: release-builds-clang
606 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
608 - job: gromacs:clang-8-cuda-10.1:release:configure
610 gromacs:oneapi-2021.1-beta09-opencl:release:build:
613 - .gromacs:base:build
617 - .rules:nightly-only-for-release
620 BUILD_DIR: release-builds-oneapi
621 COMPILER_MAJOR_VERSION: 2021
622 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
624 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
626 # Jobs running during test stage
636 CTEST_RUN_MODE: "ExperimentalTest"
639 - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
640 # Needed to run MPI enabled code in the docker images, until we set up different users
641 - export OMPI_ALLOW_RUN_AS_ROOT=1
642 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
643 - 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"
644 # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
645 - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
646 if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
647 echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
648 export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
651 - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
654 - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
655 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
656 ctestLog.log | tee ctestErrors.log
657 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
658 - if [ -s ctestErrors.log ] ; then
659 echo "Error during running ctest";
665 junit: $BUILD_DIR/JUnitTestResults.xml
672 .gromacs:base:regressiontest:
676 KUBERNETES_CPU_LIMIT: 4
677 KUBERNETES_CPU_REQUEST: 4
678 KUBERNETES_MEMORY_REQUEST: 4Gi
679 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
680 REGRESSIONTEST_OMP_RANK_NUMBER: 2
681 REGRESSIONTEST_PME_RANK_NUMBER: 1
682 REGRESSIONTEST_MPI_RUN_COMMAND: ""
683 REGRESSIONTEST_DOUBLE: ""
684 REGRESSIONTEST_PARALLEL: "-nt"
690 - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
691 - 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"
692 # Needed to run MPI enabled code in the docker images, until we set up different users
693 - export OMPI_ALLOW_RUN_AS_ROOT=1
694 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
695 - tar xzf gmx-regressiontests.tar.gz
696 - source $INSTALL_DIR/bin/GMXRC
698 - 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
701 - regressiontests/gmxtest.xml
708 - .rules:merge-requests
709 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
711 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
712 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
713 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
717 - job: gromacs:gcc-7:build
719 gromacs:gcc-8-cuda-11.0:test:
722 - .rules:merge-requests
723 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
725 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
726 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
730 - job: gromacs:gcc-8-cuda-11.0:build
732 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
735 - .rules:post-merge-acceptance
736 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
738 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
739 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
741 GMX_GPU_PME_PP_COMMS: 1
742 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
746 - job: gromacs:gcc-8-cuda-11.0:build
748 gromacs:clang-8:test:
751 - .rules:merge-requests
752 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
754 - job: gromacs:clang-8:build
756 gromacs:clang-TSAN:test:
759 - .rules:post-merge-acceptance
760 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
762 - job: gromacs:clang-TSAN:build
764 gromacs:clang-ASAN:test:
768 - .rules:merge-requests
769 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
771 CTEST_RUN_MODE: "ExperimentalMemCheck"
775 - job: gromacs:clang-ASAN:build
777 gromacs:clang-UBSAN:test:
781 - .rules:post-merge-acceptance
782 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
786 - job: gromacs:clang-UBSAN:build
788 gromacs:oneapi-2021.1-beta09-opencl:test:
792 - .rules:merge-requests
793 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
795 - job: gromacs:oneapi-2021.1-beta09-opencl:build
797 gromacs:clang-9-mpi:test:
800 - .rules:merge-requests
801 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
805 - job: gromacs:clang-9-mpi:build
807 gromacs:gcc-7:regressiontest:
809 - .gromacs:base:regressiontest
810 - .rules:post-merge-acceptance
811 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
813 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
814 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
815 REGRESSIONTEST_PME_RANK_NUMBER: 0
816 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
817 REGRESSIONTEST_OMP_RANK_NUMBER: 1
818 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
822 - job: gromacs:gcc-7:build
823 - job: regressiontests:prepare
825 gromacs:gcc-8-cuda-11.0:regressiontest:
827 - .gromacs:base:regressiontest
828 - .rules:merge-requests
829 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
831 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
832 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
833 REGRESSIONTEST_PME_RANK_NUMBER: 0
834 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
835 REGRESSIONTEST_OMP_RANK_NUMBER: 1
839 - job: gromacs:gcc-8-cuda-11.0:build
840 - job: regressiontests:prepare
842 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
844 - .gromacs:base:regressiontest
845 - .rules:post-merge-acceptance
846 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
848 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
849 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
850 REGRESSIONTEST_PME_RANK_NUMBER: 0
851 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
852 REGRESSIONTEST_OMP_RANK_NUMBER: 1
854 GMX_GPU_PME_PP_COMMS: 1
855 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
859 - job: gromacs:gcc-8-cuda-11.0:build
860 - job: regressiontests:prepare
867 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
869 - .gromacs:base:regressiontest
870 - .rules:post-merge-acceptance
871 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
873 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
874 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
875 REGRESSIONTEST_PME_RANK_NUMBER: 0
876 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
877 REGRESSIONTEST_OMP_RANK_NUMBER: 1
878 REGRESSIONTEST_PARALLEL: "-np"
880 GMX_GPU_PME_PP_COMMS: 1
881 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
885 - job: gromacs:gcc-8-cuda-11.0:buildMPI
886 - job: regressiontests:prepare
893 gromacs:clang-8:regressiontest:
895 - .gromacs:base:regressiontest
896 - .rules:merge-requests
897 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
901 - job: gromacs:clang-8:build
902 - job: regressiontests:prepare
904 gromacs:clang-TSAN:regressiontest:
906 - .gromacs:base:regressiontest
907 - .rules:post-merge-acceptance
908 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
912 - job: gromacs:clang-TSAN:build
913 - job: regressiontests:prepare
915 gromacs:clang-ASAN:regressiontest:
917 - .gromacs:base:regressiontest
919 - .rules:merge-requests
920 image: gromacs/cmake-3.13.0-llvm-8-tsan-master
924 - job: gromacs:clang-ASAN:build
925 - job: regressiontests:prepare
927 gromacs:clang-9:regressiontest:
929 - .gromacs:base:regressiontest
930 - .rules:merge-requests
931 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
933 REGRESSIONTEST_DOUBLE: "-double"
934 REGRESSIONTEST_PARALLEL: "-np"
938 - job: gromacs:clang-9-mpi:build
939 - job: regressiontests:prepare
941 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
943 - .gromacs:base:regressiontest
945 - .rules:merge-requests
946 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
948 - job: gromacs:oneapi-2021.1-beta09-opencl:build
949 - job: regressiontests:prepare
951 gromacs:gcc-8-cuda-11.0:release:test:
954 - .rules:nightly-only-for-release
956 image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
958 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
959 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
960 BUILD_DIR: release-builds-gcc
964 - job: gromacs:gcc-8-cuda-11.0:release:configure
965 - job: gromacs:gcc-8-cuda-11.0:release:build
967 gromacs:gcc-7:release:test:
970 - .rules:nightly-only-for-release
972 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
974 BUILD_DIR: release-builds-gcc
975 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
976 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
977 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
981 - job: gromacs:gcc-7:release:configure
982 - job: gromacs:gcc-7:release:build
984 gromacs:clang-9:release:test:
987 - .rules:nightly-only-for-release
989 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
991 BUILD_DIR: release-builds-clang
993 - job: gromacs:clang-9:release:configure
994 - job: gromacs:clang-9:release:build
996 gromacs:clang-8-cuda-10.1:release:test:
999 - .rules:nightly-only-for-release
1000 stage: release-tests
1001 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1003 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1004 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1005 BUILD_DIR: release-builds-clang
1009 - job: gromacs:clang-8-cuda-10.1:release:configure
1010 - job: gromacs:clang-8-cuda-10.1:release:build
1012 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1014 - .gromacs:base:test
1016 - .rules:nightly-only-for-release
1017 stage: release-tests
1018 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1020 BUILD_DIR: release-builds-oneapi
1022 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1023 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1025 gromacs:gcc-7:release:regressiontest:
1027 - .gromacs:base:regressiontest
1028 - .rules:nightly-only-for-release
1029 stage: release-tests
1030 image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
1032 BUILD_DIR: release-builds-gcc
1033 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1034 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1035 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1039 - job: gromacs:gcc-7:release:build
1040 - job: regressiontests:package
1042 gromacs:clang-9:release:regressiontest:
1044 - .gromacs:base:regressiontest
1045 - .rules:nightly-only-for-release
1046 stage: release-tests
1047 image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
1049 BUILD_DIR: release-builds-clang
1050 REGRESSIONTEST_DOUBLE: "-double"
1051 REGRESSIONTEST_PARALLEL: "-np"
1055 - job: gromacs:clang-9:release:build
1056 - job: regressiontests:package
1058 gromacs:clang-8-cuda-10.1:release:regressiontest:
1060 - .gromacs:base:regressiontest
1061 - .rules:nightly-only-for-release
1062 stage: release-tests
1063 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1065 BUILD_DIR: release-builds-clang
1066 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1067 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1068 REGRESSIONTEST_PME_RANK_NUMBER: 0
1069 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1070 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1074 - job: gromacs:clang-8-cuda-10.1:release:build
1075 - job: regressiontests:package
1077 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1079 - .gromacs:base:regressiontest
1081 - .rules:nightly-only-for-release
1082 stage: release-tests
1083 image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1085 BUILD_DIR: release-builds-oneapi
1086 REGRESSIONTEST_PME_RANK_NUMBER: 0
1087 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1088 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1090 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1091 - job: regressiontests:package