1 # Build, test, and install variously configured GROMACS installations.
3 # This file contains job templates. Actual job configurations are inside gromacs.matrix/ directory.
5 .gromacs:base:configure:
11 KUBERNETES_CPU_LIMIT: 1
12 KUBERNETES_CPU_REQUEST: 1
13 KUBERNETES_MEMORY_REQUEST: 2Gi
14 CMAKE_COMPILER_SCRIPT: ""
15 CMAKE_EXTRA_OPTIONS: ""
16 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
17 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
18 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
19 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
20 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
22 - bash -x admin/ci-scripts/gromacs-base-configure.sh
28 .gromacs:base:release:configure:
31 stage: release-configure
34 KUBERNETES_CPU_LIMIT: 1
35 KUBERNETES_CPU_REQUEST: 1
36 KUBERNETES_MEMORY_REQUEST: 2Gi
37 CMAKE_COMPILER_SCRIPT: ""
38 CMAKE_EXTRA_OPTIONS: ""
39 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
40 CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
41 CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
42 CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
43 CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
44 CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
45 RELEASE_BUILD_DIR: release-builds
46 RELEASE_SOURCE: release-source-from-tarball
47 RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
49 - CMAKE=${CMAKE:-$(which cmake)}
50 - VERSION=`sed -n -e '/GMX_VERSION_STRING\b/ s/.*"\(.*\)")/\1/p' VersionInfo-partial.cmake.cmakein`
51 - if [[ $GROMACS_RELEASE != "true" ]] ; then
52 VERSION=$VERSION-dev ;
54 - SOURCENAME=gromacs-$VERSION
55 - SOURCETARBALL=$SOURCENAME.tar.gz
56 - REGTESTNAME=regressiontests-$VERSION
57 - REGTESTTARBALL=$REGTESTNAME.tar.gz
58 - echo "$SOURCETARBALL"
59 - echo "$REGTESTTARBALL"
60 - RELEASE_TARBALLS=release-tarballs
61 - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
62 - mv $SOURCETARBALL $RELEASE_TARBALLS
63 - mv $REGTESTTARBALL $RELEASE_TARBALLS
64 - cd $RELEASE_TARBALLS
65 # We rename the source and regressiontest directories
66 # to have names for them that don't change for different versions.
67 - tar -xf $SOURCETARBALL
68 - mv $SOURCENAME ../$RELEASE_SOURCE
69 - tar -xf $REGTESTTARBALL
70 - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
71 - rm $SOURCETARBALL $REGTESTTARBALL
73 - echo $CMAKE_COMPILER_SCRIPT
74 - echo $CMAKE_EXTRA_OPTIONS
75 - echo $CMAKE_SIMD_OPTIONS
76 - echo $CMAKE_GPU_OPTIONS
77 - echo $CMAKE_MPI_OPTIONS
78 - echo $CMAKE_PRECISION_OPTIONS
79 - echo $CMAKE_BUILD_TYPE_OPTIONS
80 - echo $CMAKE_GMXAPI_OPTIONS
81 - if [[ -d $RELEASE_BUILD_DIR ]] ; then
82 echo "Cleaning up build directory" ;
83 rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
85 echo "Preparing new build directory" ;
86 mkdir $RELEASE_BUILD_DIR ;
88 - cd $RELEASE_BUILD_DIR
91 - $CMAKE ../$RELEASE_SOURCE/
92 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
93 $CMAKE_COMPILER_SCRIPT
97 $CMAKE_PRECISION_OPTIONS
98 $CMAKE_BUILD_TYPE_OPTIONS
100 $CMAKE_GMXAPI_OPTIONS
101 $CMAKE_REGRESSIONTEST_OPTIONS
102 -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
103 2>&1 | tee cmakeLog.log
104 - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
105 - if [ -s cmakeErrors.log ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
111 - $RELEASE_REGRESSIONTESTS
117 - bash -x admin/ci-scripts/gromacs-base-build.sh
124 .gromacs:static-analyzer-build:
127 - CMAKE=${CMAKE:-$(which cmake)}
131 - scan-build -o scan_html $CMAKE --build . -- -j8 2>&1 | tee buildLogFile.log
132 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
133 | grep -v "CMake" | tee buildErrors.log || true
134 - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
135 - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
140 - $BUILD_DIR/scan_html
150 CTEST_RUN_MODE: "ExperimentalTest"
152 - bash -x admin/ci-scripts/gromacs-base-test.sh
155 junit: $BUILD_DIR/JUnitTestResults.xml
162 .gromacs:base:regressiontest:
166 KUBERNETES_CPU_LIMIT: 4
167 KUBERNETES_CPU_REQUEST: 4
168 KUBERNETES_MEMORY_REQUEST: 4Gi
169 REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
170 REGRESSIONTEST_OMP_RANK_NUMBER: 2
171 REGRESSIONTEST_PME_RANK_NUMBER: 1
172 REGRESSIONTEST_MPI_RUN_COMMAND: ""
173 REGRESSIONTEST_DOUBLE: ""
174 REGRESSIONTEST_PARALLEL: "-nt"
180 - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
181 - 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"
182 # Needed to run MPI enabled code in the docker images, until we set up different users
183 - export OMPI_ALLOW_RUN_AS_ROOT=1
184 - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
185 - tar xzf gmx-regressiontests.tar.gz
186 - source $INSTALL_DIR/bin/GMXRC
188 - 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
191 - regressiontests/gmxtest.xml
196 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8-cuda-11.0-release.gitlab-ci.yml'
197 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-8.gitlab-ci.yml'
198 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-13-mpi.gitlab-ci.yml'
199 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-13-release.gitlab-ci.yml'
200 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-12-cuda-11.4.1.gitlab-ci.yml'
201 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-ASAN.gitlab-ci.yml'
202 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-static-analyzer.gitlab-ci.yml'
203 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-TSAN.gitlab-ci.yml'
204 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.clang-UBSAN.gitlab-ci.yml'
205 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-11.gitlab-ci.yml'
206 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-11-coverage.gitlab-ci.yml'
207 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-11.0.gitlab-ci.yml'
208 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-7-cuda-11.0-mpi.gitlab-ci.yml'
209 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-11-cuda-11.4.1.gitlab-ci.yml'
210 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-11-cuda-11.4.1-release.gitlab-ci.yml'
211 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.gcc-11-release.gitlab-ci.yml'
212 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.hipsycl-dev.gitlab-ci.yml'
213 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.4.0-opencl.gitlab-ci.yml'
214 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.4.0-opencl-release.gitlab-ci.yml'
215 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.4.0-sycl.gitlab-ci.yml'
216 - local: '/admin/gitlab-ci/gromacs.matrix/gromacs.oneapi-2021.4.0-sycl-nightly.gitlab-ci.yml'