diff --git a/CI/hortense_EESSI_ss/ci_config.sh b/CI/hortense_EESSI_ss/ci_config.sh new file mode 100644 index 00000000..ac35ffef --- /dev/null +++ b/CI/hortense_EESSI_ss/ci_config.sh @@ -0,0 +1,17 @@ +# Configurable items +if [ -z "${REFRAME_ARGS}" ]; then + REFRAME_ARGS="--tag CI --tag 1_node|2_nodes --system hortense:cpu_rome_256gb" +fi + +if [ -z "${UNSET_MODULEPATH}" ]; then + export UNSET_MODULEPATH=False + module --force purge +fi + +if [ -z "${USE_EESSI_SOFTWARE_STACK}" ]; then + export USE_EESSI_SOFTWARE_STACK=True +fi + +if [ -z "${RFM_CONFIG_FILES}" ]; then + export RFM_CONFIG_FILES="/dodrio/scratch/users/vsc46128/vsc_hortense.py" +fi diff --git a/CI/hortense_local_ss/ci_config.sh b/CI/hortense_local_ss/ci_config.sh new file mode 100644 index 00000000..569bc486 --- /dev/null +++ b/CI/hortense_local_ss/ci_config.sh @@ -0,0 +1,16 @@ +# Configurable items +if [ -z "${REFRAME_ARGS}" ]; then + REFRAME_ARGS="--tag CI --tag 1_node|2_nodes --system hortense:cpu_rome_256gb" +fi + +if [ -z "${UNSET_MODULEPATH}" ]; then + export UNSET_MODULEPATH=False +fi + +if [ -z "${USE_EESSI_SOFTWARE_STACK}" ]; then + export USE_EESSI_SOFTWARE_STACK=False +fi + +if [ -z "${RFM_CONFIG_FILES}" ]; then + export RFM_CONFIG_FILES="/dodrio/scratch/users/vsc46128/vsc_hortense.py" +fi diff --git a/CI/run_reframe.sh b/CI/run_reframe.sh index eda506f0..77937f4f 100755 --- a/CI/run_reframe.sh +++ b/CI/run_reframe.sh @@ -50,11 +50,14 @@ fi if [ -z "${EESSI_TESTSUITE_BRANCH}" ]; then EESSI_TESTSUITE_BRANCH='v0.4.0' fi -if [ -z "${EESSI_CVMFS_REPO}" ]; then - export EESSI_CVMFS_REPO=/cvmfs/software.eessi.io -fi -if [ -z "${EESSI_VERSION}" ]; then - export EESSI_VERSION=2023.06 +if [ -z "${USE_EESSI_SOFTWARE_STACK}" ] | [ $USE_EESSI_SOFTWARE_STACK == "True" ]; then + export USE_EESSI_SOFTWARE_STACK=True + if [ -z "${EESSI_CVMFS_REPO}" ]; then + export EESSI_CVMFS_REPO=/cvmfs/software.eessi.io + fi + if [ -z "${EESSI_VERSION}" ]; then + export EESSI_VERSION=2023.06 + fi fi if [ -z "${RFM_CONFIG_FILES}" ]; then export RFM_CONFIG_FILES="${TEMPDIR}/test-suite/config/${EESSI_CI_SYSTEM_NAME}.py" @@ -73,6 +76,9 @@ if [ -z "${REFRAME_TIMEOUT}" ]; then # This will prevent multiple ReFrame runs from piling up and exceeding the quota on our Magic Castle clusters export REFRAME_TIMEOUT=1430m fi +if [ -z "${UNSET_MODULEPATH}" ]; then + export UNSET_MODULEPATH=True +fi # Create virtualenv for ReFrame using system python python3 -m venv "${TEMPDIR}"/reframe_venv @@ -93,9 +99,13 @@ git clone ${EESSI_CLONE_ARGS} export PYTHONPATH="${PYTHONPATH}":"${TEMPDIR}"/test-suite/ # Start the EESSI environment -unset MODULEPATH -eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash -source "${eessi_init_path}" +if [ $UNSET_MODULEPATH == "True" ]; then + unset MODULEPATH +fi +if [ $USE_EESSI_SOFTWARE_STACK == "True" ]; then + eessi_init_path="${EESSI_CVMFS_REPO}"/versions/"${EESSI_VERSION}"/init/bash + source "${eessi_init_path}" +fi # Needed in order to make sure the reframe from our TEMPDIR is first on the PATH, # prior to the one shipped with the 2021.12 compat layer diff --git a/config/vsc_hortense.py b/config/vsc_hortense.py index 1783e95e..3ad2c674 100644 --- a/config/vsc_hortense.py +++ b/config/vsc_hortense.py @@ -2,6 +2,7 @@ # https://docs.vscentrum.be/en/latest/gent/tier1_hortense.html # # authors: Samuel Moors (VUB-HPC), Kenneth Hoste (HPC-UGent) +import os from reframe.core.backends import register_launcher from reframe.core.launchers import JobLauncher @@ -21,6 +22,16 @@ def command(self, job): return ['mympirun', '--hybrid', str(job.num_tasks_per_node)] +eessi_cvmfs_repo = os.getenv('EESSI_CVMFS_REPO', None) +if eessi_cvmfs_repo is not None: + prepare_eessi_init = 'module --force purge' + launcher = 'mpirun' + mpi_module = '' +else: + prepare_eessi_init = '' + launcher = 'mympirun' + mpi_module = 'vsc-mympirun' + site_configuration = { 'systems': [ { @@ -32,13 +43,13 @@ def command(self, job): { 'name': 'cpu_rome_256gb', 'scheduler': 'slurm', - 'prepare_cmds': [common_eessi_init()], + 'prepare_cmds': [prepare_eessi_init, common_eessi_init()], 'access': hortense_access + ['--partition=cpu_rome'], 'environs': ['default'], 'descr': 'CPU nodes (AMD Rome, 256GiB RAM)', 'max_jobs': 20, - 'launcher': 'mympirun', - 'modules': ['vsc-mympirun'], + 'launcher': launcher, + 'modules': [mpi_module], 'processor': { 'num_cpus': 128, 'num_sockets': 2, @@ -64,13 +75,13 @@ def command(self, job): { 'name': 'cpu_rome_512gb', 'scheduler': 'slurm', - 'prepare_cmds': [common_eessi_init()], + 'prepare_cmds': [prepare_eessi_init, common_eessi_init()], 'access': hortense_access + ['--partition=cpu_rome_512'], 'environs': ['default'], 'descr': 'CPU nodes (AMD Rome, 512GiB RAM)', 'max_jobs': 20, - 'launcher': 'mympirun', - 'modules': ['vsc-mympirun'], + 'launcher': launcher, + 'modules': [mpi_module], 'processor': { 'num_cpus': 128, 'num_sockets': 2, @@ -96,13 +107,13 @@ def command(self, job): { 'name': 'cpu_milan', 'scheduler': 'slurm', - 'prepare_cmds': [common_eessi_init()], + 'prepare_cmds': [prepare_eessi_init, common_eessi_init()], 'access': hortense_access + ['--partition=cpu_milan'], 'environs': ['default'], 'descr': 'CPU nodes (AMD Milan, 256GiB RAM)', 'max_jobs': 20, - 'launcher': 'mympirun', - 'modules': ['vsc-mympirun'], + 'launcher': launcher, + 'modules': [mpi_module], 'processor': { 'num_cpus': 128, 'num_sockets': 2, @@ -128,13 +139,13 @@ def command(self, job): { 'name': 'gpu_rome_a100_40gb', 'scheduler': 'slurm', - 'prepare_cmds': [common_eessi_init()], + 'prepare_cmds': [prepare_eessi_init, common_eessi_init()], 'access': hortense_access + ['--partition=gpu_rome_a100_40'], 'environs': ['default'], 'descr': 'GPU nodes (A100 40GB)', 'max_jobs': 20, - 'launcher': 'mympirun', - 'modules': ['vsc-mympirun'], + 'launcher': launcher, + 'modules': [mpi_module], 'processor': { 'num_cpus': 48, 'num_sockets': 2, @@ -172,13 +183,13 @@ def command(self, job): { 'name': 'gpu_rome_a100_80gb', 'scheduler': 'slurm', - 'prepare_cmds': [common_eessi_init()], + 'prepare_cmds': [prepare_eessi_init, common_eessi_init()], 'access': hortense_access + ['--partition=gpu_rome_a100_80'], 'environs': ['default'], 'descr': 'GPU nodes (A100 80GB)', 'max_jobs': 20, - 'launcher': 'mympirun', - 'modules': ['vsc-mympirun'], + 'launcher': launcher, + 'modules': [mpi_module], 'processor': { 'num_cpus': 48, 'num_sockets': 2,