Revert c++-17 features that are not supported by CUDA build
[alexxy/gromacs.git] / admin / gitlab-ci / gromacs.gitlab-ci.yml
1 # Build, test, and install variously configured GROMACS installations.
2
3 # Initial build that always needs to pass before follow-up stages run
4 simple-build:
5   extends:
6     - .variables:default
7     - .use-ccache
8     - .use-clang:base
9     - .rules:basic-push
10   stage: pre-build
11   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
12   variables:
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=None"
21     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
22     COMPILER_MAJOR_VERSION: 9
23     BUILD_DIR: simple-build
24   script:
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 ;
36       else
37       echo "Preparing new build directory" ;
38       mkdir $BUILD_DIR ;
39       fi
40     - cd $BUILD_DIR
41     - cmake ..
42       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
43       $CMAKE_COMPILER_SCRIPT
44       $CMAKE_EXTRA_OPTIONS
45       $CMAKE_SIMD_OPTIONS
46       $CMAKE_MPI_OPTIONS
47       $CMAKE_PRECISION_OPTIONS
48       $CMAKE_BUILD_TYPE_OPTIONS
49       $CMAKE_GPU_OPTIONS
50       $CMAKE_GMXAPI_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";
68       exit 1;
69       fi
70     - cd ..
71   artifacts:
72     reports:
73       junit: $BUILD_DIR/JUnitTestResults.xml
74     paths:
75       - $BUILD_DIR/*log
76     when: always
77     expire_in: 1 week
78
79 # Jobs running in first pre-build stage
80
81 .gromacs:base:configure:
82   extends:
83     - .variables:default
84   stage: configure-build
85   cache: {}
86   variables:
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=None"
97   script:
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 ;
108       else
109       echo "Preparing new build directory" ;
110       mkdir $BUILD_DIR ;
111       fi
112     - cd $BUILD_DIR
113     - cmake ..
114       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
115       $CMAKE_COMPILER_SCRIPT
116       $CMAKE_EXTRA_OPTIONS
117       $CMAKE_SIMD_OPTIONS
118       $CMAKE_MPI_OPTIONS
119       $CMAKE_PRECISION_OPTIONS
120       $CMAKE_BUILD_TYPE_OPTIONS
121       $CMAKE_GPU_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
127     - cd ..
128   artifacts:
129     when: always
130     paths:
131       - $BUILD_DIR
132
133 .gromacs:base:release:configure:
134   extends:
135     - .variables:default
136   stage: release-configure
137   cache: {}
138   variables:
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=None"
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
153   script:
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 ;
158       fi
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
177     - cd ..
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 ;
189       else
190       echo "Preparing new build directory" ;
191       mkdir $RELEASE_BUILD_DIR ;
192       fi
193     - cd $RELEASE_BUILD_DIR
194     - cmake ../$RELEASE_SOURCE/
195       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
196       $CMAKE_COMPILER_SCRIPT
197       $CMAKE_EXTRA_OPTIONS
198       $CMAKE_SIMD_OPTIONS
199       $CMAKE_MPI_OPTIONS
200       $CMAKE_PRECISION_OPTIONS
201       $CMAKE_BUILD_TYPE_OPTIONS
202       $CMAKE_GPU_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
209     - cd ..
210   artifacts:
211     when: always
212     paths:
213       - $RELEASE_BUILD_DIR
214       - $RELEASE_REGRESSIONTESTS
215       - $RELEASE_SOURCE
216
217 # Templates for configuration stage
218
219 gromacs:gcc-7:configure:
220   extends:
221     - .gromacs:base:configure
222     - .use-gcc:base
223     - .use-opencl
224     - .rules:merge-requests
225   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
226   variables:
227     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
228     CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
229     COMPILER_MAJOR_VERSION: 7
230
231 gromacs:gcc-8-cuda-10.1:configure:
232   extends:
233     - .gromacs:base:configure
234     - .use-gcc:base
235     - .use-cuda
236     - .rules:merge-requests
237   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
238   variables:
239     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
240     COMPILER_MAJOR_VERSION: 8
241
242 gromacs:clang-TSAN:configure:
243   extends:
244     - .gromacs:base:configure
245     - .use-clang:base
246     - .rules:merge-requests
247   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
248   variables:
249     COMPILER_MAJOR_VERSION: 8
250     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
251
252 gromacs:clang-8:configure:
253   extends:
254     - .gromacs:base:configure
255     - .use-clang:base
256     - .rules:merge-requests
257   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
258   variables:
259     COMPILER_MAJOR_VERSION: 8
260
261 gromacs:clang-9-mpi:configure:
262   extends:
263    - .gromacs:base:configure
264    - .use-clang:base
265    - .use-mpi
266    - .rules:merge-requests
267   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
268   variables:
269     COMPILER_MAJOR_VERSION: 9
270     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
271
272 gromacs:clang-static-analyzer:configure:
273   extends:
274     - .gromacs:base:configure
275     - .use-clang:base
276     - .rules:merge-requests
277   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
278   variables:
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"
282
283 gromacs:clang-ASAN:configure:
284   extends:
285     - .gromacs:base:configure
286     - .use-clang:base
287     - .rules:merge-requests
288   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
289   variables:
290     COMPILER_MAJOR_VERSION: 8
291     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
292
293 gromacs:gcc-8-cuda-10.1:release:configure:
294   extends:
295     - .gromacs:base:release:configure
296     - .use-gcc:base
297     - .use-mpi
298     - .use-cuda
299     - .rules:nightly-only-for-release
300   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
301   variables:
302     COMPILER_MAJOR_VERSION: 8
303     RELEASE_BUILD_DIR: release-builds-gcc
304     CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
305     CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithDebug"
306     CMAKE_REGRESSIONTEST_OPTIONS: ""
307   dependencies:
308     - archive:package
309     - regressiontests:package
310     - prepare-release-version
311
312 gromacs:gcc-7:release:configure:
313   extends:
314     - .gromacs:base:release:configure
315     - .use-gcc:base
316     - .rules:nightly-only-for-release
317   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
318   variables:
319     COMPILER_MAJOR_VERSION: 7
320     RELEASE_BUILD_DIR: release-builds-gcc
321     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
322   dependencies:
323     - archive:package
324     - regressiontests:package
325     - prepare-release-version
326
327 gromacs:clang-9:release:configure:
328   extends:
329     - .gromacs:base:release:configure
330     - .use-clang:base
331     - .use-mpi
332     - .rules:nightly-only-for-release
333   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
334   variables:
335     COMPILER_MAJOR_VERSION: 9
336     RELEASE_BUILD_DIR: release-builds-clang
337     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
338     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
339   dependencies:
340     - archive:package
341     - regressiontests:package
342     - prepare-release-version
343
344 gromacs:clang-8-cuda-10.1:release:configure:
345   extends:
346     - .gromacs:base:release:configure
347     - .use-clang:base
348     - .use-cuda
349     - .rules:nightly-only-for-release
350   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi:master
351   variables:
352     COMPILER_MAJOR_VERSION: 8
353     RELEASE_BUILD_DIR: release-builds-clang
354     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithDebug"
355
356 # Jobs running during build stage
357
358 .gromacs:base:build:
359   stage: build
360   script:
361     - cd $BUILD_DIR
362     - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
363     - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
364     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
365       | grep -v "CMake" | tee buildErrors.log || true
366     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
367     - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
368     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
369     - cd ..
370   artifacts:
371     when: always
372     paths:
373       - $BUILD_DIR
374       - $INSTALL_DIR/
375
376 .gromacs:static-analyzer-build:
377   stage: build
378   script:
379     - cd $BUILD_DIR
380     - scan-build -o scan_html cmake --build . -- -j8 2>&1 | tee buildLogFile.log
381     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
382       | grep -v "CMake" | tee buildErrors.log || true
383     - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
384     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
385     - cd ..
386   artifacts:
387     when: always
388     paths:
389       - $BUILD_DIR/scan_html
390
391 gromacs:gcc-7:build:
392   extends:
393     - .variables:default
394     - .gromacs:base:build
395     - .before_script:default
396     - .use-ccache
397     - .rules:merge-requests
398   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
399   needs:
400     - job: gromacs:gcc-7:configure
401       artifacts: true
402
403 gromacs:gcc-8-cuda-10.1:build:
404   extends:
405     - .variables:default
406     - .gromacs:base:build
407     - .before_script:default
408     - .use-ccache
409     - .rules:merge-requests
410   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
411   needs:
412     - job: gromacs:gcc-8-cuda-10.1:configure
413
414 gromacs:clang-TSAN:build:
415   extends:
416     - .variables:default
417     - .gromacs:base:build
418     - .use-clang:base
419     - .use-ccache
420     - .rules:merge-requests
421   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
422   needs:
423     - job: gromacs:clang-TSAN:configure
424
425 gromacs:clang-ASAN:build:
426   extends:
427     - .variables:default
428     - .gromacs:base:build
429     - .use-clang:base
430     - .use-ccache
431     - .rules:merge-requests
432   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
433   tags:
434     - k8s-scilifelab
435   needs:
436     - job: gromacs:clang-ASAN:configure
437
438 gromacs:clang-static-analyzer:build:
439   extends:
440     - .variables:default
441     - .gromacs:static-analyzer-build
442     - .use-clang:base
443     - .use-ccache
444     - .rules:merge-requests
445   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
446   tags:
447     - k8s-scilifelab
448   needs:
449     - job: gromacs:clang-static-analyzer:configure
450
451 gromacs:clang-8:build:
452   extends:
453     - .variables:default
454     - .gromacs:base:build
455     - .before_script:default
456     - .use-ccache
457     - .rules:merge-requests
458   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
459   needs:
460     - job: gromacs:clang-8:configure
461
462 gromacs:clang-9-mpi:build:
463   extends:
464     - .variables:default
465     - .gromacs:base:build
466     - .before_script:default
467     - .use-ccache
468     - .rules:merge-requests
469   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
470   needs:
471     - job: gromacs:clang-9-mpi:configure
472
473 gromacs:gcc-8-cuda-10.1:release:build:
474   extends:
475     - .variables:default  
476     - .gromacs:base:build
477     - .before_script:default
478     - .use-ccache
479     - .rules:nightly-only-for-release
480   stage: release-build
481   variables:
482     BUILD_DIR: release-builds-gcc
483   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
484   needs:
485     - job: gromacs:gcc-8-cuda-10.1:release:configure
486
487 gromacs:gcc-7:release:build:
488   extends:
489     - .variables:default
490     - .gromacs:base:build
491     - .before_script:default
492     - .use-ccache
493     - .rules:nightly-only-for-release
494   stage: release-build
495   variables:
496     BUILD_DIR: release-builds-gcc
497   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
498   needs:
499     - job: gromacs:gcc-7:release:configure
500
501 gromacs:clang-9:release:build:
502   extends:
503     - .variables:default
504     - .gromacs:base:build
505     - .before_script:default
506     - .use-ccache
507     - .rules:nightly-only-for-release
508   stage: release-build
509   variables:
510     BUILD_DIR: release-builds-clang
511   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
512   needs:
513     - job: gromacs:clang-9:release:configure
514
515 gromacs:clang-8-cuda-10.1:release:build:
516   extends:
517     - .variables:default
518     - .gromacs:base:build
519     - .before_script:default
520     - .use-ccache
521     - .rules:nightly-only-for-release
522   stage: release-build
523   variables:
524     BUILD_DIR: release-builds-clang
525   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi:master
526   needs:
527     - job: gromacs:clang-8-cuda-10.1:release:configure
528
529 # Jobs running during test stage
530
531 .gromacs:base:test:
532   extends:
533     - .variables:default
534   stage: test
535   cache: {}
536   retry:
537     max: 1
538   variables:
539     CTEST_RUN_MODE: "ExperimentalTest"
540   script:
541     - cd $BUILD_DIR
542     # Needed to run MPI enabled code in the docker images, until we set up different users
543     - export OMPI_ALLOW_RUN_AS_ROOT=1
544     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
545     - 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"
546     - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
547     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
548       ctestLog.log | tee ctestErrors.log
549     - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
550     - if [ -s ctestErrors.log ] ; then
551       echo "Error during running ctest";
552       exit 1;
553       fi
554     - cd ..
555   artifacts:
556     reports:
557       junit: $BUILD_DIR/JUnitTestResults.xml
558     paths:
559       - $BUILD_DIR/Testing
560       - $BUILD_DIR/tests
561     when: always
562     expire_in: 1 week
563
564 .gromacs:base:regressiontest:
565   extends:
566     - .variables:default
567   variables:
568     KUBERNETES_CPU_LIMIT: 4
569     KUBERNETES_CPU_REQUEST: 4
570     KUBERNETES_MEMORY_REQUEST: 4Gi
571     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
572     REGRESSIONTEST_OMP_RANK_NUMBER: 2
573     REGRESSIONTEST_PME_RANK_NUMBER: 1
574     REGRESSIONTEST_MPI_RUN_COMMAND: ""
575     REGRESSIONTEST_DOUBLE: ""
576     REGRESSIONTEST_PARALLEL: "-nt"
577   stage: test
578   cache: {}
579   retry:
580     max: 1
581   script:
582     - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
583     - 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"
584     # Needed to run MPI enabled code in the docker images, until we set up different users
585     - export OMPI_ALLOW_RUN_AS_ROOT=1
586     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
587     - tar xzf gmx-regressiontests.tar.gz
588     - source $INSTALL_DIR/bin/GMXRC
589     - cd regressiontests
590     - 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
591   artifacts:
592     paths:
593       - regressiontests/gmxtest.xml
594     when: always
595     expire_in: 1 week
596
597 gromacs:gcc-7:test:
598   extends:
599     - .gromacs:base:test
600     - .rules:merge-requests
601   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
602   variables:
603     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
604     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
605   tags:
606     - k8s-scilifelab
607   needs:
608     - job: gromacs:gcc-7:build
609
610 gromacs:gcc-8-cuda-10.1:test:
611   extends:
612     - .gromacs:base:test
613     - .rules:merge-requests
614   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
615   variables:
616     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
617     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
618   tags:
619     - k8s-scilifelab
620   needs:
621     - job: gromacs:gcc-8-cuda-10.1:build
622
623 gromacs:clang-8:test:
624   extends:
625     - .gromacs:base:test
626     - .rules:merge-requests
627   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
628   needs:
629     - job: gromacs:clang-8:build
630
631 gromacs:clang-TSAN:test:
632   extends:
633     - .gromacs:base:test
634     - .rules:merge-requests
635   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
636   needs:
637     - job: gromacs:clang-TSAN:build
638
639 gromacs:clang-ASAN:test:
640   extends:
641     - .gromacs:base:test
642     - .use-clang:base
643     - .rules:merge-requests
644   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
645   variables:
646     CTEST_RUN_MODE: "ExperimentalMemCheck"
647   tags:
648     - k8s-scilifelab
649   needs:
650     - job: gromacs:clang-ASAN:build
651
652 gromacs:clang-9-mpi:test:
653   extends:
654     - .gromacs:base:test
655     - .rules:merge-requests
656   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
657   tags:
658     - k8s-scilifelab
659   needs:
660     - job: gromacs:clang-9-mpi:build
661
662 gromacs:gcc-7:regressiontest:
663   extends:
664     - .gromacs:base:regressiontest
665     - .rules:merge-requests
666   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
667   variables:
668     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
669     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
670     REGRESSIONTEST_PME_RANK_NUMBER: 0
671     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
672     REGRESSIONTEST_OMP_RANK_NUMBER: 1
673   tags:
674     - k8s-scilifelab
675   needs:
676     - job: gromacs:gcc-7:build
677     - job: regressiontests:prepare
678
679 gromacs:gcc-8-cuda-10.1:regressiontest:
680   extends:
681     - .gromacs:base:regressiontest
682     - .rules:merge-requests
683   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
684   variables:
685     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
686     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
687     REGRESSIONTEST_PME_RANK_NUMBER: 0
688     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
689     REGRESSIONTEST_OMP_RANK_NUMBER: 1
690   tags:
691     - k8s-scilifelab
692   needs:
693     - job: gromacs:gcc-8-cuda-10.1:build
694     - job: regressiontests:prepare
695
696 gromacs:clang-8:regressiontest:
697   extends:
698     - .gromacs:base:regressiontest
699     - .rules:merge-requests
700   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
701   tags:
702     - k8s-scilifelab
703   needs:
704     - job: gromacs:clang-8:build
705     - job: regressiontests:prepare
706
707 gromacs:clang-TSAN:regressiontest:
708   extends:
709     - .gromacs:base:regressiontest
710     - .rules:merge-requests
711   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
712   tags:
713     - k8s-scilifelab
714   needs:
715     - job: gromacs:clang-TSAN:build
716     - job: regressiontests:prepare
717
718 gromacs:clang-ASAN:regressiontest:
719   extends:
720     - .gromacs:base:regressiontest
721     - .use-clang:base
722     - .rules:merge-requests
723   image: gromacs/cmake-3.13.0-llvm-8-tsan:master
724   tags:
725     - k8s-scilifelab
726   needs:
727     - job: gromacs:clang-ASAN:build
728     - job: regressiontests:prepare
729
730 gromacs:clang-9:regressiontest:
731   extends:
732     - .gromacs:base:regressiontest
733     - .rules:merge-requests
734   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
735   variables:
736     REGRESSIONTEST_DOUBLE: "-double"
737     REGRESSIONTEST_PARALLEL: "-np"
738   tags:
739     - k8s-scilifelab
740   needs:
741     - job: gromacs:clang-9-mpi:build
742     - job: regressiontests:prepare
743
744 gromacs:gcc-8-cuda-10.1:release:test:
745   extends:
746     - .gromacs:base:test
747     - .rules:nightly-only-for-release
748   stage: release-tests
749   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi:master
750   variables:
751     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
752     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
753     BUILD_DIR: release-builds-gcc
754   tags:
755     - k8s-scilifelab
756   needs:
757     - job: gromacs:gcc-8-cuda-10.1:release:configure
758     - job: gromacs:gcc-8-cuda-10.1:release:build
759
760 gromacs:gcc-7:release:test:
761   extends:
762     - .gromacs:base:test
763     - .rules:nightly-only-for-release
764   stage: release-tests
765   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
766   variables:
767     BUILD_DIR: release-builds-gcc
768   needs:
769     - job: gromacs:gcc-7:release:configure
770     - job: gromacs:gcc-7:release:build
771
772 gromacs:clang-9:release:test:
773   extends:
774     - .gromacs:base:test
775     - .rules:nightly-only-for-release
776   stage: release-tests
777   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
778   variables:
779     BUILD_DIR: release-builds-clang
780   needs:
781     - job: gromacs:clang-9:release:configure
782     - job: gromacs:clang-9:release:build
783
784 gromacs:clang-8-cuda-10.1:release:test:
785   extends:
786     - .gromacs:base:test
787     - .rules:nightly-only-for-release
788   stage: release-tests
789   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi:master
790   variables:
791     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
792     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
793     BUILD_DIR: release-builds-clang
794   tags:
795     - k8s-scilifelab
796   needs:
797     - job: gromacs:clang-8-cuda-10.1:release:configure
798     - job: gromacs:clang-8-cuda-10.1:release:build
799
800 gromacs:gcc-7:release:regressiontest:
801   extends:
802     - .gromacs:base:regressiontest
803     - .rules:nightly-only-for-release
804   stage: release-tests
805   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi:master
806   variables:
807     BUILD_DIR: release-builds-gcc
808   tags:
809     - k8s-scilifelab
810   needs:
811     - job: gromacs:gcc-7:release:build
812     - job: regressiontests:package
813
814 gromacs:clang-9:release:regressiontest:
815   extends:
816     - .gromacs:base:regressiontest
817     - .rules:nightly-only-for-release
818   stage: release-tests
819   image: gromacs/cmake-3.15.7-llvm-9-openmpi:master
820   variables:
821     BUILD_DIR: release-builds-clang
822     REGRESSIONTEST_DOUBLE: "-double"
823     REGRESSIONTEST_PARALLEL: "-np"
824   tags:
825     - k8s-scilifelab
826   needs:
827     - job: gromacs:clang-9:release:build
828     - job: regressiontests:package
829
830 gromacs:clang-8-cuda-10.1:release:regressiontest:
831   extends:
832     - .gromacs:base:regressiontest
833     - .rules:nightly-only-for-release
834   stage: release-tests
835   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi:master
836   variables:
837     BUILD_DIR: release-builds-clang
838     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
839     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
840     REGRESSIONTEST_PME_RANK_NUMBER: 0
841     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
842     REGRESSIONTEST_OMP_RANK_NUMBER: 1
843   tags:
844     - k8s-scilifelab
845   needs:
846     - job: gromacs:clang-8-cuda-10.1:release:build
847     - job: regressiontests:package
848