Disable MTS with SD integrator
[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:clang-8-cuda-10.0:configure:
237   extends:
238     - .gromacs:base:configure
239     - .use-clang:base
240     - .use-cuda
241     - .rules:merge-and-post-merge-acceptance
242   image: gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
243   variables:
244     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
245     CMAKE_SIMD_OPTIONS: "-DGMX_USE_SIMD_KERNELS=off"
246     CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_CUDA=ON"
247     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
248     COMPILER_MAJOR_VERSION: 8
249
250 gromacs:gcc-8-cuda-11.0:configure:
251   extends:
252     - .gromacs:base:configure
253     - .use-gcc:base
254     - .use-cuda
255     - .rules:merge-and-post-merge-acceptance
256   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
257   variables:
258     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
259     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
260     COMPILER_MAJOR_VERSION: 8
261
262 gromacs:gcc-8-cuda-11.0:configureMPI:
263   extends:
264     - .gromacs:base:configure
265     - .use-gcc:base
266     - .use-cuda
267     - .use-mpi
268     - .rules:merge-and-post-merge-acceptance
269   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
270   variables:
271     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
272     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
273     COMPILER_MAJOR_VERSION: 8
274
275 gromacs:clang-TSAN:configure:
276   extends:
277     - .gromacs:base:configure
278     - .use-clang:base
279     - .rules:merge-and-post-merge-acceptance
280   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
281   variables:
282     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
283     COMPILER_MAJOR_VERSION: 8
284     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
285
286 gromacs:clang-8:configure:
287   extends:
288     - .gromacs:base:configure
289     - .use-clang:base
290     - .rules:merge-requests
291   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
292   variables:
293     COMPILER_MAJOR_VERSION: 8
294
295 gromacs:clang-9-mpi:configure:
296   extends:
297    - .gromacs:base:configure
298    - .use-clang:base
299    - .use-mpi
300    - .rules:merge-requests
301   image: gromacs/ci-ubuntu-18.04-llvm-9
302   variables:
303     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
304     COMPILER_MAJOR_VERSION: 9
305     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
306
307 gromacs:clang-static-analyzer:configure:
308   extends:
309     - .gromacs:base:configure
310     - .use-clang:base
311     - .rules:merge-requests
312   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
313   variables:
314     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
315     CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
316     CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
317     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
318
319 gromacs:clang-ASAN:configure:
320   extends:
321     - .gromacs:base:configure
322     - .use-clang:base
323     - .rules:merge-requests
324   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
325   variables:
326     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
327     COMPILER_MAJOR_VERSION: 8
328     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
329
330 gromacs:oneapi-2021.1-beta09-opencl:configure:
331   extends:
332    - .gromacs:base:configure
333    - .use-oneapi:base
334    - .use-opencl
335    - .rules:merge-requests
336   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
337   variables:
338     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
339     COMPILER_MAJOR_VERSION: 2021
340
341 gromacs:oneapi-2021.1-beta09-sycl:configure:
342   extends:
343    - .gromacs:base:configure
344    - .use-oneapi:base
345    - .use-sycl
346    - .rules:merge-and-post-merge-acceptance
347   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
348   variables:
349     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
350     COMPILER_MAJOR_VERSION: 2021
351
352 gromacs:clang-UBSAN:configure:
353   extends:
354     - .gromacs:base:configure
355     - .use-clang:base
356     - .rules:merge-and-post-merge-acceptance
357   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
358   variables:
359     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
360     COMPILER_MAJOR_VERSION: 8
361     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
362
363 gromacs:gcc-8-cuda-11.0:release:configure:
364   extends:
365     - .gromacs:base:release:configure
366     - .use-gcc:base
367     - .use-mpi
368     - .use-cuda
369     - .rules:nightly-only-for-release
370   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
371   variables:
372     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
373     COMPILER_MAJOR_VERSION: 8
374     RELEASE_BUILD_DIR: release-builds-gcc
375     CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
376     CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
377     CMAKE_REGRESSIONTEST_OPTIONS: ""
378   dependencies:
379     - archive:package
380     - regressiontests:package
381     - prepare-release-version
382
383 gromacs:gcc-7:release:configure:
384   extends:
385     - .gromacs:base:release:configure
386     - .use-gcc:base
387     - .use-opencl
388     - .rules:nightly-only-for-release
389   image: gromacs/ci-ubuntu-18.04-gcc-7
390   variables:
391     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
392     COMPILER_MAJOR_VERSION: 7
393     CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
394     RELEASE_BUILD_DIR: release-builds-gcc
395     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
396   dependencies:
397     - archive:package
398     - regressiontests:package
399     - prepare-release-version
400
401 gromacs:clang-9:release:configure:
402   extends:
403     - .gromacs:base:release:configure
404     - .use-clang:base
405     - .use-mpi
406     - .rules:nightly-only-for-release
407   image: gromacs/ci-ubuntu-18.04-llvm-9
408   variables:
409     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
410     COMPILER_MAJOR_VERSION: 9
411     RELEASE_BUILD_DIR: release-builds-clang
412     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
413     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
414   dependencies:
415     - archive:package
416     - regressiontests:package
417     - prepare-release-version
418
419 gromacs:clang-8-cuda-10.1:release:configure:
420   extends:
421     - .gromacs:base:release:configure
422     - .use-clang:base
423     - .use-cuda
424     - .rules:nightly-only-for-release
425   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
426   variables:
427     COMPILER_MAJOR_VERSION: 8
428     RELEASE_BUILD_DIR: release-builds-clang
429     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
430
431 gromacs:oneapi-2021.1-beta09-opencl:release:configure:
432   extends:
433    - .gromacs:base:release:configure
434    - .use-oneapi:base
435    - .use-opencl
436    - .rules:nightly-only-for-release
437   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
438   variables:
439     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
440     COMPILER_MAJOR_VERSION: 2021
441     RELEASE_BUILD_DIR: release-builds-oneapi
442
443 # Jobs running during build stage
444
445 .gromacs:base:build:
446   stage: build
447   script:
448     - CMAKE=${CMAKE:-$(which cmake)}
449     - cd $BUILD_DIR
450     - $CMAKE --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
451     - $CMAKE --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
452     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
453       | grep -v "CMake" | tee buildErrors.log || true
454     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
455     - $CMAKE --build . --target install 2>&1 | tee installBuildLogFile.log
456     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
457     - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
458     - cd ..
459   artifacts:
460     when: always
461     paths:
462       - $BUILD_DIR
463       - $INSTALL_DIR/
464
465 .gromacs:static-analyzer-build:
466   stage: build
467   script:
468     - CMAKE=${CMAKE:-$(which cmake)}
469     - cd $BUILD_DIR
470     - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log
471     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
472       | grep -v "CMake" | tee buildErrors.log || true
473     - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
474     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
475     - cd ..
476   artifacts:
477     when: always
478     paths:
479       - $BUILD_DIR/scan_html
480
481 gromacs:gcc-7: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-7
489   variables:
490     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
491   needs:
492     - job: gromacs:gcc-7:configure
493
494 gromacs:clang-8-cuda-10.0:build:
495   extends:
496     - .variables:default
497     - .gromacs:base:build
498     - .use-clang:base
499     - .use-ccache
500     - .rules:merge-and-post-merge-acceptance
501   image: gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
502   variables:
503     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
504   needs:
505     - job: gromacs:clang-8-cuda-10.0:configure
506
507 gromacs:gcc-8-cuda-11.0:build:
508   extends:
509     - .variables:default
510     - .gromacs:base:build
511     - .before_script:default
512     - .use-ccache
513     - .rules:merge-and-post-merge-acceptance
514   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
515   variables:
516     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
517   needs:
518     - job: gromacs:gcc-8-cuda-11.0:configure
519
520 gromacs:gcc-8-cuda-11.0:buildMPI:
521   extends:
522     - .variables:default
523     - .gromacs:base:build
524     - .before_script:default
525     - .use-ccache
526     - .rules:merge-and-post-merge-acceptance
527   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
528   variables:
529     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
530   needs:
531     - job: gromacs:gcc-8-cuda-11.0:configureMPI
532
533 gromacs:clang-TSAN:build:
534   extends:
535     - .variables:default
536     - .gromacs:base:build
537     - .use-clang:base
538     - .use-ccache
539     - .rules:merge-and-post-merge-acceptance
540   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
541   variables:
542     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
543   needs:
544     - job: gromacs:clang-TSAN:configure
545
546 gromacs:clang-ASAN:build:
547   extends:
548     - .variables:default
549     - .gromacs:base:build
550     - .use-clang:base
551     - .use-ccache
552     - .rules:merge-requests
553   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
554   variables:
555     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
556   tags:
557     - k8s-scilifelab
558   needs:
559     - job: gromacs:clang-ASAN:configure
560
561 gromacs:clang-UBSAN:build:
562   extends:
563     - .variables:default
564     - .gromacs:base:build
565     - .use-clang:base
566     - .use-ccache
567     - .rules:merge-and-post-merge-acceptance
568   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
569   variables:
570     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
571   tags:
572     - k8s-scilifelab
573   needs:
574     - job: gromacs:clang-UBSAN:configure
575
576 gromacs:clang-static-analyzer:build:
577   extends:
578     - .variables:default
579     - .gromacs:static-analyzer-build
580     - .use-clang:base
581     - .use-ccache
582     - .rules:merge-requests
583   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
584   variables:
585     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
586   tags:
587     - k8s-scilifelab
588   needs:
589     - job: gromacs:clang-static-analyzer:configure
590
591 gromacs:clang-8:build:
592   extends:
593     - .variables:default
594     - .gromacs:base:build
595     - .before_script:default
596     - .use-ccache
597     - .rules:merge-requests
598   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
599   needs:
600     - job: gromacs:clang-8:configure
601
602 gromacs:oneapi-2021.1-beta09-opencl:build:
603   extends:
604     - .variables:default
605     - .gromacs:base:build
606     - .use-ccache
607     - .use-oneapi:base
608     - .rules:merge-requests
609   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
610   variables:
611     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
612   needs:
613     - job: gromacs:oneapi-2021.1-beta09-opencl:configure
614
615 gromacs:oneapi-2021.1-beta09-sycl:build:
616   extends:
617     - .variables:default
618     - .gromacs:base:build
619     - .use-ccache
620     - .use-oneapi:base
621     - .rules:merge-and-post-merge-acceptance
622   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
623   variables:
624     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
625   needs:
626     - job: gromacs:oneapi-2021.1-beta09-sycl:configure
627
628 gromacs:clang-9-mpi:build:
629   extends:
630     - .variables:default
631     - .gromacs:base:build
632     - .before_script:default
633     - .use-ccache
634     - .rules:merge-requests
635   image: gromacs/ci-ubuntu-18.04-llvm-9
636   variables:
637     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
638   needs:
639     - job: gromacs:clang-9-mpi:configure
640
641 gromacs:gcc-8-cuda-11.0:release:build:
642   extends:
643     - .variables:default  
644     - .gromacs:base:build
645     - .before_script:default
646     - .use-ccache
647     - .rules:nightly-only-for-release
648   stage: release-build
649   variables:
650     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
651     BUILD_DIR: release-builds-gcc
652   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
653   needs:
654     - job: gromacs:gcc-8-cuda-11.0:release:configure
655
656 gromacs:gcc-7:release:build:
657   extends:
658     - .variables:default
659     - .gromacs:base:build
660     - .before_script:default
661     - .use-ccache
662     - .rules:nightly-only-for-release
663   stage: release-build
664   variables:
665     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
666     BUILD_DIR: release-builds-gcc
667   image: gromacs/ci-ubuntu-18.04-gcc-7
668   needs:
669     - job: gromacs:gcc-7:release:configure
670
671 gromacs:clang-9:release:build:
672   extends:
673     - .variables:default
674     - .gromacs:base:build
675     - .before_script:default
676     - .use-ccache
677     - .rules:nightly-only-for-release
678   stage: release-build
679   variables:
680     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
681     BUILD_DIR: release-builds-clang
682   image: gromacs/ci-ubuntu-18.04-llvm-9
683   needs:
684     - job: gromacs:clang-9:release:configure
685
686 gromacs:clang-8-cuda-10.1:release:build:
687   extends:
688     - .variables:default
689     - .gromacs:base:build
690     - .before_script:default
691     - .use-ccache
692     - .rules:nightly-only-for-release
693   stage: release-build
694   variables:
695     BUILD_DIR: release-builds-clang
696   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
697   needs:
698     - job: gromacs:clang-8-cuda-10.1:release:configure
699
700 gromacs:oneapi-2021.1-beta09-opencl:release:build:
701   extends:
702     - .variables:default
703     - .gromacs:base:build
704     - .use-oneapi:base
705     - .use-opencl
706     - .use-ccache
707     - .rules:nightly-only-for-release
708   stage: release-build
709   variables:
710     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
711     BUILD_DIR: release-builds-oneapi
712     COMPILER_MAJOR_VERSION: 2021
713   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
714   needs:
715     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
716
717 # Jobs running during test stage
718
719 .gromacs:base:test:
720   extends:
721     - .variables:default
722   stage: test
723   cache: {}
724   retry:
725     max: 1
726   variables:
727     CTEST_RUN_MODE: "ExperimentalTest"
728   script:
729     - CMAKE=${CMAKE:-$(which cmake)}
730     - cd $BUILD_DIR
731     - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
732     # Needed to run MPI enabled code in the docker images, until we set up different users
733     - export OMPI_ALLOW_RUN_AS_ROOT=1
734     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
735     - 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"
736     # If $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES is not set and we have GPUs, set it
737     - if [ -z $GMX_TEST_REQUIRED_NUMBER_OF_DEVICES ] && [ -n $KUBERNETES_EXTENDED_RESOURCE_NAME ] ; then
738       if grep -q '/gpu$' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
739       echo "export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES=\"$KUBERNETES_EXTENDED_RESOURCE_LIMIT\"";
740       export GMX_TEST_REQUIRED_NUMBER_OF_DEVICES="$KUBERNETES_EXTENDED_RESOURCE_LIMIT";
741       fi
742       fi
743     - if grep -qF 'nvidia.com/gpu' <<< "$KUBERNETES_EXTENDED_RESOURCE_NAME"; then
744       nvidia-smi || true;
745       fi
746     - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
747     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
748       ctestLog.log | tee ctestErrors.log
749     - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
750     - if [ -s ctestErrors.log ] ; then
751       echo "Error during running ctest";
752       exit 1;
753       fi
754     - cd ..
755   artifacts:
756     reports:
757       junit: $BUILD_DIR/JUnitTestResults.xml
758     paths:
759       - $BUILD_DIR/Testing
760       - $BUILD_DIR/tests
761     when: always
762     expire_in: 1 week
763
764 .gromacs:base:regressiontest:
765   extends:
766     - .variables:default
767   variables:
768     KUBERNETES_CPU_LIMIT: 4
769     KUBERNETES_CPU_REQUEST: 4
770     KUBERNETES_MEMORY_REQUEST: 4Gi
771     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
772     REGRESSIONTEST_OMP_RANK_NUMBER: 2
773     REGRESSIONTEST_PME_RANK_NUMBER: 1
774     REGRESSIONTEST_MPI_RUN_COMMAND: ""
775     REGRESSIONTEST_DOUBLE: ""
776     REGRESSIONTEST_PARALLEL: "-nt"
777   stage: test
778   cache: {}
779   retry:
780     max: 1
781   script:
782     - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
783     - 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"
784     # Needed to run MPI enabled code in the docker images, until we set up different users
785     - export OMPI_ALLOW_RUN_AS_ROOT=1
786     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
787     - tar xzf gmx-regressiontests.tar.gz
788     - source $INSTALL_DIR/bin/GMXRC
789     - cd regressiontests
790     - 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
791   artifacts:
792     paths:
793       - regressiontests/gmxtest.xml
794     when: always
795     expire_in: 1 week
796
797 gromacs:gcc-7:test:
798   extends:
799     - .gromacs:base:test
800     - .rules:merge-requests
801   image: gromacs/ci-ubuntu-18.04-gcc-7
802   variables:
803     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
804     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
805     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
806     LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
807   tags:
808     - k8s-scilifelab
809   needs:
810     - job: gromacs:gcc-7:build
811
812 gromacs:clang-8-cuda-10.0:test:
813   extends:
814     - .gromacs:base:test
815     - .rules:post-merge-acceptance
816   image: gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
817   variables:
818     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
819     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
820     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
821   tags:
822     - k8s-scilifelab
823   needs:
824     - job: gromacs:clang-8-cuda-10.0:build
825
826 gromacs:gcc-8-cuda-11.0:test:
827   extends:
828     - .gromacs:base:test
829     - .rules:merge-requests
830   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
831   variables:
832     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
833     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
834     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
835   tags:
836     - k8s-scilifelab
837   needs:
838     - job: gromacs:gcc-8-cuda-11.0:build
839
840 gromacs:gcc-8-cuda-11.0:test-gpucommupd:
841   extends:
842     - .gromacs:base:test
843     - .rules:post-merge-acceptance
844   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
845   variables:
846     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
847     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
848     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
849     GMX_GPU_DD_COMMS: 1
850     GMX_GPU_PME_PP_COMMS: 1
851     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
852   tags:
853     - k8s-scilifelab
854   needs:
855     - job: gromacs:gcc-8-cuda-11.0:build
856
857 gromacs:clang-8:test:
858   extends:
859     - .gromacs:base:test
860     - .rules:merge-requests
861   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
862   needs:
863     - job: gromacs:clang-8:build
864
865 gromacs:clang-TSAN:test:
866   extends:
867     - .gromacs:base:test
868     - .rules:post-merge-acceptance
869   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
870   variables:
871     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
872   needs:
873     - job: gromacs:clang-TSAN:build
874
875 gromacs:clang-ASAN:test:
876   extends:
877     - .gromacs:base:test
878     - .use-clang:base
879     - .rules:merge-requests
880   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
881   variables:
882     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
883     CTEST_RUN_MODE: "ExperimentalMemCheck"
884   tags:
885     - k8s-scilifelab
886   needs:
887     - job: gromacs:clang-ASAN:build
888
889 gromacs:clang-UBSAN:test:
890   extends:
891     - .gromacs:base:test
892     - .use-clang:base
893     - .rules:post-merge-acceptance
894   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
895   variables:
896     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
897   tags:
898     - k8s-scilifelab
899   needs:
900     - job: gromacs:clang-UBSAN:build
901
902 gromacs:oneapi-2021.1-beta09-opencl:test:
903   extends:
904     - .gromacs:base:test
905     - .use-oneapi:base
906     - .rules:merge-requests
907   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
908   variables:
909     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
910   needs:
911     - job: gromacs:oneapi-2021.1-beta09-opencl:build
912
913 gromacs:oneapi-2021.1-beta09-sycl:test:
914   extends:
915     - .gromacs:base:test
916     - .use-oneapi:base
917     - .rules:post-merge-acceptance
918   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
919   variables:
920     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
921   needs:
922     - job: gromacs:oneapi-2021.1-beta09-sycl:build
923
924 gromacs:clang-9-mpi:test:
925   extends:
926     - .gromacs:base:test
927     - .rules:merge-requests
928   image: gromacs/ci-ubuntu-18.04-llvm-9
929   variables:
930     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
931   tags:
932     - k8s-scilifelab
933   needs:
934     - job: gromacs:clang-9-mpi:build
935
936 gromacs:gcc-7:regressiontest:
937   extends:
938     - .gromacs:base:regressiontest
939     - .rules:post-merge-acceptance
940   image: gromacs/ci-ubuntu-18.04-gcc-7
941   variables:
942     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
943     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
944     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
945     REGRESSIONTEST_PME_RANK_NUMBER: 0
946     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
947     REGRESSIONTEST_OMP_RANK_NUMBER: 1
948     LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
949   tags:
950     - k8s-scilifelab
951   needs:
952     - job: gromacs:gcc-7:build
953     - job: regressiontests:prepare
954
955 gromacs:clang-8-cuda-10.0:regressiontest:
956   extends:
957     - .gromacs:base:regressiontest
958     - .rules:post-merge-acceptance
959   image: gromacs/ci-ubuntu-18.04-llvm-8-cuda-10.0
960   variables:
961     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
962     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
963     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
964     REGRESSIONTEST_PME_RANK_NUMBER: 0
965     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
966     REGRESSIONTEST_OMP_RANK_NUMBER: 1
967   tags:
968     - k8s-scilifelab
969   needs:
970     - job: gromacs:clang-8-cuda-10.0:build
971     - job: regressiontests:prepare
972
973
974 gromacs:gcc-8-cuda-11.0:regressiontest:
975   extends:
976     - .gromacs:base:regressiontest
977     - .rules:merge-requests
978   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
979   variables:
980     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
981     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
982     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
983     REGRESSIONTEST_PME_RANK_NUMBER: 0
984     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
985     REGRESSIONTEST_OMP_RANK_NUMBER: 1
986   tags:
987     - k8s-scilifelab
988   needs:
989     - job: gromacs:gcc-8-cuda-11.0:build
990     - job: regressiontests:prepare
991
992 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-tMPI:
993   extends:
994     - .gromacs:base:regressiontest
995     - .rules:post-merge-acceptance
996   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
997   variables:
998     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
999     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1000     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
1001     REGRESSIONTEST_PME_RANK_NUMBER: 0
1002     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
1003     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1004     GMX_GPU_DD_COMMS: 1
1005     GMX_GPU_PME_PP_COMMS: 1
1006     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
1007   tags:
1008     - k8s-scilifelab
1009   needs:
1010     - job: gromacs:gcc-8-cuda-11.0:build
1011     - job: regressiontests:prepare
1012   artifacts:
1013     paths:
1014       - regressiontests
1015     when: always
1016     expire_in: 1 week
1017
1018 gromacs:gcc-8-cuda-11.0:regressiontest-upd-tMPI:
1019   extends:
1020     - .gromacs:base:regressiontest
1021     - .rules:post-merge-acceptance
1022   image: gromacs/cmake-3.15.7-gcc-8-cuda-11.0-nvidiaopencl-clfft-openmpi-master
1023   variables:
1024     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1025     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
1026     REGRESSIONTEST_PME_RANK_NUMBER: 0
1027     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
1028     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1029     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
1030   tags:
1031     - k8s-scilifelab
1032   needs:
1033     - job: gromacs:gcc-8-cuda-11.0:build
1034     - job: regressiontests:prepare
1035   artifacts:
1036     paths:
1037       - regressiontests
1038     when: always
1039     expire_in: 1 week
1040
1041 gromacs:gcc-8-cuda-11.0:regressiontest-gpucommupd-MPI:
1042   extends:
1043     - .gromacs:base:regressiontest
1044     - .rules:post-merge-acceptance
1045   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
1046   variables:
1047     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1048     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1049     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
1050     REGRESSIONTEST_PME_RANK_NUMBER: 0
1051     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
1052     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1053     REGRESSIONTEST_PARALLEL: "-np"
1054     GMX_GPU_DD_COMMS: 1  
1055     GMX_GPU_PME_PP_COMMS: 1
1056     GMX_FORCE_UPDATE_DEFAULT_GPU: 1
1057   tags:
1058     - k8s-scilifelab
1059   needs:
1060     - job: gromacs:gcc-8-cuda-11.0:buildMPI
1061     - job: regressiontests:prepare
1062   artifacts:
1063     paths:
1064       - regressiontests
1065     when: always
1066     expire_in: 1 week
1067
1068 gromacs:clang-8:regressiontest:
1069   extends:
1070     - .gromacs:base:regressiontest
1071     - .rules:merge-requests
1072   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
1073   tags:
1074     - k8s-scilifelab
1075   needs:
1076     - job: gromacs:clang-8:build
1077     - job: regressiontests:prepare
1078
1079 gromacs:clang-TSAN:regressiontest:
1080   extends:
1081     - .gromacs:base:regressiontest
1082     - .rules:post-merge-acceptance
1083   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1084   variables:
1085     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1086   tags:
1087     - k8s-scilifelab
1088   needs:
1089     - job: gromacs:clang-TSAN:build
1090     - job: regressiontests:prepare
1091
1092 gromacs:clang-ASAN:regressiontest:
1093   extends:
1094     - .gromacs:base:regressiontest
1095     - .use-clang:base
1096     - .rules:merge-requests
1097   image: gromacs/ci-ubuntu-18.04-llvm-8-tsan
1098   variables:
1099     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1100   tags:
1101     - k8s-scilifelab
1102   needs:
1103     - job: gromacs:clang-ASAN:build
1104     - job: regressiontests:prepare
1105
1106 gromacs:clang-9:regressiontest:
1107   extends:
1108     - .gromacs:base:regressiontest
1109     - .rules:merge-requests
1110   image: gromacs/ci-ubuntu-18.04-llvm-9
1111   variables:
1112     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1113     REGRESSIONTEST_DOUBLE: "-double"
1114     REGRESSIONTEST_PARALLEL: "-np"
1115   tags:
1116     - k8s-scilifelab
1117   needs:
1118     - job: gromacs:clang-9-mpi:build
1119     - job: regressiontests:prepare
1120
1121 gromacs:oneapi-2021.1-beta09-opencl:regressiontest:
1122   extends:
1123     - .gromacs:base:regressiontest
1124     - .use-oneapi:base
1125     - .rules:merge-requests
1126   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1127   variables:
1128     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1129   needs:
1130     - job: gromacs:oneapi-2021.1-beta09-opencl:build
1131     - job: regressiontests:prepare
1132
1133 gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
1134   extends:
1135     - .gromacs:base:regressiontest
1136     - .use-oneapi:base
1137     - .rules:post-merge-acceptance
1138   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1139   variables:
1140     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1141   needs:
1142     - job: gromacs:oneapi-2021.1-beta09-sycl:build
1143     - job: regressiontests:prepare
1144
1145 gromacs:gcc-8-cuda-11.0:release:test:
1146   extends:
1147     - .gromacs:base:test
1148     - .rules:nightly-only-for-release
1149   stage: release-tests
1150   image: gromacs/ci-ubuntu-18.04-gcc-8-cuda-11.0
1151   variables:
1152     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1153     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1154     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1155     BUILD_DIR: release-builds-gcc
1156   tags:
1157     - k8s-scilifelab
1158   needs:
1159     - job: gromacs:gcc-8-cuda-11.0:release:configure
1160     - job: gromacs:gcc-8-cuda-11.0:release:build
1161
1162 gromacs:gcc-7:release:test:
1163   extends:
1164     - .gromacs:base:test
1165     - .rules:nightly-only-for-release
1166   stage: release-tests
1167   image: gromacs/ci-ubuntu-18.04-gcc-7
1168   variables:
1169     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1170     BUILD_DIR: release-builds-gcc
1171     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1172     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1173     LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1174   tags:
1175     - k8s-scilifelab
1176   needs:
1177     - job: gromacs:gcc-7:release:configure
1178     - job: gromacs:gcc-7:release:build
1179
1180 gromacs:clang-9:release:test:
1181   extends:
1182     - .gromacs:base:test
1183     - .rules:nightly-only-for-release
1184   stage: release-tests
1185   image: gromacs/ci-ubuntu-18.04-llvm-9
1186   variables:
1187     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1188     BUILD_DIR: release-builds-clang
1189   needs:
1190     - job: gromacs:clang-9:release:configure
1191     - job: gromacs:clang-9:release:build
1192
1193 gromacs:clang-8-cuda-10.1:release:test:
1194   extends:
1195     - .gromacs:base:test
1196     - .rules:nightly-only-for-release
1197   stage: release-tests
1198   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1199   variables:
1200     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1201     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1202     BUILD_DIR: release-builds-clang
1203   tags:
1204     - k8s-scilifelab
1205   needs:
1206     - job: gromacs:clang-8-cuda-10.1:release:configure
1207     - job: gromacs:clang-8-cuda-10.1:release:build
1208
1209 gromacs:oneapi-2021.1-beta09-opencl:release:test:
1210   extends:
1211     - .gromacs:base:test
1212     - .use-oneapi:base
1213     - .rules:nightly-only-for-release
1214   stage: release-tests
1215   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1216   variables:
1217     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1218     BUILD_DIR: release-builds-oneapi
1219   needs:
1220     - job: gromacs:oneapi-2021.1-beta09-opencl:release:configure
1221     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1222
1223 gromacs:gcc-7:release:regressiontest:
1224   extends:
1225     - .gromacs:base:regressiontest
1226     - .rules:nightly-only-for-release
1227   stage: release-tests
1228   image: gromacs/ci-ubuntu-18.04-gcc-7
1229   variables:
1230     CMAKE: /usr/local/cmake-3.13.0/bin/cmake
1231     BUILD_DIR: release-builds-gcc
1232     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
1233     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1234     LD_LIBRARY_PATH: "/opt/rocm-3.5.0/opencl/lib"
1235   tags:
1236     - k8s-scilifelab
1237   needs:
1238     - job: gromacs:gcc-7:release:build
1239     - job: regressiontests:package
1240
1241 gromacs:clang-9:release:regressiontest:
1242   extends:
1243     - .gromacs:base:regressiontest
1244     - .rules:nightly-only-for-release
1245   stage: release-tests
1246   image: gromacs/ci-ubuntu-18.04-llvm-9
1247   variables:
1248     CMAKE: /usr/local/cmake-3.15.7/bin/cmake
1249     BUILD_DIR: release-builds-clang
1250     REGRESSIONTEST_DOUBLE: "-double"
1251     REGRESSIONTEST_PARALLEL: "-np"
1252   tags:
1253     - k8s-scilifelab
1254   needs:
1255     - job: gromacs:clang-9:release:build
1256     - job: regressiontests:package
1257
1258 gromacs:clang-8-cuda-10.1:release:regressiontest:
1259   extends:
1260     - .gromacs:base:regressiontest
1261     - .rules:nightly-only-for-release
1262   stage: release-tests
1263   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
1264   variables:
1265     BUILD_DIR: release-builds-clang
1266     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
1267     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
1268     REGRESSIONTEST_PME_RANK_NUMBER: 0
1269     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1270     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1271   tags:
1272     - k8s-scilifelab
1273   needs:
1274     - job: gromacs:clang-8-cuda-10.1:release:build
1275     - job: regressiontests:package
1276
1277 gromacs:oneapi-2021.1-beta09-opencl:release:regressiontest:
1278   extends:
1279     - .gromacs:base:regressiontest
1280     - .use-oneapi:base
1281     - .rules:nightly-only-for-release
1282   stage: release-tests
1283   image: gromacs/ci-ubuntu-18.04-gcc-7-oneapi-2021.1-beta09
1284   variables:
1285     CMAKE: /usr/local/cmake-3.17.2/bin/cmake
1286     BUILD_DIR: release-builds-oneapi
1287     REGRESSIONTEST_PME_RANK_NUMBER: 0
1288     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
1289     REGRESSIONTEST_OMP_RANK_NUMBER: 1
1290   needs:
1291     - job: gromacs:oneapi-2021.1-beta09-opencl:release:build
1292     - job: regressiontests:package