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