mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-21 06:25:15 -04:00
197 lines
6.1 KiB
YAML
197 lines
6.1 KiB
YAML
include:
|
|
- remote: 'https://gitlab.com/cscs-ci/recipes/-/raw/master/templates/v2/.ci-ext.yml'
|
|
|
|
stages:
|
|
- deps
|
|
- cp2k
|
|
- test
|
|
- benchmark
|
|
|
|
variables:
|
|
REPOSITORY: cp2k_eiger
|
|
BUILDER: spack
|
|
VERSION: psmp
|
|
TAG: "${BUILDER}_${VERSION}"
|
|
UBUNTU_IMAGE_NAME: "ubuntu:26.04"
|
|
CSCS_IMAGE_NAME: "${CSCS_REGISTRY_PATH}/${REPOSITORY}:${TAG}_${CI_COMMIT_SHORT_SHA}"
|
|
DOCKERHUB_IMAGE_NAME: "docker.io/${DOCKERHUB_USERNAME}/${REPOSITORY}:${TAG}"
|
|
|
|
build deps eiger:
|
|
extends: .container-builder-cscs-zen2
|
|
stage: deps
|
|
timeout: 6h
|
|
before_script:
|
|
- DEPS_IMAGE_TAG=$(cat make_cp2k.sh ci/cscs_eiger_${TAG}.yaml ci/docker/build_deps_spack.Dockerfile $(find tools/spack -type f | sort) | sha256sum | head -c 16)
|
|
- export PERSIST_IMAGE_NAME=${CSCS_REGISTRY_PATH}/base/${REPOSITORY}:${TAG}_${DEPS_IMAGE_TAG}
|
|
- echo "DEPS_IMAGE_NAME=${PERSIST_IMAGE_NAME}" | tee build.env
|
|
artifacts:
|
|
reports:
|
|
dotenv: build.env
|
|
variables:
|
|
DOCKER_BUILD_ARGS: '[
|
|
"BASE_IMAGE",
|
|
"CP2K_VERSION",
|
|
"FEATURE_FLAGS",
|
|
"NUM_PROCS"
|
|
]'
|
|
DOCKERFILE: ci/docker/build_${CI_JOB_STAGE}_${BUILDER}.Dockerfile
|
|
BASE_IMAGE: ${UBUNTU_IMAGE_NAME}
|
|
CP2K_VERSION: ${VERSION}
|
|
FEATURE_FLAGS: "-ef openpmd -np 4"
|
|
NUM_PROCS: 64
|
|
KUBERNETES_CPU_REQUEST: 64
|
|
KUBERNETES_CPU_LIMIT: 64
|
|
KUBERNETES_MEMORY_REQUEST: 128Gi
|
|
KUBERNETES_MEMORY_LIMIT: 128Gi
|
|
|
|
build cp2k eiger:
|
|
extends: .container-builder-cscs-zen2
|
|
stage: cp2k
|
|
needs: ["build deps eiger"]
|
|
timeout: 6h
|
|
before_script:
|
|
- echo ${DOCKERHUB_TOKEN} | podman login docker.io --username ${DOCKERHUB_USERNAME} --password-stdin
|
|
after_script:
|
|
- podman images
|
|
- podman push ${PERSIST_IMAGE_NAME} ${DOCKERHUB_IMAGE_NAME}
|
|
variables:
|
|
DOCKER_BUILD_ARGS: '[
|
|
"BASE_IMAGE",
|
|
"DEPS_IMAGE",
|
|
"FEATURE_FLAGS",
|
|
"NUM_PROCS"
|
|
]'
|
|
DOCKERFILE: ci/docker/build_${CI_JOB_STAGE}_${BUILDER}.Dockerfile
|
|
BASE_IMAGE: ${UBUNTU_IMAGE_NAME}
|
|
DEPS_IMAGE: ${DEPS_IMAGE_NAME}
|
|
FEATURE_FLAGS: "-ef openpmd"
|
|
NUM_PROCS: 32
|
|
KUBERNETES_CPU_REQUEST: 32
|
|
KUBERNETES_CPU_LIMIT: 32
|
|
PERSIST_IMAGE_NAME: ${CSCS_IMAGE_NAME}
|
|
|
|
test cp2k eiger:
|
|
extends: .baremetal-runner-eiger-zen2
|
|
stage: test
|
|
needs: ["build cp2k eiger"]
|
|
timeout: 6h
|
|
script:
|
|
- podman run --shm-size=1g -v ${PWD}:/mnt ${DOCKERHUB_IMAGE_NAME} mpiexec -genv OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -n ${SLURM_NTASKS} cp2k /opt/cp2k/benchmarks/CI/H2O-32_md.inp
|
|
- podman run --shm-size=1g -v ${PWD}:/mnt ${DOCKERHUB_IMAGE_NAME} mpiexec -genv OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK} -n ${SLURM_NTASKS} cp2k /opt/cp2k/benchmarks/CI/H2O-32_md_elpa.inp
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_CPUS_PER_TASK: 4
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 1
|
|
SLURM_NTASKS: 8
|
|
SLURM_NTASKS_PER_NODE: 8
|
|
SLURM_TIMELIMIT: 15
|
|
USE_MPI: YES
|
|
|
|
regression test cp2k eiger:
|
|
extends: .baremetal-runner-eiger-zen2
|
|
stage: test
|
|
needs: ["build cp2k eiger","test cp2k eiger"]
|
|
timeout: 6h
|
|
script:
|
|
- git --no-pager log -1 --pretty="%nCommitSHA:%x20%H%nCommitTime:%x20%ci%nCommitAuthor:%x20%an%nCommitSubject:%x20%s%n"
|
|
- podman run --shm-size=1g -v ${PWD}:/mnt ${DOCKERHUB_IMAGE_NAME} /opt/cp2k/tests/do_regtest.py --cp2kdatadir /opt/cp2k/install/share/cp2k/data --maxtasks ${SLURM_NTASKS} --mpiexec "mpiexec -bind-to none" --keepalive /opt/cp2k/install/bin ${VERSION} 2>&1 || true
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 1
|
|
SLURM_NTASKS: 128
|
|
SLURM_TIMELIMIT: 60
|
|
USE_MPI: YES
|
|
|
|
benchmark cp2k 1 eiger node:
|
|
extends: .container-runner-eiger-zen2
|
|
stage: benchmark
|
|
needs: ["build cp2k eiger","test cp2k eiger","regression test cp2k eiger"]
|
|
timeout: 6h
|
|
image: ${CSCS_IMAGE_NAME}
|
|
before_script:
|
|
- export CP2K_DATA_DIR=/opt/cp2k/install/share/cp2k/data
|
|
script:
|
|
- cp2k.popt /opt/cp2k/benchmarks/CI/H2O-128_md.inp
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_CPUS_PER_TASK: 1
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 1
|
|
SLURM_MPI_TYPE: pmi2
|
|
SLURM_NTASKS: 128
|
|
SLURM_NTASKS_PER_NODE: 128
|
|
SLURM_TIMELIMIT: 30
|
|
USE_MPI: YES
|
|
|
|
benchmark cp2k 1 eiger node elpa:
|
|
extends: .container-runner-eiger-zen2
|
|
stage: benchmark
|
|
needs: ["build cp2k eiger","test cp2k eiger","regression test cp2k eiger","benchmark cp2k 1 eiger node"]
|
|
timeout: 6h
|
|
image: ${CSCS_IMAGE_NAME}
|
|
before_script:
|
|
- export CP2K_DATA_DIR=/opt/cp2k/install/share/cp2k/data
|
|
script:
|
|
- cp2k.popt /opt/cp2k/benchmarks/CI/H2O-128_md_elpa.inp
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_CPUS_PER_TASK: 1
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 1
|
|
SLURM_MPI_TYPE: pmi2
|
|
SLURM_NTASKS: 128
|
|
SLURM_NTASKS_PER_NODE: 128
|
|
SLURM_TIMELIMIT: 30
|
|
USE_MPI: YES
|
|
|
|
benchmark cp2k 2 eiger nodes:
|
|
extends: .container-runner-eiger-zen2
|
|
stage: benchmark
|
|
needs: ["build cp2k eiger","test cp2k eiger","regression test cp2k eiger"]
|
|
timeout: 6h
|
|
image: ${CSCS_IMAGE_NAME}
|
|
before_script:
|
|
- export CP2K_DATA_DIR=/opt/cp2k/install/share/cp2k/data
|
|
- export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
|
|
script:
|
|
- cp2k /opt/cp2k/benchmarks/CI/H2O-512_md.inp
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_CPUS_PER_TASK: 1
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 2
|
|
SLURM_MPI_TYPE: pmi2
|
|
SLURM_NTASKS: 256
|
|
SLURM_NTASKS_PER_NODE: 128
|
|
SLURM_TIMELIMIT: 30
|
|
USE_MPI: YES
|
|
|
|
benchmark cp2k 2 eiger nodes elpa:
|
|
extends: .container-runner-eiger-zen2
|
|
stage: benchmark
|
|
needs: ["build cp2k eiger","test cp2k eiger","regression test cp2k eiger","benchmark cp2k 2 eiger nodes"]
|
|
timeout: 6h
|
|
image: ${CSCS_IMAGE_NAME}
|
|
before_script:
|
|
- export CP2K_DATA_DIR=/opt/cp2k/install/share/cp2k/data
|
|
- export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
|
|
script:
|
|
- cp2k /opt/cp2k/benchmarks/CI/H2O-512_md_elpa.inp
|
|
variables:
|
|
SLURM_CONSTRAINT: mc
|
|
SLURM_CPUS_PER_TASK: 1
|
|
SLURM_DEBUG: 1
|
|
SLURM_HINT: nomultithread
|
|
SLURM_JOB_NUM_NODES: 2
|
|
SLURM_MPI_TYPE: pmi2
|
|
SLURM_NTASKS: 256
|
|
SLURM_NTASKS_PER_NODE: 128
|
|
SLURM_TIMELIMIT: 30
|
|
USE_MPI: YES
|