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