Skip to content

Commit

Permalink
Merge tag 'v2020.4' into release-2020-fda
Browse files Browse the repository at this point in the history
GROMACS version 2020.4
  • Loading branch information
BerndDoser committed Oct 29, 2020
2 parents 912d4c5 + 4266b0b commit 4b57905
Show file tree
Hide file tree
Showing 68 changed files with 1,208 additions and 459 deletions.
5 changes: 1 addition & 4 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,10 @@ stages:
# Deploy stage for release builds
- release-deploy

default:
tags:
- k8s-scilifelab

include:
# Mix-in helper job definitions of general utility.
- local: '/admin/gitlab-ci/global.gitlab-ci.yml'
- local: '/admin/gitlab-ci/rules.gitlab-ci.yml'
# gmxapi Python package.
- local: '/admin/gitlab-ci/python-gmxapi.gitlab-ci.yml'
# Further API validation and usability of sample gmxapi extension package.
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ check_cxx_source_compiles("int main(){ return __builtin_clz(1);}" HAVE_BUILTIN
check_cxx_source_compiles("int main(){ return __builtin_clzll(1);}" HAVE_BUILTIN_CLZLL)
if(MSVC)
check_cxx_source_compiles("#include <intrin.h>\n int main(){unsigned long r;unsigned long i=1;_BitScanReverse(&r,i);return r;}" HAVE_BITSCANREVERSE)
check_cxx_source_compiles("#include <intrin.h>\n int main(){unsigned long r;unsigned __int64 i=1;_BitScanReverse(&r,i);return r;}" HAVE_BITSCANREVERSE64)
check_cxx_source_compiles("#include <intrin.h>\n int main(){unsigned long r;unsigned __int64 i=1;_BitScanReverse64(&r,i);return r;}" HAVE_BITSCANREVERSE64)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "XL")
check_cxx_source_compiles("int main(){ return __cntlz4(1);}" HAVE_CNTLZ4)
check_cxx_source_compiles("int main(){ return __cntlz8(1);}" HAVE_CNTLZ8)
Expand Down
35 changes: 20 additions & 15 deletions admin/gitlab-ci/archive.gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,14 @@ prepare-release-version:
cache: {}
# Docker image uploaded to dockerhub by user eriklindahl
# TODO: Get DockerFile for admin/dockerfiles
image: biophysics/gcc-gromacs
image: gromacs/ci-docs-llvm:2020
stage: configure-build

variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
script:
- cmake -P cmake/gmxVersionInfo.cmake &> version.json

artifacts:
paths:
- version.json
Expand All @@ -27,18 +25,26 @@ prepare-release-version:
regressiontests:prepare:
extends:
- .variables:default
- .rules:merge-requests
- .rules:merge-and-post-merge-acceptance
cache: {}
image: biophysics/gcc-gromacs
image: gromacs/ci-docs-llvm:2020
stage: configure-build

variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
# Always clone the default version for this branch, master in this case
script:
- export REGTESTBRANCH=release-2020
- if [[ ! -z $REGRESSIONTESTBRANCH ]] ; then
export REGTESTBRANCH=$REGRESSIONTESTBRANCH ;
echo "Using $REGTESTBRANCH instead of default" ;
fi
- export CHECKOUTCOMMIT=FETCH_HEAD
- if [[ ! -z $REGRESSIONTESTCOMMIT ]] ; then
export CHECKOUTCOMMIT=$REGRESSIONTESTCOMMIT ;
echo "Using $CHECKOUTCOMMIT instead of head of $REGTESTBRANCH" ;
fi
- if [[ ! -d regressiontests ]] ; then
mkdir regressiontests ;
cd regressiontests ;
Expand All @@ -47,7 +53,7 @@ regressiontests:prepare:
fi
- cd regressiontests
- git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
- git checkout -qf FETCH_HEAD
- git checkout -qf $CHECKOUTCOMMIT
- git clean -ffdxq
- git gc
- git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
Expand All @@ -65,13 +71,12 @@ regressiontests:package:
cache: {}
# Docker image uploaded to dockerhub by user eriklindahl
# TODO: Get DockerFile for admin/dockerfiles
image: biophysics/gcc-gromacs
image: gromacs/ci-docs-llvm:2020
stage: release-package

variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
needs:
- job: prepare-release-version
script:
Expand Down Expand Up @@ -144,7 +149,7 @@ archive:configure:release:
variables:
KUBERNETES_CPU_LIMIT: 4
KUBERNETES_CPU_REQUEST: 2
KUBERNETES_MEMORY_LIMIT: 4Gi
KUBERNETES_MEMORY_REQUEST: 4Gi
script:
- rm -rf gromacs*tar.gz
- cd $BUILD_DIR
Expand Down Expand Up @@ -203,7 +208,7 @@ archive:package:
BUILD_DIR: build-package

release-verify:
image: biophysics/gcc-gromacs
image: gromacs/ci-docs-llvm:2020
stage: release-verify
extends:
- .variables:default
Expand All @@ -213,7 +218,7 @@ release-verify:
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
script:
- VERSION=`cat version.json |
python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
Expand Down
19 changes: 10 additions & 9 deletions admin/gitlab-ci/documentation.gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
CMAKE_COMPILER_SCRIPT: "-DCMAKE_C_COMPILER=clang-7 -DCMAKE_CXX_COMPILER=clang++-7"
CMAKE_EXTRA_OPTIONS: ""
CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=OFF"
CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
Expand Down Expand Up @@ -79,9 +78,8 @@
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
KUBERNETES_MEMORY_LIMIT: 2Gi
KUBERNETES_MEMORY_REQUEST: 2Gi
CMAKE_COMPILER_SCRIPT: "-DCMAKE_C_COMPILER=clang-7 -DCMAKE_CXX_COMPILER=clang++-7"
CMAKE_EXTRA_OPTIONS: ""
CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
Expand Down Expand Up @@ -178,7 +176,6 @@ docs:configure:
extends:
- .docs:configure
- .rules:basic-push
tags: []
variables:
BUILD_DIR: build-docs
CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
Expand Down Expand Up @@ -206,7 +203,6 @@ docs:build:
- .before_script:default
- .rules:basic-push
stage: documentation
tags: []
needs:
- job: docs:configure
variables:
Expand All @@ -231,7 +227,7 @@ docs:build:
variables:
KUBERNETES_CPU_LIMIT: 4
KUBERNETES_CPU_REQUEST: 2
KUBERNETES_MEMORY_LIMIT: 4Gi
KUBERNETES_MEMORY_REQUEST: 4Gi
script:
- cd $BUILD_DIR
- cmake --build . --target manual -- -j4 | tee docs/manual/all-output.log
Expand Down Expand Up @@ -263,7 +259,6 @@ webpage:build:
- .webpage:build
- .rules:basic-push
stage: post-test
tags: []
needs:
- job: docs:build
- job: check-source
Expand All @@ -276,6 +271,8 @@ webpage:configure:
- .docs:configure:release
- .rules:nightly-only-for-release
cache: {}
tags:
- k8s-scilifelab
dependencies:
- archive:package
- regressiontests:package
Expand All @@ -293,6 +290,8 @@ webpage:dependencies:
- .before_script:default
- .rules:nightly-only-for-release
stage: release-build
tags:
- k8s-scilifelab
needs:
- job: webpage:configure
variables:
Expand All @@ -302,9 +301,11 @@ webpage:build:release:
extends:
- .webpage:build
- .rules:nightly-only-for-release
stage: release-prepare-deploy
tags:
- k8s-scilifelab
dependencies:
- webpage:dependencies
- webpage:configure
stage: release-prepare-deploy
variables:
BUILD_DIR: release-doc-builds
116 changes: 7 additions & 109 deletions admin/gitlab-ci/global.gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
# Mix-in job definitions.
# The (hidden) job definitions in this file are available to the regular job
# definitions in other files because this file is first in the *include* list
# in the root `.gitlab-ci.yml` file.

# Centralized definitions of common job parameter values.
# Parameters with many optional configurations may be in separate files.
# Refer to the Infrastructure section of the GROMACS Developer Guide.

.variables:default:
variables:
KUBERNETES_CPU_LIMIT: 8
KUBERNETES_CPU_REQUEST: 4
KUBERNETES_MEMORY_REQUEST: 4Gi
KUBERNETES_MEMORY_LIMIT: 8Gi
KUBERNETES_EXTENDED_RESOURCE_NAME: ""
KUBERNETES_EXTENDED_RESOURCE_LIMIT: 0
CACHE_FALLBACK_KEY: "$CI_JOB_NAME-$CI_JOB_STAGE-release-2020"
BUILD_DIR: build
INSTALL_DIR: install
CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
# TODO: Get these from updated Docker images.
CMAKE_GMXAPI_OPTIONS: ""

# Our generic before_script to install dependencies and prepare the ccache directory.
.before_script:default:
Expand All @@ -22,113 +27,6 @@
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache

# Jobs that run for new commits and pipelines triggered by schedules or
# through the web interface, unless GROMACS_RELEASE is set. Excluded from
# extra pipelines generated by merge request events.
# Includes non-gromacs projects. Note that jobs using this rule are
# eligible to run on non-gromacs project infrastructure, and should therefore
# override the default *tag* parameter to exclude tags specific to the GROMACS
# GitLab Runner infrastructure. I.e. in the job definition, set `tags: []`
.rules:basic-push:
rules:
- if: '$GROMACS_RELEASE'
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
- if: '$CI_PIPELINE_SOURCE == "push"'
when: always
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never

# Jobs that run for merge requests and schedules, but not when GROMACS_RELEASE
# is set. Excludes non-gromacs projects.
.rules:merge-requests:
rules:
- if: '$CI_PROJECT_NAMESPACE != "gromacs"'
when: never
- if: '$GROMACS_RELEASE'
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
- if: '$CI_PIPELINE_SOURCE == "push"'
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always

# Jobs that run for merge requests and schedules for branch `master`,
# but not when GROMACS_RELEASE is set.
# Excludes non-gromacs projects.
.rules:merge-requests:master:
rules:
- if: '$CI_PROJECT_NAMESPACE != "gromacs"'
when: never
- if: '$GROMACS_RELEASE'
when: never
# This rule catches "push" and other events in branches other than `master`
# but allows merge_request_events for merge requests targeting master.
# This rule is before "web" so the web interface won't include jobs that can't succeed
# (and would not ordinarily be run). Such jobs are hard to identify in a way that is
# sufficiently general for a global rules definition.
# If extra coverage is needed through a web-triggered job in merge request branches,
# we could provide an additional short-circuiting rule based on an environment variable
# to be provided through the web interface.
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master" && $CI_COMMIT_REF_NAME != "master"'
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always

# Jobs that run for merge requests and schedules for branch `release-2020`,
# but not when GROMACS_RELEASE is set.
# Excludes non-gromacs projects.
.rules:merge-requests:release-2020:
rules:
- if: '$CI_PROJECT_NAMESPACE != "gromacs"'
when: never
- if: '$GROMACS_RELEASE'
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
when: always
# This next rule catches "push" and other events in branches other than `release-2020`
# but allows merge_request_events for merge requests targeting `release-2020`.
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "release-2020" && $CI_COMMIT_REF_NAME != "release-2020"'
when: never
- if: '$CI_PIPELINE_SOURCE == "schedule"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always

# Rule to run a job only in nightly release-preparation pipelines.
# Checks if the GROMACS_RELEASE variable was set (typically through the GitLab web interface).
# Excludes merge_requests and non-gromacs projects.
# TODO: Update to *rules* syntax.
.rules:nightly-only-for-release:
rules:
- if: '$CI_PROJECT_NAMESPACE != "gromacs"'
when: never
- if: '$GROMACS_RELEASE && $CI_PIPELINE_SOURCE == "web"'
when: always
- if: '$GROMACS_RELEASE && $CI_PIPELINE_SOURCE == "schedule"'
when: always

# Jobs that run on schedules, but not for merge requests or when GROMACS_RELEASE
# is set. Excludes non-gromacs projects.
.rules:nightly-not-for-release:
rules:
- if: '$CI_PROJECT_NAMESPACE != "gromacs"'
when: never
- if: '$GROMACS_RELEASE'
when: never
- if: '$CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule"'
when: always

# Behavioral templates

# Use a persistent compiler cache to speed up rebuilds for a single job.
Expand Down
Loading

0 comments on commit 4b57905

Please sign in to comment.