Merge branch 'origin/release-2020' into merge-release-2020
[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=OFF"
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=OFF"
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=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
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-and-post-merge-acceptance
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-11.0:configure:
232   extends:
233     - .gromacs:base:configure
234     - .use-gcc:base
235     - .use-cuda
236     - .rules:merge-and-post-merge-acceptance
237   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
238   variables:
239     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
240     COMPILER_MAJOR_VERSION: 8
241
242 gromacs:gcc-8-cuda-11.0:configureMPI:
243   extends:
244     - .gromacs:base:configure
245     - .use-gcc:base
246     - .use-cuda
247     - .use-mpi
248     - .rules:merge-and-post-merge-acceptance
249   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
250   variables:
251     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
252     COMPILER_MAJOR_VERSION: 8
253
254 gromacs:clang-TSAN:configure:
255   extends:
256     - .gromacs:base:configure
257     - .use-clang:base
258     - .rules:merge-and-post-merge-acceptance
259   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
260   variables:
261     COMPILER_MAJOR_VERSION: 8
262     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
263
264 gromacs:clang-8:configure:
265   extends:
266     - .gromacs:base:configure
267     - .use-clang:base
268     - .rules:merge-requests
269   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
270   variables:
271     COMPILER_MAJOR_VERSION: 8
272
273 gromacs:clang-9-mpi:configure:
274   extends:
275    - .gromacs:base:configure
276    - .use-clang:base
277    - .use-mpi
278    - .rules:merge-requests
279   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
280   variables:
281     COMPILER_MAJOR_VERSION: 9
282     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
283
284 gromacs:clang-static-analyzer:configure:
285   extends:
286     - .gromacs:base:configure
287     - .use-clang:base
288     - .rules:merge-requests
289   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
290   variables:
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"
294
295 gromacs:clang-ASAN:configure:
296   extends:
297     - .gromacs:base:configure
298     - .use-clang:base
299     - .rules:merge-requests
300   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
301   variables:
302     COMPILER_MAJOR_VERSION: 8
303     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
304
305 gromacs:oneapi-2021.1-beta09-opencl:configure:
306   extends:
307    - .gromacs:base:configure
308    - .use-oneapi:base
309    - .use-opencl
310    - .rules:merge-requests
311   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
312   variables:
313     COMPILER_MAJOR_VERSION: 2021
314
315 gromacs:oneapi-2021.1-beta09-sycl:configure:
316   extends:
317    - .gromacs:base:configure
318    - .use-oneapi:base
319    - .use-sycl
320    - .rules:merge-and-post-merge-acceptance
321   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
322   variables:
323     COMPILER_MAJOR_VERSION: 2021
324
325 gromacs:clang-UBSAN:configure:
326   extends:
327     - .gromacs:base:configure
328     - .use-clang:base
329     - .rules:merge-and-post-merge-acceptance
330   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
331   variables:
332     COMPILER_MAJOR_VERSION: 8
333     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
334
335 gromacs:gcc-8-cuda-11.0:release:configure:
336   extends:
337     - .gromacs:base:release:configure
338     - .use-gcc:base
339     - .use-mpi
340     - .use-cuda
341     - .rules:nightly-only-for-release
342   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
343   variables:
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: ""
349   dependencies:
350     - archive:package
351     - regressiontests:package
352     - prepare-release-version
353
354 gromacs:gcc-7:release:configure:
355   extends:
356     - .gromacs:base:release:configure
357     - .use-gcc:base
358     - .use-opencl
359     - .rules:nightly-only-for-release
360   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
361   variables:
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"
366   dependencies:
367     - archive:package
368     - regressiontests:package
369     - prepare-release-version
370
371 gromacs:clang-9:release:configure:
372   extends:
373     - .gromacs:base:release:configure
374     - .use-clang:base
375     - .use-mpi
376     - .rules:nightly-only-for-release
377   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
378   variables:
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"
383   dependencies:
384     - archive:package
385     - regressiontests:package
386     - prepare-release-version
387
388 gromacs:clang-8-cuda-10.1:release:configure:
389   extends:
390     - .gromacs:base:release:configure
391     - .use-clang:base
392     - .use-cuda
393     - .rules:nightly-only-for-release
394   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
395   variables:
396     COMPILER_MAJOR_VERSION: 8
397     RELEASE_BUILD_DIR: release-builds-clang
398     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
399
400 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
401   extends:
402    - .gromacs:base:release:configure
403    - .use-oneapi:base
404    - .use-opencl
405    - .rules:nightly-only-for-release
406   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
407   variables:
408     COMPILER_MAJOR_VERSION: 2021
409     RELEASE_BUILD_DIR: release-builds-oneapi
410
411 # Jobs running during build stage
412
413 .gromacs:base:build:
414   stage: build
415   script:
416     - cd $BUILD_DIR
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
425     - cd ..
426   artifacts:
427     when: always
428     paths:
429       - $BUILD_DIR
430       - $INSTALL_DIR/
431
432 .gromacs:static-analyzer-build:
433   stage: build
434   script:
435     - cd $BUILD_DIR
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
441     - cd ..
442   artifacts:
443     when: always
444     paths:
445       - $BUILD_DIR/scan_html
446
447 gromacs:gcc-7:build:
448   extends:
449     - .variables:default
450     - .gromacs:base:build
451     - .before_script:default
452     - .use-ccache
453     - .rules:merge-and-post-merge-acceptance
454   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
455   needs:
456     - job: gromacs:gcc-7:configure
457       artifacts: true
458
459 gromacs:gcc-8-cuda-11.0:build:
460   extends:
461     - .variables:default
462     - .gromacs:base:build
463     - .before_script:default
464     - .use-ccache
465     - .rules:merge-and-post-merge-acceptance
466   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
467   needs:
468     - job: gromacs:gcc-8-cuda-11.0:configure
469
470 gromacs:gcc-8-cuda-11.0:buildMPI:
471   extends:
472     - .variables:default
473     - .gromacs:base:build
474     - .before_script:default
475     - .use-ccache
476     - .rules:merge-and-post-merge-acceptance
477   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
478   needs:
479     - job: gromacs:gcc-8-cuda-11.0:configureMPI
480
481 gromacs:clang-TSAN:build:
482   extends:
483     - .variables:default
484     - .gromacs:base:build
485     - .use-clang:base
486     - .use-ccache
487     - .rules:merge-and-post-merge-acceptance
488   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
489   needs:
490     - job: gromacs:clang-TSAN:configure
491
492 gromacs:clang-ASAN:build:
493   extends:
494     - .variables:default
495     - .gromacs:base:build
496     - .use-clang:base
497     - .use-ccache
498     - .rules:merge-requests
499   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
500   tags:
501     - k8s-scilifelab
502   needs:
503     - job: gromacs:clang-ASAN:configure
504
505 gromacs:clang-UBSAN:build:
506   extends:
507     - .variables:default
508     - .gromacs:base:build
509     - .use-clang:base
510     - .use-ccache
511     - .rules:merge-and-post-merge-acceptance
512   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
513   tags:
514     - k8s-scilifelab
515   needs:
516     - job: gromacs:clang-UBSAN:configure
517
518 gromacs:clang-static-analyzer:build:
519   extends:
520     - .variables:default
521     - .gromacs:static-analyzer-build
522     - .use-clang:base
523     - .use-ccache
524     - .rules:merge-requests
525   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
526   tags:
527     - k8s-scilifelab
528   needs:
529     - job: gromacs:clang-static-analyzer:configure
530
531 gromacs:clang-8:build:
532   extends:
533     - .variables:default
534     - .gromacs:base:build
535     - .before_script:default
536     - .use-ccache
537     - .rules:merge-requests
538   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
539   needs:
540     - job: gromacs:clang-8:configure
541
542 gromacs:oneapi-2021.1-beta09-opencl:build:
543   extends:
544     - .variables:default
545     - .gromacs:base:build
546     - .use-ccache
547     - .use-oneapi:base
548     - .rules:merge-requests
549   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
550   needs:
551     - job: gromacs:oneapi-2021.1-beta09-opencl:configure
552
553 gromacs:oneapi-2021.1-beta09-sycl:build:
554   extends:
555     - .variables:default
556     - .gromacs:base:build
557     - .use-ccache
558     - .use-oneapi:base
559     - .rules:merge-and-post-merge-acceptance
560   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
561   needs:
562     - job: gromacs:oneapi-2021.1-beta09-sycl:configure
563
564 gromacs:clang-9-mpi:build:
565   extends:
566     - .variables:default
567     - .gromacs:base:build
568     - .before_script:default
569     - .use-ccache
570     - .rules:merge-requests
571   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
572   needs:
573     - job: gromacs:clang-9-mpi:configure
574
575 gromacs:gcc-8-cuda-11.0:release:build:
576   extends:
577     - .variables:default  
578     - .gromacs:base:build
579     - .before_script:default
580     - .use-ccache
581     - .rules:nightly-only-for-release
582   stage: release-build
583   variables:
584     BUILD_DIR: release-builds-gcc
585   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
586   needs:
587     - job: gromacs:gcc-8-cuda-11.0:release:configure
588
589 gromacs:gcc-7:release:build:
590   extends:
591     - .variables:default
592     - .gromacs:base:build
593     - .before_script:default
594     - .use-ccache
595     - .rules:nightly-only-for-release
596   stage: release-build
597   variables:
598     BUILD_DIR: release-builds-gcc
599   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
600   needs:
601     - job: gromacs:gcc-7:release:configure
602
603 gromacs:clang-9:release:build:
604   extends:
605     - .variables:default
606     - .gromacs:base:build
607     - .before_script:default
608     - .use-ccache
609     - .rules:nightly-only-for-release
610   stage: release-build
611   variables:
612     BUILD_DIR: release-builds-clang
613   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
614   needs:
615     - job: gromacs:clang-9:release:configure
616
617 gromacs:clang-8-cuda-10.1:release:build:
618   extends:
619     - .variables:default
620     - .gromacs:base:build
621     - .before_script:default
622     - .use-ccache
623     - .rules:nightly-only-for-release
624   stage: release-build
625   variables:
626     BUILD_DIR: release-builds-clang
627   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
628   needs:
629     - job: gromacs:clang-8-cuda-10.1:release:configure
630
631 gromacs:oneapi-2021.1-beta09-opencl:release:build:
632   extends:
633     - .variables:default
634     - .gromacs:base:build
635     - .use-oneapi:base
636     - .use-opencl
637     - .use-ccache
638     - .rules:nightly-only-for-release
639   stage: release-build
640   variables:
641     BUILD_DIR: release-builds-oneapi
642     COMPILER_MAJOR_VERSION: 2021
643   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
644   needs:
645     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
646
647 # Jobs running during test stage
648
649 .gromacs:base:test:
650   extends:
651     - .variables:default
652   stage: test
653   cache: {}
654   retry:
655     max: 1
656   variables:
657     CTEST_RUN_MODE: "ExperimentalTest"
658   script:
659     - cd $BUILD_DIR
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";
670       fi
671       fi
672     - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
673       nvidia-smi || true;
674       fi
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";
681       exit 1;
682       fi
683     - cd ..
684   artifacts:
685     reports:
686       junit: $BUILD_DIR/JUnitTestResults.xml
687     paths:
688       - $BUILD_DIR/Testing
689       - $BUILD_DIR/tests
690     when: always
691     expire_in: 1 week
692
693 .gromacs:base:regressiontest:
694   extends:
695     - .variables:default
696   variables:
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"
706   stage: test
707   cache: {}
708   retry:
709     max: 1
710   script:
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
718     - cd regressiontests
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
720   artifacts:
721     paths:
722       - regressiontests/gmxtest.xml
723     when: always
724     expire_in: 1 week
725
726 gromacs:gcc-7:test:
727   extends:
728     - .gromacs:base:test
729     - .rules:merge-requests
730   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
731   variables:
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"
735   tags:
736     - k8s-scilifelab
737   needs:
738     - job: gromacs:gcc-7:build
739
740 gromacs:gcc-8-cuda-11.0:test:
741   extends:
742     - .gromacs:base:test
743     - .rules:merge-requests
744   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
745   variables:
746     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
747     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
748   tags:
749     - k8s-scilifelab
750   needs:
751     - job: gromacs:gcc-8-cuda-11.0:build
752
753 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
754   extends:
755     - .gromacs:base:test
756     - .rules:post-merge-acceptance
757   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
758   variables:
759     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
760     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
761     GMX_GPU_DD_COMMS: 1
762     GMX_GPU_PME_PP_COMMS: 1
763     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
764   tags:
765     - k8s-scilifelab
766   needs:
767     - job: gromacs:gcc-8-cuda-11.0:build
768
769 gromacs:clang-8:test:
770   extends:
771     - .gromacs:base:test
772     - .rules:merge-requests
773   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
774   needs:
775     - job: gromacs:clang-8:build
776
777 gromacs:clang-TSAN:test:
778   extends:
779     - .gromacs:base:test
780     - .rules:post-merge-acceptance
781   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
782   needs:
783     - job: gromacs:clang-TSAN:build
784
785 gromacs:clang-ASAN:test:
786   extends:
787     - .gromacs:base:test
788     - .use-clang:base
789     - .rules:merge-requests
790   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
791   variables:
792     CTEST_RUN_MODE: "ExperimentalMemCheck"
793   tags:
794     - k8s-scilifelab
795   needs:
796     - job: gromacs:clang-ASAN:build
797
798 gromacs:clang-UBSAN:test:
799   extends:
800     - .gromacs:base:test
801     - .use-clang:base
802     - .rules:post-merge-acceptance
803   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
804   tags:
805     - k8s-scilifelab
806   needs:
807     - job: gromacs:clang-UBSAN:build
808
809 gromacs:oneapi-2021.1-beta09-opencl:test:
810   extends:
811     - .gromacs:base:test
812     - .use-oneapi:base
813     - .rules:merge-requests
814   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
815   needs:
816     - job: gromacs:oneapi-2021.1-beta09-opencl:build
817
818 gromacs:oneapi-2021.1-beta09-sycl:test:
819   extends:
820     - .gromacs:base:test
821     - .use-oneapi:base
822     - .rules:post-merge-acceptance
823   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
824   needs:
825     - job: gromacs:oneapi-2021.1-beta09-sycl:build
826
827 gromacs:clang-9-mpi:test:
828   extends:
829     - .gromacs:base:test
830     - .rules:merge-requests
831   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
832   tags:
833     - k8s-scilifelab
834   needs:
835     - job: gromacs:clang-9-mpi:build
836
837 gromacs:gcc-7:regressiontest:
838   extends:
839     - .gromacs:base:regressiontest
840     - .rules:post-merge-acceptance
841   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
842   variables:
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"
849   tags:
850     - k8s-scilifelab
851   needs:
852     - job: gromacs:gcc-7:build
853     - job: regressiontests:prepare
854
855 gromacs:gcc-8-cuda-11.0:regressiontest:
856   extends:
857     - .gromacs:base:regressiontest
858     - .rules:merge-requests
859   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
860   variables:
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
866   tags:
867     - k8s-scilifelab
868   needs:
869     - job: gromacs:gcc-8-cuda-11.0:build
870     - job: regressiontests:prepare
871
872 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
873   extends:
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
877   variables:
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
883     GMX_GPU_DD_COMMS: 1
884     GMX_GPU_PME_PP_COMMS: 1
885     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
886   tags:
887     - k8s-scilifelab
888   needs:
889     - job: gromacs:gcc-8-cuda-11.0:build
890     - job: regressiontests:prepare
891   artifacts:
892     paths:
893       - regressiontests
894     when: always
895     expire_in: 1 week
896
897 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
898   extends:
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
902   variables:
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"
909     GMX_GPU_DD_COMMS: 1  
910     GMX_GPU_PME_PP_COMMS: 1
911     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
912   tags:
913     - k8s-scilifelab
914   needs:
915     - job: gromacs:gcc-8-cuda-11.0:buildMPI
916     - job: regressiontests:prepare
917   artifacts:
918     paths:
919       - regressiontests
920     when: always
921     expire_in: 1 week
922
923 gromacs:clang-8:regressiontest:
924   extends:
925     - .gromacs:base:regressiontest
926     - .rules:merge-requests
927   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
928   tags:
929     - k8s-scilifelab
930   needs:
931     - job: gromacs:clang-8:build
932     - job: regressiontests:prepare
933
934 gromacs:clang-TSAN:regressiontest:
935   extends:
936     - .gromacs:base:regressiontest
937     - .rules:post-merge-acceptance
938   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
939   tags:
940     - k8s-scilifelab
941   needs:
942     - job: gromacs:clang-TSAN:build
943     - job: regressiontests:prepare
944
945 gromacs:clang-ASAN:regressiontest:
946   extends:
947     - .gromacs:base:regressiontest
948     - .use-clang:base
949     - .rules:merge-requests
950   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
951   tags:
952     - k8s-scilifelab
953   needs:
954     - job: gromacs:clang-ASAN:build
955     - job: regressiontests:prepare
956
957 gromacs:clang-9:regressiontest:
958   extends:
959     - .gromacs:base:regressiontest
960     - .rules:merge-requests
961   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
962   variables:
963     REGRESSIONTEST_DOUBLE: "-double"
964     REGRESSIONTEST_PARALLEL: "-np"
965   tags:
966     - k8s-scilifelab
967   needs:
968     - job: gromacs:clang-9-mpi:build
969     - job: regressiontests:prepare
970
971 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
972   extends:
973     - .gromacs:base:regressiontest
974     - .use-oneapi:base
975     - .rules:merge-requests
976   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
977   needs:
978     - job: gromacs:oneapi-2021.1-beta09-opencl:build
979     - job: regressiontests:prepare
980
981 gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
982   extends:
983     - .gromacs:base:regressiontest
984     - .use-oneapi:base
985     - .rules:post-merge-acceptance
986   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
987   needs:
988     - job: gromacs:oneapi-2021.1-beta09-sycl:build
989     - job: regressiontests:prepare
990
991 gromacs:gcc-8-cuda-11.0:release:test:
992   extends:
993     - .gromacs:base:test
994     - .rules:nightly-only-for-release
995   stage: release-tests
996   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
997   variables:
998     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
999     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1000     BUILD_DIR: release-builds-gcc
1001   tags:
1002     - k8s-scilifelab
1003   needs:
1004     - job: gromacs:gcc-8-cuda-11.0:release:configure
1005     - job: gromacs:gcc-8-cuda-11.0:release:build
1006
1007 gromacs:gcc-7:release:test:
1008   extends:
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
1013   variables:
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"
1018   tags:
1019     - k8s-scilifelab
1020   needs:
1021     - job: gromacs:gcc-7:release:configure
1022     - job: gromacs:gcc-7:release:build
1023
1024 gromacs:clang-9:release:test:
1025   extends:
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
1030   variables:
1031     BUILD_DIR: release-builds-clang
1032   needs:
1033     - job: gromacs:clang-9:release:configure
1034     - job: gromacs:clang-9:release:build
1035
1036 gromacs:clang-8-cuda-10.1:release:test:
1037   extends:
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
1042   variables:
1043     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1044     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1045     BUILD_DIR: release-builds-clang
1046   tags:
1047     - k8s-scilifelab
1048   needs:
1049     - job: gromacs:clang-8-cuda-10.1:release:configure
1050     - job: gromacs:clang-8-cuda-10.1:release:build
1051
1052 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1053   extends:
1054     - .gromacs:base:test
1055     - .use-oneapi:base
1056     - .rules:nightly-only-for-release
1057   stage: release-tests
1058   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1059   variables:
1060     BUILD_DIR: release-builds-oneapi
1061   needs:
1062     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1063     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1064
1065 gromacs:gcc-7:release:regressiontest:
1066   extends:
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
1071   variables:
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"
1076   tags:
1077     - k8s-scilifelab
1078   needs:
1079     - job: gromacs:gcc-7:release:build
1080     - job: regressiontests:package
1081
1082 gromacs:clang-9:release:regressiontest:
1083   extends:
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
1088   variables:
1089     BUILD_DIR: release-builds-clang
1090     REGRESSIONTEST_DOUBLE: "-double"
1091     REGRESSIONTEST_PARALLEL: "-np"
1092   tags:
1093     - k8s-scilifelab
1094   needs:
1095     - job: gromacs:clang-9:release:build
1096     - job: regressiontests:package
1097
1098 gromacs:clang-8-cuda-10.1:release:regressiontest:
1099   extends:
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
1104   variables:
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
1111   tags:
1112     - k8s-scilifelab
1113   needs:
1114     - job: gromacs:clang-8-cuda-10.1:release:build
1115     - job: regressiontests:package
1116
1117 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1118   extends:
1119     - .gromacs:base:regressiontest
1120     - .use-oneapi:base
1121     - .rules:nightly-only-for-release
1122   stage: release-tests
1123   image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
1124   variables:
1125     BUILD_DIR: release-builds-oneapi
1126     REGRESSIONTEST_PME_RANK_NUMBER: 0
1127     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1128     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1129   needs:
1130     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1131     - job: regressiontests:package