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/ci-ubuntu-18.04-llvm-9
13 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
14 KUBERNETES_CPU_LIMIT: 8
15 KUBERNETES_CPU_REQUEST: 4
16 KUBERNETES_MEMORY_REQUEST: 8Gi
17 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
18 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
19 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
20 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
21 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
22 CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
23 COMPILER_MAJOR_VERSION: 9
24 BUILD_DIR: simple-build
26 - CMAKE=${CMAKE:-$(which cmake)}
27 - echo $CMAKE_COMPILER_SCRIPT
28 - echo $CMAKE_EXTRA_OPTIONS
29 - echo $CMAKE_SIMD_OPTIONS
30 - echo $CMAKE_GPU_OPTIONS
31 - echo $CMAKE_MPI_OPTIONS
32 - echo $CMAKE_PRECISION_OPTIONS
33 - echo $CMAKE_BUILD_TYPE_OPTIONS
34 - echo $CMAKE_GMXAPI_OPTIONS
35 - if [[ -d $BUILD_DIR ]] ; then
36 echo "Cleaning up build directory" ;
37 rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
39 echo "Preparing new build directory" ;
44 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
45 $CMAKE_COMPILER_SCRIPT
49 $CMAKE_PRECISION_OPTIONS
50 $CMAKE_BUILD_TYPE_OPTIONS
53 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
54 2>&1 | tee cmakeLog.log
55 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
56 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
57 - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
58 - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
59 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
60 | grep -v "CMake" | tee buildErrors.log || true
61 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
62 - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log
63 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
64 - ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
65 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
66 ctestLog.log | tee ctestErrors.log
67 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > JUnitTestResults.xml
68 - if [ -s ctestErrors.log ] ; then
69 echo "Error during running ctest";
75 junit: $BUILD_DIR/JUnitTestResults.xml
81 # Jobs running in first pre-build stage
83 .gromacs:base:configure:
86 stage: configure-build
89 KUBERNETES_CPU_LIMIT: 1
90 KUBERNETES_CPU_REQUEST: 1
91 KUBERNETES_MEMORY_REQUEST: 2Gi
92 CMAKE_COMPILER_SCRIPT: ""
93 CMAKE_EXTRA_OPTIONS: ""
94 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
95 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
96 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
97 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
98 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
100 - CMAKE=${CMAKE:-$(which cmake)}
101 - echo $CMAKE_COMPILER_SCRIPT
102 - echo $CMAKE_EXTRA_OPTIONS
103 - echo $CMAKE_SIMD_OPTIONS
104 - echo $CMAKE_GPU_OPTIONS
105 - echo $CMAKE_MPI_OPTIONS
106 - echo $CMAKE_PRECISION_OPTIONS
107 - echo $CMAKE_BUILD_TYPE_OPTIONS
108 - echo $CMAKE_GMXAPI_OPTIONS
109 - if [[ -d $BUILD_DIR ]] ; then
110 rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
112 echo "Preparing new build directory" ;
117 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
118 $CMAKE_COMPILER_SCRIPT
122 $CMAKE_PRECISION_OPTIONS
123 $CMAKE_BUILD_TYPE_OPTIONS
125 $CMAKE_GMXAPI_OPTIONS
126 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
127 2>&1 | tee cmakeLog.log
128 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
129 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
136 .gromacs:base:release:configure:
139 stage: release-configure
142 KUBERNETES_CPU_LIMIT: 1
143 KUBERNETES_CPU_REQUEST: 1
144 KUBERNETES_MEMORY_REQUEST: 2Gi
145 CMAKE_COMPILER_SCRIPT: ""
146 CMAKE_EXTRA_OPTIONS: ""
147 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
148 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
149 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
150 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
151 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
152 CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
153 RELEASE_BUILD_DIR: release-builds
154 RELEASE_SOURCE: release-source-from-tarball
155 RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
157 - CMAKE=${CMAKE:-$(which cmake)}
158 - VERSION=`cat version.json |
159 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
160 - if [[ $GROMACS_RELEASE != "true" ]] ; then
161 VERSION=$VERSION-dev ;
163 - SOURCENAME=gromacs-$VERSION
164 - SOURCETARBALL=$SOURCENAME.tar.gz
165 - REGTESTNAME=regressiontests-$VERSION
166 - REGTESTTARBALL=$REGTESTNAME.tar.gz
167 - echo "$SOURCETARBALL"
168 - echo "$REGTESTTARBALL"
169 - RELEASE_TARBALLS=release-tarballs
170 - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
171 - mv $SOURCETARBALL $RELEASE_TARBALLS
172 - mv $REGTESTTARBALL $RELEASE_TARBALLS
173 - cd $RELEASE_TARBALLS
174 # We rename the source and regressiontest directories
175 # to have names for them that don't change for different versions.
176 - tar -xf $SOURCETARBALL
177 - mv $SOURCENAME ../$RELEASE_SOURCE
178 - tar -xf $REGTESTTARBALL
179 - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
180 - rm $SOURCETARBALL $REGTESTTARBALL
182 - echo $CMAKE_COMPILER_SCRIPT
183 - echo $CMAKE_EXTRA_OPTIONS
184 - echo $CMAKE_SIMD_OPTIONS
185 - echo $CMAKE_GPU_OPTIONS
186 - echo $CMAKE_MPI_OPTIONS
187 - echo $CMAKE_PRECISION_OPTIONS
188 - echo $CMAKE_BUILD_TYPE_OPTIONS
189 - echo $CMAKE_GMXAPI_OPTIONS
190 - if [[ -d $RELEASE_BUILD_DIR ]] ; then
191 echo "Cleaning up build directory" ;
192 rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
194 echo "Preparing new build directory" ;
195 mkdir $RELEASE_BUILD_DIR ;
197 - cd $RELEASE_BUILD_DIR
198 - cmake ../$RELEASE_SOURCE/
199 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
200 $CMAKE_COMPILER_SCRIPT
204 $CMAKE_PRECISION_OPTIONS
205 $CMAKE_BUILD_TYPE_OPTIONS
207 $CMAKE_GMXAPI_OPTIONS
208 $CMAKE_REGRESSIONTEST_OPTIONS
209 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
210 2>&1 | tee cmakeLog.log
211 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
212 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
218 - $RELEASE_REGRESSIONTESTS
221 # Templates for configuration stage
223 gromacs:gcc-7:configure:
225 - .gromacs:base:configure
228 - .rules:merge-and-post-merge-acceptance
229 image: gromacs/ci-ubuntu-18.04-gcc-7
231 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
232 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
233 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
234 COMPILER_MAJOR_VERSION: 7
236 gromacs:gcc-8-cuda-11.0:configure:
238 - .gromacs:base:configure
241 - .rules:merge-and-post-merge-acceptance
242 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
244 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
245 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
246 COMPILER_MAJOR_VERSION: 8
248 gromacs:gcc-8-cuda-11.0:configureMPI:
250 - .gromacs:base:configure
254 - .rules:merge-and-post-merge-acceptance
255 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
257 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
258 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
259 COMPILER_MAJOR_VERSION: 8
261 gromacs:clang-TSAN:configure:
263 - .gromacs:base:configure
265 - .rules:merge-and-post-merge-acceptance
266 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
268 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
269 COMPILER_MAJOR_VERSION: 8
270 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
272 gromacs:clang-8:configure:
274 - .gromacs:base:configure
276 - .rules:merge-requests
277 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
279 COMPILER_MAJOR_VERSION: 8
281 gromacs:clang-9-mpi:configure:
283 - .gromacs:base:configure
286 - .rules:merge-requests
287 image: gromacs/ci-ubuntu-18.04-llvm-9
289 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
290 COMPILER_MAJOR_VERSION: 9
291 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
293 gromacs:clang-static-analyzer:configure:
295 - .gromacs:base:configure
297 - .rules:merge-requests
298 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
300 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
301 CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
302 CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
303 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
305 gromacs:clang-ASAN:configure:
307 - .gromacs:base:configure
309 - .rules:merge-requests
310 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
312 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
313 COMPILER_MAJOR_VERSION: 8
314 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
316 gromacs:oneapi-2021.1-beta09-opencl:configure:
318 - .gromacs:base:configure
321 - .rules:merge-requests
322 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
324 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
325 COMPILER_MAJOR_VERSION: 2021
327 gromacs:oneapi-2021.1-beta09-sycl:configure:
329 - .gromacs:base:configure
332 - .rules:merge-and-post-merge-acceptance
333 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
335 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
336 COMPILER_MAJOR_VERSION: 2021
338 gromacs:clang-UBSAN:configure:
340 - .gromacs:base:configure
342 - .rules:merge-and-post-merge-acceptance
343 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
345 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
346 COMPILER_MAJOR_VERSION: 8
347 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
349 gromacs:gcc-8-cuda-11.0:release:configure:
351 - .gromacs:base:release:configure
355 - .rules:nightly-only-for-release
356 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
358 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
359 COMPILER_MAJOR_VERSION: 8
360 RELEASE_BUILD_DIR: release-builds-gcc
361 CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
362 CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
363 CMAKE_REGRESSIONTEST_OPTIONS: ""
366 - regressiontests:package
367 - prepare-release-version
369 gromacs:gcc-7:release:configure:
371 - .gromacs:base:release:configure
374 - .rules:nightly-only-for-release
375 image: gromacs/ci-ubuntu-18.04-gcc-7
377 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
378 COMPILER_MAJOR_VERSION: 7
379 CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
380 RELEASE_BUILD_DIR: release-builds-gcc
381 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
384 - regressiontests:package
385 - prepare-release-version
387 gromacs:clang-9:release:configure:
389 - .gromacs:base:release:configure
392 - .rules:nightly-only-for-release
393 image: gromacs/ci-ubuntu-18.04-llvm-9
395 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
396 COMPILER_MAJOR_VERSION: 9
397 RELEASE_BUILD_DIR: release-builds-clang
398 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
399 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
402 - regressiontests:package
403 - prepare-release-version
405 gromacs:clang-8-cuda-10.1:release:configure:
407 - .gromacs:base:release:configure
410 - .rules:nightly-only-for-release
411 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
413 COMPILER_MAJOR_VERSION: 8
414 RELEASE_BUILD_DIR: release-builds-clang
415 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
417 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
419 - .gromacs:base:release:configure
422 - .rules:nightly-only-for-release
423 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
425 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
426 COMPILER_MAJOR_VERSION: 2021
427 RELEASE_BUILD_DIR: release-builds-oneapi
429 # Jobs running during build stage
434 - CMAKE=${CMAKE:-$(which cmake)}
436 - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
437 - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
438 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
439 | grep -v "CMake" | tee buildErrors.log || true
440 - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
441 - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log
442 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
443 - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
451 .gromacs:static-analyzer-build:
454 - CMAKE=${CMAKE:-$(which cmake)}
456 - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log
457 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
458 | grep -v "CMake" | tee buildErrors.log || true
459 - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
460 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
465 - $BUILD_DIR/scan_html
470 - .gromacs:base:build
471 - .before_script:default
473 - .rules:merge-and-post-merge-acceptance
474 image: gromacs/ci-ubuntu-18.04-gcc-7
476 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
478 - job: gromacs:gcc-7:configure
481 gromacs:gcc-8-cuda-11.0:build:
484 - .gromacs:base:build
485 - .before_script:default
487 - .rules:merge-and-post-merge-acceptance
488 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
490 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
492 - job: gromacs:gcc-8-cuda-11.0:configure
494 gromacs:gcc-8-cuda-11.0:buildMPI:
497 - .gromacs:base:build
498 - .before_script:default
500 - .rules:merge-and-post-merge-acceptance
501 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
503 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
505 - job: gromacs:gcc-8-cuda-11.0:configureMPI
507 gromacs:clang-TSAN:build:
510 - .gromacs:base:build
513 - .rules:merge-and-post-merge-acceptance
514 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
516 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
518 - job: gromacs:clang-TSAN:configure
520 gromacs:clang-ASAN:build:
523 - .gromacs:base:build
526 - .rules:merge-requests
527 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
529 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
533 - job: gromacs:clang-ASAN:configure
535 gromacs:clang-UBSAN:build:
538 - .gromacs:base:build
541 - .rules:merge-and-post-merge-acceptance
542 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
544 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
548 - job: gromacs:clang-UBSAN:configure
550 gromacs:clang-static-analyzer:build:
553 - .gromacs:static-analyzer-build
556 - .rules:merge-requests
557 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
559 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
563 - job: gromacs:clang-static-analyzer:configure
565 gromacs:clang-8:build:
568 - .gromacs:base:build
569 - .before_script:default
571 - .rules:merge-requests
572 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
574 - job: gromacs:clang-8:configure
576 gromacs:oneapi-2021.1-beta09-opencl:build:
579 - .gromacs:base:build
582 - .rules:merge-requests
583 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
585 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
587 - job: gromacs:oneapi-2021.1-beta09-opencl:configure
589 gromacs:oneapi-2021.1-beta09-sycl:build:
592 - .gromacs:base:build
595 - .rules:merge-and-post-merge-acceptance
596 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
598 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
600 - job: gromacs:oneapi-2021.1-beta09-sycl:configure
602 gromacs:clang-9-mpi:build:
605 - .gromacs:base:build
606 - .before_script:default
608 - .rules:merge-requests
609 image: gromacs/ci-ubuntu-18.04-llvm-9
611 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
613 - job: gromacs:clang-9-mpi:configure
615 gromacs:gcc-8-cuda-11.0:release:build:
618 - .gromacs:base:build
619 - .before_script:default
621 - .rules:nightly-only-for-release
624 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
625 BUILD_DIR: release-builds-gcc
626 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
628 - job: gromacs:gcc-8-cuda-11.0:release:configure
630 gromacs:gcc-7:release:build:
633 - .gromacs:base:build
634 - .before_script:default
636 - .rules:nightly-only-for-release
639 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
640 BUILD_DIR: release-builds-gcc
641 image: gromacs/ci-ubuntu-18.04-gcc-7
643 - job: gromacs:gcc-7:release:configure
645 gromacs:clang-9:release:build:
648 - .gromacs:base:build
649 - .before_script:default
651 - .rules:nightly-only-for-release
654 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
655 BUILD_DIR: release-builds-clang
656 image: gromacs/ci-ubuntu-18.04-llvm-9
658 - job: gromacs:clang-9:release:configure
660 gromacs:clang-8-cuda-10.1:release:build:
663 - .gromacs:base:build
664 - .before_script:default
666 - .rules:nightly-only-for-release
669 BUILD_DIR: release-builds-clang
670 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
672 - job: gromacs:clang-8-cuda-10.1:release:configure
674 gromacs:oneapi-2021.1-beta09-opencl:release:build:
677 - .gromacs:base:build
681 - .rules:nightly-only-for-release
684 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
685 BUILD_DIR: release-builds-oneapi
686 COMPILER_MAJOR_VERSION: 2021
687 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
689 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
691 # Jobs running during test stage
701 CTEST_RUN_MODE: "ExperimentalTest"
703 - CMAKE=${CMAKE:-$(which cmake)}
705 - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
706 # Needed to run MPI enabled code in the docker images, until we set up different users
707 - export OMPI_ALLOW_RUN_AS_ROOT=1
708 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
709 - 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"
710 # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
711 - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
712 if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
713 echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
714 export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
717 - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
720 - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
721 - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
722 ctestLog.log | tee ctestErrors.log
723 - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
724 - if [ -s ctestErrors.log ] ; then
725 echo "Error during running ctest";
731 junit: $BUILD_DIR/JUnitTestResults.xml
738 .gromacs:base:regressiontest:
742 KUBERNETES_CPU_LIMIT: 4
743 KUBERNETES_CPU_REQUEST: 4
744 KUBERNETES_MEMORY_REQUEST: 4Gi
745 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
746 REGRESSIONTEST_OMP_RANK_NUMBER: 2
747 REGRESSIONTEST_PME_RANK_NUMBER: 1
748 REGRESSIONTEST_MPI_RUN_COMMAND: ""
749 REGRESSIONTEST_DOUBLE: ""
750 REGRESSIONTEST_PARALLEL: "-nt"
756 - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
757 - 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"
758 # Needed to run MPI enabled code in the docker images, until we set up different users
759 - export OMPI_ALLOW_RUN_AS_ROOT=1
760 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
761 - tar xzf gmx-regressiontests.tar.gz
762 - source $INSTALL_DIR/bin/GMXRC
764 - 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
767 - regressiontests/gmxtest.xml
774 - .rules:merge-requests
775 image: gromacs/ci-ubuntu-18.04-gcc-7
777 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
778 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
779 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
780 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
784 - job: gromacs:gcc-7:build
786 gromacs:gcc-8-cuda-11.0:test:
789 - .rules:merge-requests
790 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
792 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
793 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
794 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
798 - job: gromacs:gcc-8-cuda-11.0:build
800 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
803 - .rules:post-merge-acceptance
804 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
806 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
807 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
808 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
810 GMX_GPU_PME_PP_COMMS: 1
811 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
815 - job: gromacs:gcc-8-cuda-11.0:build
817 gromacs:clang-8:test:
820 - .rules:merge-requests
821 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
823 - job: gromacs:clang-8:build
825 gromacs:clang-TSAN:test:
828 - .rules:post-merge-acceptance
829 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
831 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
833 - job: gromacs:clang-TSAN:build
835 gromacs:clang-ASAN:test:
839 - .rules:merge-requests
840 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
842 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
843 CTEST_RUN_MODE: "ExperimentalMemCheck"
847 - job: gromacs:clang-ASAN:build
849 gromacs:clang-UBSAN:test:
853 - .rules:post-merge-acceptance
854 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
856 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
860 - job: gromacs:clang-UBSAN:build
862 gromacs:oneapi-2021.1-beta09-opencl:test:
866 - .rules:merge-requests
867 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
869 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
871 - job: gromacs:oneapi-2021.1-beta09-opencl:build
873 gromacs:oneapi-2021.1-beta09-sycl:test:
877 - .rules:post-merge-acceptance
878 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
880 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
882 - job: gromacs:oneapi-2021.1-beta09-sycl:build
884 gromacs:clang-9-mpi:test:
887 - .rules:merge-requests
888 image: gromacs/ci-ubuntu-18.04-llvm-9
890 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
894 - job: gromacs:clang-9-mpi:build
896 gromacs:gcc-7:regressiontest:
898 - .gromacs:base:regressiontest
899 - .rules:post-merge-acceptance
900 image: gromacs/ci-ubuntu-18.04-gcc-7
902 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
903 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
904 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
905 REGRESSIONTEST_PME_RANK_NUMBER: 0
906 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
907 REGRESSIONTEST_OMP_RANK_NUMBER: 1
908 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
912 - job: gromacs:gcc-7:build
913 - job: regressiontests:prepare
915 gromacs:gcc-8-cuda-11.0:regressiontest:
917 - .gromacs:base:regressiontest
918 - .rules:merge-requests
919 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
921 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
922 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
923 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
924 REGRESSIONTEST_PME_RANK_NUMBER: 0
925 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
926 REGRESSIONTEST_OMP_RANK_NUMBER: 1
930 - job: gromacs:gcc-8-cuda-11.0:build
931 - job: regressiontests:prepare
933 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
935 - .gromacs:base:regressiontest
936 - .rules:post-merge-acceptance
937 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
939 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
940 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
941 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
942 REGRESSIONTEST_PME_RANK_NUMBER: 0
943 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
944 REGRESSIONTEST_OMP_RANK_NUMBER: 1
946 GMX_GPU_PME_PP_COMMS: 1
947 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
951 - job: gromacs:gcc-8-cuda-11.0:build
952 - job: regressiontests:prepare
959 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
961 - .gromacs:base:regressiontest
962 - .rules:post-merge-acceptance
963 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
965 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
966 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
967 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
968 REGRESSIONTEST_PME_RANK_NUMBER: 0
969 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
970 REGRESSIONTEST_OMP_RANK_NUMBER: 1
971 REGRESSIONTEST_PARALLEL: "-np"
973 GMX_GPU_PME_PP_COMMS: 1
974 GMX_FORCE_UPDATE_DEFAULT_GPU: 1
978 - job: gromacs:gcc-8-cuda-11.0:buildMPI
979 - job: regressiontests:prepare
986 gromacs:clang-8:regressiontest:
988 - .gromacs:base:regressiontest
989 - .rules:merge-requests
990 image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
994 - job: gromacs:clang-8:build
995 - job: regressiontests:prepare
997 gromacs:clang-TSAN:regressiontest:
999 - .gromacs:base:regressiontest
1000 - .rules:post-merge-acceptance
1001 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1003 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1007 - job: gromacs:clang-TSAN:build
1008 - job: regressiontests:prepare
1010 gromacs:clang-ASAN:regressiontest:
1012 - .gromacs:base:regressiontest
1014 - .rules:merge-requests
1015 image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1017 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1021 - job: gromacs:clang-ASAN:build
1022 - job: regressiontests:prepare
1024 gromacs:clang-9:regressiontest:
1026 - .gromacs:base:regressiontest
1027 - .rules:merge-requests
1028 image: gromacs/ci-ubuntu-18.04-llvm-9
1030 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1031 REGRESSIONTEST_DOUBLE: "-double"
1032 REGRESSIONTEST_PARALLEL: "-np"
1036 - job: gromacs:clang-9-mpi:build
1037 - job: regressiontests:prepare
1039 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
1041 - .gromacs:base:regressiontest
1043 - .rules:merge-requests
1044 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1046 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1048 - job: gromacs:oneapi-2021.1-beta09-opencl:build
1049 - job: regressiontests:prepare
1051 gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
1053 - .gromacs:base:regressiontest
1055 - .rules:post-merge-acceptance
1056 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1058 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1060 - job: gromacs:oneapi-2021.1-beta09-sycl:build
1061 - job: regressiontests:prepare
1063 gromacs:gcc-8-cuda-11.0:release:test:
1065 - .gromacs:base:test
1066 - .rules:nightly-only-for-release
1067 stage: release-tests
1068 image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
1070 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1071 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1072 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1073 BUILD_DIR: release-builds-gcc
1077 - job: gromacs:gcc-8-cuda-11.0:release:configure
1078 - job: gromacs:gcc-8-cuda-11.0:release:build
1080 gromacs:gcc-7:release:test:
1082 - .gromacs:base:test
1083 - .rules:nightly-only-for-release
1084 stage: release-tests
1085 image: gromacs/ci-ubuntu-18.04-gcc-7
1087 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1088 BUILD_DIR: release-builds-gcc
1089 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1090 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1091 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1095 - job: gromacs:gcc-7:release:configure
1096 - job: gromacs:gcc-7:release:build
1098 gromacs:clang-9:release:test:
1100 - .gromacs:base:test
1101 - .rules:nightly-only-for-release
1102 stage: release-tests
1103 image: gromacs/ci-ubuntu-18.04-llvm-9
1105 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1106 BUILD_DIR: release-builds-clang
1108 - job: gromacs:clang-9:release:configure
1109 - job: gromacs:clang-9:release:build
1111 gromacs:clang-8-cuda-10.1:release:test:
1113 - .gromacs:base:test
1114 - .rules:nightly-only-for-release
1115 stage: release-tests
1116 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1118 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1119 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1120 BUILD_DIR: release-builds-clang
1124 - job: gromacs:clang-8-cuda-10.1:release:configure
1125 - job: gromacs:clang-8-cuda-10.1:release:build
1127 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1129 - .gromacs:base:test
1131 - .rules:nightly-only-for-release
1132 stage: release-tests
1133 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1135 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1136 BUILD_DIR: release-builds-oneapi
1138 - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1139 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1141 gromacs:gcc-7:release:regressiontest:
1143 - .gromacs:base:regressiontest
1144 - .rules:nightly-only-for-release
1145 stage: release-tests
1146 image: gromacs/ci-ubuntu-18.04-gcc-7
1148 CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1149 BUILD_DIR: release-builds-gcc
1150 KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1151 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1152 LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1156 - job: gromacs:gcc-7:release:build
1157 - job: regressiontests:package
1159 gromacs:clang-9:release:regressiontest:
1161 - .gromacs:base:regressiontest
1162 - .rules:nightly-only-for-release
1163 stage: release-tests
1164 image: gromacs/ci-ubuntu-18.04-llvm-9
1166 CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1167 BUILD_DIR: release-builds-clang
1168 REGRESSIONTEST_DOUBLE: "-double"
1169 REGRESSIONTEST_PARALLEL: "-np"
1173 - job: gromacs:clang-9:release:build
1174 - job: regressiontests:package
1176 gromacs:clang-8-cuda-10.1:release:regressiontest:
1178 - .gromacs:base:regressiontest
1179 - .rules:nightly-only-for-release
1180 stage: release-tests
1181 image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1183 BUILD_DIR: release-builds-clang
1184 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1185 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1186 REGRESSIONTEST_PME_RANK_NUMBER: 0
1187 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1188 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1192 - job: gromacs:clang-8-cuda-10.1:release:build
1193 - job: regressiontests:package
1195 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1197 - .gromacs:base:regressiontest
1199 - .rules:nightly-only-for-release
1200 stage: release-tests
1201 image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1203 CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1204 BUILD_DIR: release-builds-oneapi
1205 REGRESSIONTEST_PME_RANK_NUMBER: 0
1206 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1207 REGRESSIONTEST_OMP_RANK_NUMBER: 1
1209 - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1210 - job: regressiontests:package