Update image names in job definitions.
[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/ci-ubuntu-18.04-llvm-9
12   variables:
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
25   script:
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 ;
38       else
39       echo "Preparing new build directory" ;
40       mkdir $BUILD_DIR ;
41       fi
42     - cd $BUILD_DIR
43     - $CMAKE ..
44       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
45       $CMAKE_COMPILER_SCRIPT
46       $CMAKE_EXTRA_OPTIONS
47       $CMAKE_SIMD_OPTIONS
48       $CMAKE_MPI_OPTIONS
49       $CMAKE_PRECISION_OPTIONS
50       $CMAKE_BUILD_TYPE_OPTIONS
51       $CMAKE_GPU_OPTIONS
52       $CMAKE_GMXAPI_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";
70       exit 1;
71       fi
72     - cd ..
73   artifacts:
74     reports:
75       junit: $BUILD_DIR/JUnitTestResults.xml
76     paths:
77       - $BUILD_DIR/*log
78     when: always
79     expire_in: 1 week
80
81 # Jobs running in first pre-build stage
82
83 .gromacs:base:configure:
84   extends:
85     - .variables:default
86   stage: configure-build
87   cache: {}
88   variables:
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"
99   script:
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 ;
111       else
112       echo "Preparing new build directory" ;
113       mkdir $BUILD_DIR ;
114       fi
115     - cd $BUILD_DIR
116     - $CMAKE ..
117       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
118       $CMAKE_COMPILER_SCRIPT
119       $CMAKE_EXTRA_OPTIONS
120       $CMAKE_SIMD_OPTIONS
121       $CMAKE_MPI_OPTIONS
122       $CMAKE_PRECISION_OPTIONS
123       $CMAKE_BUILD_TYPE_OPTIONS
124       $CMAKE_GPU_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
130     - cd ..
131   artifacts:
132     when: always
133     paths:
134       - $BUILD_DIR
135
136 .gromacs:base:release:configure:
137   extends:
138     - .variables:default
139   stage: release-configure
140   cache: {}
141   variables:
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
156   script:
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 ;
162       fi
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
181     - cd ..
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 ;
193       else
194       echo "Preparing new build directory" ;
195       mkdir $RELEASE_BUILD_DIR ;
196       fi
197     - cd $RELEASE_BUILD_DIR
198     - cmake ../$RELEASE_SOURCE/
199       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
200       $CMAKE_COMPILER_SCRIPT
201       $CMAKE_EXTRA_OPTIONS
202       $CMAKE_SIMD_OPTIONS
203       $CMAKE_MPI_OPTIONS
204       $CMAKE_PRECISION_OPTIONS
205       $CMAKE_BUILD_TYPE_OPTIONS
206       $CMAKE_GPU_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
213     - cd ..
214   artifacts:
215     when: always
216     paths:
217       - $RELEASE_BUILD_DIR
218       - $RELEASE_REGRESSIONTESTS
219       - $RELEASE_SOURCE
220
221 # Templates for configuration stage
222
223 gromacs:gcc-7:configure:
224   extends:
225     - .gromacs:base:configure
226     - .use-gcc:base
227     - .use-opencl
228     - .rules:merge-and-post-merge-acceptance
229   image: gromacs/ci-ubuntu-18.04-gcc-7
230   variables:
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
235
236 gromacs:gcc-8-cuda-11.0:configure:
237   extends:
238     - .gromacs:base:configure
239     - .use-gcc:base
240     - .use-cuda
241     - .rules:merge-and-post-merge-acceptance
242   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
243   variables:
244     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
245     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
246     COMPILER_MAJOR_VERSION: 8
247
248 gromacs:gcc-8-cuda-11.0:configureMPI:
249   extends:
250     - .gromacs:base:configure
251     - .use-gcc:base
252     - .use-cuda
253     - .use-mpi
254     - .rules:merge-and-post-merge-acceptance
255   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
256   variables:
257     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
258     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
259     COMPILER_MAJOR_VERSION: 8
260
261 gromacs:clang-TSAN:configure:
262   extends:
263     - .gromacs:base:configure
264     - .use-clang:base
265     - .rules:merge-and-post-merge-acceptance
266   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
267   variables:
268     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
269     COMPILER_MAJOR_VERSION: 8
270     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
271
272 gromacs:clang-8:configure:
273   extends:
274     - .gromacs:base:configure
275     - .use-clang:base
276     - .rules:merge-requests
277   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
278   variables:
279     COMPILER_MAJOR_VERSION: 8
280
281 gromacs:clang-9-mpi:configure:
282   extends:
283    - .gromacs:base:configure
284    - .use-clang:base
285    - .use-mpi
286    - .rules:merge-requests
287   image: gromacs/ci-ubuntu-18.04-llvm-9
288   variables:
289     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
290     COMPILER_MAJOR_VERSION: 9
291     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
292
293 gromacs:clang-static-analyzer:configure:
294   extends:
295     - .gromacs:base:configure
296     - .use-clang:base
297     - .rules:merge-requests
298   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
299   variables:
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"
304
305 gromacs:clang-ASAN:configure:
306   extends:
307     - .gromacs:base:configure
308     - .use-clang:base
309     - .rules:merge-requests
310   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
311   variables:
312     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
313     COMPILER_MAJOR_VERSION: 8
314     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
315
316 gromacs:oneapi-2021.1-beta09-opencl:configure:
317   extends:
318    - .gromacs:base:configure
319    - .use-oneapi:base
320    - .use-opencl
321    - .rules:merge-requests
322   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
323   variables:
324     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
325     COMPILER_MAJOR_VERSION: 2021
326
327 gromacs:oneapi-2021.1-beta09-sycl:configure:
328   extends:
329    - .gromacs:base:configure
330    - .use-oneapi:base
331    - .use-sycl
332    - .rules:merge-and-post-merge-acceptance
333   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
334   variables:
335     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
336     COMPILER_MAJOR_VERSION: 2021
337
338 gromacs:clang-UBSAN:configure:
339   extends:
340     - .gromacs:base:configure
341     - .use-clang:base
342     - .rules:merge-and-post-merge-acceptance
343   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
344   variables:
345     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
346     COMPILER_MAJOR_VERSION: 8
347     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
348
349 gromacs:gcc-8-cuda-11.0:release:configure:
350   extends:
351     - .gromacs:base:release:configure
352     - .use-gcc:base
353     - .use-mpi
354     - .use-cuda
355     - .rules:nightly-only-for-release
356   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
357   variables:
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: ""
364   dependencies:
365     - archive:package
366     - regressiontests:package
367     - prepare-release-version
368
369 gromacs:gcc-7:release:configure:
370   extends:
371     - .gromacs:base:release:configure
372     - .use-gcc:base
373     - .use-opencl
374     - .rules:nightly-only-for-release
375   image: gromacs/ci-ubuntu-18.04-gcc-7
376   variables:
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"
382   dependencies:
383     - archive:package
384     - regressiontests:package
385     - prepare-release-version
386
387 gromacs:clang-9:release:configure:
388   extends:
389     - .gromacs:base:release:configure
390     - .use-clang:base
391     - .use-mpi
392     - .rules:nightly-only-for-release
393   image: gromacs/ci-ubuntu-18.04-llvm-9
394   variables:
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"
400   dependencies:
401     - archive:package
402     - regressiontests:package
403     - prepare-release-version
404
405 gromacs:clang-8-cuda-10.1:release:configure:
406   extends:
407     - .gromacs:base:release:configure
408     - .use-clang:base
409     - .use-cuda
410     - .rules:nightly-only-for-release
411   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
412   variables:
413     COMPILER_MAJOR_VERSION: 8
414     RELEASE_BUILD_DIR: release-builds-clang
415     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
416
417 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
418   extends:
419    - .gromacs:base:release:configure
420    - .use-oneapi:base
421    - .use-opencl
422    - .rules:nightly-only-for-release
423   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
424   variables:
425     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
426     COMPILER_MAJOR_VERSION: 2021
427     RELEASE_BUILD_DIR: release-builds-oneapi
428
429 # Jobs running during build stage
430
431 .gromacs:base:build:
432   stage: build
433   script:
434     - CMAKE=${CMAKE:-$(which cmake)}
435     - cd $BUILD_DIR
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
444     - cd ..
445   artifacts:
446     when: always
447     paths:
448       - $BUILD_DIR
449       - $INSTALL_DIR/
450
451 .gromacs:static-analyzer-build:
452   stage: build
453   script:
454     - CMAKE=${CMAKE:-$(which cmake)}
455     - cd $BUILD_DIR
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
461     - cd ..
462   artifacts:
463     when: always
464     paths:
465       - $BUILD_DIR/scan_html
466
467 gromacs:gcc-7:build:
468   extends:
469     - .variables:default
470     - .gromacs:base:build
471     - .before_script:default
472     - .use-ccache
473     - .rules:merge-and-post-merge-acceptance
474   image: gromacs/ci-ubuntu-18.04-gcc-7
475   variables:
476     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
477   needs:
478     - job: gromacs:gcc-7:configure
479       artifacts: true
480
481 gromacs:gcc-8-cuda-11.0:build:
482   extends:
483     - .variables:default
484     - .gromacs:base:build
485     - .before_script:default
486     - .use-ccache
487     - .rules:merge-and-post-merge-acceptance
488   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
489   variables:
490     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
491   needs:
492     - job: gromacs:gcc-8-cuda-11.0:configure
493
494 gromacs:gcc-8-cuda-11.0:buildMPI:
495   extends:
496     - .variables:default
497     - .gromacs:base:build
498     - .before_script:default
499     - .use-ccache
500     - .rules:merge-and-post-merge-acceptance
501   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
502   variables:
503     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
504   needs:
505     - job: gromacs:gcc-8-cuda-11.0:configureMPI
506
507 gromacs:clang-TSAN:build:
508   extends:
509     - .variables:default
510     - .gromacs:base:build
511     - .use-clang:base
512     - .use-ccache
513     - .rules:merge-and-post-merge-acceptance
514   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
515   variables:
516     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
517   needs:
518     - job: gromacs:clang-TSAN:configure
519
520 gromacs:clang-ASAN:build:
521   extends:
522     - .variables:default
523     - .gromacs:base:build
524     - .use-clang:base
525     - .use-ccache
526     - .rules:merge-requests
527   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
528   variables:
529     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
530   tags:
531     - k8s-scilifelab
532   needs:
533     - job: gromacs:clang-ASAN:configure
534
535 gromacs:clang-UBSAN:build:
536   extends:
537     - .variables:default
538     - .gromacs:base:build
539     - .use-clang:base
540     - .use-ccache
541     - .rules:merge-and-post-merge-acceptance
542   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
543   variables:
544     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
545   tags:
546     - k8s-scilifelab
547   needs:
548     - job: gromacs:clang-UBSAN:configure
549
550 gromacs:clang-static-analyzer:build:
551   extends:
552     - .variables:default
553     - .gromacs:static-analyzer-build
554     - .use-clang:base
555     - .use-ccache
556     - .rules:merge-requests
557   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
558   variables:
559     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
560   tags:
561     - k8s-scilifelab
562   needs:
563     - job: gromacs:clang-static-analyzer:configure
564
565 gromacs:clang-8:build:
566   extends:
567     - .variables:default
568     - .gromacs:base:build
569     - .before_script:default
570     - .use-ccache
571     - .rules:merge-requests
572   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
573   needs:
574     - job: gromacs:clang-8:configure
575
576 gromacs:oneapi-2021.1-beta09-opencl:build:
577   extends:
578     - .variables:default
579     - .gromacs:base:build
580     - .use-ccache
581     - .use-oneapi:base
582     - .rules:merge-requests
583   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
584   variables:
585     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
586   needs:
587     - job: gromacs:oneapi-2021.1-beta09-opencl:configure
588
589 gromacs:oneapi-2021.1-beta09-sycl:build:
590   extends:
591     - .variables:default
592     - .gromacs:base:build
593     - .use-ccache
594     - .use-oneapi:base
595     - .rules:merge-and-post-merge-acceptance
596   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
597   variables:
598     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
599   needs:
600     - job: gromacs:oneapi-2021.1-beta09-sycl:configure
601
602 gromacs:clang-9-mpi:build:
603   extends:
604     - .variables:default
605     - .gromacs:base:build
606     - .before_script:default
607     - .use-ccache
608     - .rules:merge-requests
609   image: gromacs/ci-ubuntu-18.04-llvm-9
610   variables:
611     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
612   needs:
613     - job: gromacs:clang-9-mpi:configure
614
615 gromacs:gcc-8-cuda-11.0:release:build:
616   extends:
617     - .variables:default  
618     - .gromacs:base:build
619     - .before_script:default
620     - .use-ccache
621     - .rules:nightly-only-for-release
622   stage: release-build
623   variables:
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
627   needs:
628     - job: gromacs:gcc-8-cuda-11.0:release:configure
629
630 gromacs:gcc-7:release:build:
631   extends:
632     - .variables:default
633     - .gromacs:base:build
634     - .before_script:default
635     - .use-ccache
636     - .rules:nightly-only-for-release
637   stage: release-build
638   variables:
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
642   needs:
643     - job: gromacs:gcc-7:release:configure
644
645 gromacs:clang-9:release:build:
646   extends:
647     - .variables:default
648     - .gromacs:base:build
649     - .before_script:default
650     - .use-ccache
651     - .rules:nightly-only-for-release
652   stage: release-build
653   variables:
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
657   needs:
658     - job: gromacs:clang-9:release:configure
659
660 gromacs:clang-8-cuda-10.1:release:build:
661   extends:
662     - .variables:default
663     - .gromacs:base:build
664     - .before_script:default
665     - .use-ccache
666     - .rules:nightly-only-for-release
667   stage: release-build
668   variables:
669     BUILD_DIR: release-builds-clang
670   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
671   needs:
672     - job: gromacs:clang-8-cuda-10.1:release:configure
673
674 gromacs:oneapi-2021.1-beta09-opencl:release:build:
675   extends:
676     - .variables:default
677     - .gromacs:base:build
678     - .use-oneapi:base
679     - .use-opencl
680     - .use-ccache
681     - .rules:nightly-only-for-release
682   stage: release-build
683   variables:
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
688   needs:
689     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
690
691 # Jobs running during test stage
692
693 .gromacs:base:test:
694   extends:
695     - .variables:default
696   stage: test
697   cache: {}
698   retry:
699     max: 1
700   variables:
701     CTEST_RUN_MODE: "ExperimentalTest"
702   script:
703     - CMAKE=${CMAKE:-$(which cmake)}
704     - cd $BUILD_DIR
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";
715       fi
716       fi
717     - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
718       nvidia-smi || true;
719       fi
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";
726       exit 1;
727       fi
728     - cd ..
729   artifacts:
730     reports:
731       junit: $BUILD_DIR/JUnitTestResults.xml
732     paths:
733       - $BUILD_DIR/Testing
734       - $BUILD_DIR/tests
735     when: always
736     expire_in: 1 week
737
738 .gromacs:base:regressiontest:
739   extends:
740     - .variables:default
741   variables:
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"
751   stage: test
752   cache: {}
753   retry:
754     max: 1
755   script:
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
763     - cd regressiontests
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
765   artifacts:
766     paths:
767       - regressiontests/gmxtest.xml
768     when: always
769     expire_in: 1 week
770
771 gromacs:gcc-7:test:
772   extends:
773     - .gromacs:base:test
774     - .rules:merge-requests
775   image: gromacs/ci-ubuntu-18.04-gcc-7
776   variables:
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"
781   tags:
782     - k8s-scilifelab
783   needs:
784     - job: gromacs:gcc-7:build
785
786 gromacs:gcc-8-cuda-11.0:test:
787   extends:
788     - .gromacs:base:test
789     - .rules:merge-requests
790   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
791   variables:
792     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
793     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
794     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
795   tags:
796     - k8s-scilifelab
797   needs:
798     - job: gromacs:gcc-8-cuda-11.0:build
799
800 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
801   extends:
802     - .gromacs:base:test
803     - .rules:post-merge-acceptance
804   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
805   variables:
806     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
807     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
808     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
809     GMX_GPU_DD_COMMS: 1
810     GMX_GPU_PME_PP_COMMS: 1
811     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
812   tags:
813     - k8s-scilifelab
814   needs:
815     - job: gromacs:gcc-8-cuda-11.0:build
816
817 gromacs:clang-8:test:
818   extends:
819     - .gromacs:base:test
820     - .rules:merge-requests
821   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
822   needs:
823     - job: gromacs:clang-8:build
824
825 gromacs:clang-TSAN:test:
826   extends:
827     - .gromacs:base:test
828     - .rules:post-merge-acceptance
829   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
830   variables:
831     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
832   needs:
833     - job: gromacs:clang-TSAN:build
834
835 gromacs:clang-ASAN:test:
836   extends:
837     - .gromacs:base:test
838     - .use-clang:base
839     - .rules:merge-requests
840   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
841   variables:
842     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
843     CTEST_RUN_MODE: "ExperimentalMemCheck"
844   tags:
845     - k8s-scilifelab
846   needs:
847     - job: gromacs:clang-ASAN:build
848
849 gromacs:clang-UBSAN:test:
850   extends:
851     - .gromacs:base:test
852     - .use-clang:base
853     - .rules:post-merge-acceptance
854   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
855   variables:
856     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
857   tags:
858     - k8s-scilifelab
859   needs:
860     - job: gromacs:clang-UBSAN:build
861
862 gromacs:oneapi-2021.1-beta09-opencl:test:
863   extends:
864     - .gromacs:base:test
865     - .use-oneapi:base
866     - .rules:merge-requests
867   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
868   variables:
869     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
870   needs:
871     - job: gromacs:oneapi-2021.1-beta09-opencl:build
872
873 gromacs:oneapi-2021.1-beta09-sycl:test:
874   extends:
875     - .gromacs:base:test
876     - .use-oneapi:base
877     - .rules:post-merge-acceptance
878   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
879   variables:
880     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
881   needs:
882     - job: gromacs:oneapi-2021.1-beta09-sycl:build
883
884 gromacs:clang-9-mpi:test:
885   extends:
886     - .gromacs:base:test
887     - .rules:merge-requests
888   image: gromacs/ci-ubuntu-18.04-llvm-9
889   variables:
890     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
891   tags:
892     - k8s-scilifelab
893   needs:
894     - job: gromacs:clang-9-mpi:build
895
896 gromacs:gcc-7:regressiontest:
897   extends:
898     - .gromacs:base:regressiontest
899     - .rules:post-merge-acceptance
900   image: gromacs/ci-ubuntu-18.04-gcc-7
901   variables:
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"
909   tags:
910     - k8s-scilifelab
911   needs:
912     - job: gromacs:gcc-7:build
913     - job: regressiontests:prepare
914
915 gromacs:gcc-8-cuda-11.0:regressiontest:
916   extends:
917     - .gromacs:base:regressiontest
918     - .rules:merge-requests
919   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
920   variables:
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
927   tags:
928     - k8s-scilifelab
929   needs:
930     - job: gromacs:gcc-8-cuda-11.0:build
931     - job: regressiontests:prepare
932
933 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
934   extends:
935     - .gromacs:base:regressiontest
936     - .rules:post-merge-acceptance
937   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
938   variables:
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
945     GMX_GPU_DD_COMMS: 1
946     GMX_GPU_PME_PP_COMMS: 1
947     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
948   tags:
949     - k8s-scilifelab
950   needs:
951     - job: gromacs:gcc-8-cuda-11.0:build
952     - job: regressiontests:prepare
953   artifacts:
954     paths:
955       - regressiontests
956     when: always
957     expire_in: 1 week
958
959 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
960   extends:
961     - .gromacs:base:regressiontest
962     - .rules:post-merge-acceptance
963   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
964   variables:
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"
972     GMX_GPU_DD_COMMS: 1  
973     GMX_GPU_PME_PP_COMMS: 1
974     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
975   tags:
976     - k8s-scilifelab
977   needs:
978     - job: gromacs:gcc-8-cuda-11.0:buildMPI
979     - job: regressiontests:prepare
980   artifacts:
981     paths:
982       - regressiontests
983     when: always
984     expire_in: 1 week
985
986 gromacs:clang-8:regressiontest:
987   extends:
988     - .gromacs:base:regressiontest
989     - .rules:merge-requests
990   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
991   tags:
992     - k8s-scilifelab
993   needs:
994     - job: gromacs:clang-8:build
995     - job: regressiontests:prepare
996
997 gromacs:clang-TSAN:regressiontest:
998   extends:
999     - .gromacs:base:regressiontest
1000     - .rules:post-merge-acceptance
1001   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1002   variables:
1003     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1004   tags:
1005     - k8s-scilifelab
1006   needs:
1007     - job: gromacs:clang-TSAN:build
1008     - job: regressiontests:prepare
1009
1010 gromacs:clang-ASAN:regressiontest:
1011   extends:
1012     - .gromacs:base:regressiontest
1013     - .use-clang:base
1014     - .rules:merge-requests
1015   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1016   variables:
1017     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1018   tags:
1019     - k8s-scilifelab
1020   needs:
1021     - job: gromacs:clang-ASAN:build
1022     - job: regressiontests:prepare
1023
1024 gromacs:clang-9:regressiontest:
1025   extends:
1026     - .gromacs:base:regressiontest
1027     - .rules:merge-requests
1028   image: gromacs/ci-ubuntu-18.04-llvm-9
1029   variables:
1030     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1031     REGRESSIONTEST_DOUBLE: "-double"
1032     REGRESSIONTEST_PARALLEL: "-np"
1033   tags:
1034     - k8s-scilifelab
1035   needs:
1036     - job: gromacs:clang-9-mpi:build
1037     - job: regressiontests:prepare
1038
1039 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
1040   extends:
1041     - .gromacs:base:regressiontest
1042     - .use-oneapi:base
1043     - .rules:merge-requests
1044   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1045   variables:
1046     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1047   needs:
1048     - job: gromacs:oneapi-2021.1-beta09-opencl:build
1049     - job: regressiontests:prepare
1050
1051 gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
1052   extends:
1053     - .gromacs:base:regressiontest
1054     - .use-oneapi:base
1055     - .rules:post-merge-acceptance
1056   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1057   variables:
1058     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1059   needs:
1060     - job: gromacs:oneapi-2021.1-beta09-sycl:build
1061     - job: regressiontests:prepare
1062
1063 gromacs:gcc-8-cuda-11.0:release:test:
1064   extends:
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
1069   variables:
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
1074   tags:
1075     - k8s-scilifelab
1076   needs:
1077     - job: gromacs:gcc-8-cuda-11.0:release:configure
1078     - job: gromacs:gcc-8-cuda-11.0:release:build
1079
1080 gromacs:gcc-7:release:test:
1081   extends:
1082     - .gromacs:base:test
1083     - .rules:nightly-only-for-release
1084   stage: release-tests
1085   image: gromacs/ci-ubuntu-18.04-gcc-7
1086   variables:
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"
1092   tags:
1093     - k8s-scilifelab
1094   needs:
1095     - job: gromacs:gcc-7:release:configure
1096     - job: gromacs:gcc-7:release:build
1097
1098 gromacs:clang-9:release:test:
1099   extends:
1100     - .gromacs:base:test
1101     - .rules:nightly-only-for-release
1102   stage: release-tests
1103   image: gromacs/ci-ubuntu-18.04-llvm-9
1104   variables:
1105     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1106     BUILD_DIR: release-builds-clang
1107   needs:
1108     - job: gromacs:clang-9:release:configure
1109     - job: gromacs:clang-9:release:build
1110
1111 gromacs:clang-8-cuda-10.1:release:test:
1112   extends:
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
1117   variables:
1118     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1119     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1120     BUILD_DIR: release-builds-clang
1121   tags:
1122     - k8s-scilifelab
1123   needs:
1124     - job: gromacs:clang-8-cuda-10.1:release:configure
1125     - job: gromacs:clang-8-cuda-10.1:release:build
1126
1127 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1128   extends:
1129     - .gromacs:base:test
1130     - .use-oneapi:base
1131     - .rules:nightly-only-for-release
1132   stage: release-tests
1133   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1134   variables:
1135     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1136     BUILD_DIR: release-builds-oneapi
1137   needs:
1138     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1139     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1140
1141 gromacs:gcc-7:release:regressiontest:
1142   extends:
1143     - .gromacs:base:regressiontest
1144     - .rules:nightly-only-for-release
1145   stage: release-tests
1146   image: gromacs/ci-ubuntu-18.04-gcc-7
1147   variables:
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"
1153   tags:
1154     - k8s-scilifelab
1155   needs:
1156     - job: gromacs:gcc-7:release:build
1157     - job: regressiontests:package
1158
1159 gromacs:clang-9:release:regressiontest:
1160   extends:
1161     - .gromacs:base:regressiontest
1162     - .rules:nightly-only-for-release
1163   stage: release-tests
1164   image: gromacs/ci-ubuntu-18.04-llvm-9
1165   variables:
1166     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1167     BUILD_DIR: release-builds-clang
1168     REGRESSIONTEST_DOUBLE: "-double"
1169     REGRESSIONTEST_PARALLEL: "-np"
1170   tags:
1171     - k8s-scilifelab
1172   needs:
1173     - job: gromacs:clang-9:release:build
1174     - job: regressiontests:package
1175
1176 gromacs:clang-8-cuda-10.1:release:regressiontest:
1177   extends:
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
1182   variables:
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
1189   tags:
1190     - k8s-scilifelab
1191   needs:
1192     - job: gromacs:clang-8-cuda-10.1:release:build
1193     - job: regressiontests:package
1194
1195 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1196   extends:
1197     - .gromacs:base:regressiontest
1198     - .use-oneapi:base
1199     - .rules:nightly-only-for-release
1200   stage: release-tests
1201   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1202   variables:
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
1208   needs:
1209     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1210     - job: regressiontests:package