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